Загрузка картинок с фронтенд в CS-CART

229
02 июля 2022, 03:30

Собственно следующая проблема, надо расширить модуль отзывов (которые о сайте в целом, не отзывы о товарах), добавить пару полей и возможность ещё загрузить фото. Если в административной панели получилось реализовать с помощью вот этой инструкции: https://www.cs-cart.ru/docs/4.11.x/developer_guide/core/images_subsystem.html#id2 По крайней мере добавление отзыва, с обновлением данных тоже не всё гладко, картинка не обновляется в случае замены, но это уже другой вопрос, то на фронтенде по понятным причинам безопасности такой вариант не работает (в связи с отсутствием файла common/attach_images.tpl). На официальном форуме сказали использовать common/fileuploader.tpl он для фронтенда есть, но вот только пояснения никто не дал. Вообще не могу понять, как через него можно в image_pair создаваемого объекта добавить изображение. Может кто сталкивался со схожей задачей?!

Answer 1

В общем путем проб и ошибок, а так же подсказкам на официальном форуме CS-CART решение нашёл. Делается так:

  1. Создаём модуль.
  2. Содержимое init.php
<?php
if (!defined('BOOTSTRAP')) { die('Access denied'); }
fn_register_hooks(
    'add_discussion_post_post'
);
  1. Содержимое func.php
<?php
if (!defined('BOOTSTRAP')) { die('Access denied'); }
function fn_<название вашего модуля>_add_discussion_post_post(&$post_data, $send_notifications) {
    fn_attach_image_pairs('discussion_image', 'discussion', $post_data['post_id']);
}
  1. В файле design/themes/<название вашей темы>/templates/addons/discussion/views/discussion/components/new_post.tpl (в случае если посадка на основе именно темы, а не посадка через модуль модификации темы. При модуле модификации используем хуки для расширения темы) добавляем строку в нужном месте формы (где надо отобразить загрузку файла)
{include file="design/backend/templates/common/attach_images.tpl" image_name="discussion_image" image_object_type="discussion" image_object_id=$obj_id image_pair=$obj.main_pair image_type="M" no_detailed=true hide_titles=true hide_alt=true}
  1. В файле design/themes/<название вашей темы>/templates/addons/discussion/views/discussion/components/new_post.tpl в теге form добавляем аттрибут enctype="multipart/form-data"
Answer 2

Есть модулек которые это делает - https://forum.cs-cart.ru/t/modul-ot-retailfactory-ru-otzyvy-s-fotografiyami-i-lajkami/11093 Вообще в целом, хук на фронте, который выводит поле для выбора фоток, в форме отзывов. И второй хук, который при сохранении отзыва дергается, в нем сохраняет правильно фотки, в поля в бд, которые ваш модуль, в своей схеме должен создавать. В доках описано всё это. Можно искать похожие модули, и смотреть как и что они делают, и разбираться. Искать модули, можно бесплатные, которые расширяют отзывы, и по аналогии искать нужные хуки в модуле discusion - "hook"

READ ALSO
isset не работает

isset не работает

не выполняется условие с issetстатус с браузере 200, и все данные передаются

181
Генерация POST запроса с php curl в JSON формате

Генерация POST запроса с php curl в JSON формате

пытаюсь получить токен для api digiseller https://mydigiseller

187
modx ошибка 500 при открытии сайта

modx ошибка 500 при открытии сайта

Всех приветствую, при открытии сайта появляется белый экран и ошибка HTTP ERROR 500При этом админ панель открывается нормально

205
Laravel checkbox old

Laravel checkbox old

уважаемые знатоки))

214