Addon JoomShopping Custom Fields
Joomla 3 Joomla 4Аддон JoomShopping Custom Fields (дополнительные поля) — это аддон, который позволяет добавлять товарам неограниченное количество дополнительных полей разного типа.
В аддоне доступны такие типы полей как:
- input — обычное поле для ввода символов;
- number — поле ввода чисел с возможностью задания минимального и максимального значения, а также шаг изменения значения;
- tel — поле ввода номера телефона, введенное значение будет отображаться в виде ссылки с префиксом tel:;
- email — поле ввода адреса e-mail, введенное значение будет отображаться в виде ссылки с префиксом mailto:;
- link — поле ввода ссылки на вебресурс, введенное значение будет отображаться в виде ссылки, также возможно задать параметр target;
- textarea — обычная область ввода текста;
- editor — текстовый редактор Joomla с возможностью форматирования текста;
- radio — кнопки выбора с возможностью выбора одного значения;
- checkbox — флажки выбора с возможностью выбора нескольких значений;
- select — список выбора с возможностью выбора одного значения;
- combobox — список выбора с возможностью выбора нескольких значений;
- image — поле выбора изображения с возможностью добавления одного изображения;
- gallery — поле выбора набора изображений с возможностью добавления нескольких изображений и отображения их в виде галереи;
- youtube — поле видео с канала Youtube, в данное поле необходимо указывать только идентификатор видео, который будет преобразован в видеоплеер;
- calendar — поле выбора даты.
Помимо всего прочего, аддон JoomShopping Custom Fields имеет возможность создавать мультиязычные поля, что позволит заполнять данные отдельно для каждого языка сайта.
Аддон устанавливается из раздела «Компоненты» — «JoomShopping» — «Установка и обновление».
Поддержка версии аддона для Joomla 3 + JoomShopping 4 прекращена и в будущем будет удалена.
- Возможность создания неограниченного количества полей;
- Поддержка многоязычности сайта;
- Не требует правок ядра;
- Множество типов полей на все случаи;
- Нет необходимости ставить дополнительные аддоны типа «Второе поле короткого описания» или «Второе поле полного описания»;
- Возможность самостоятельно определять позиции для отображения полей;
- Отсутствуют копирайты и вшитые скрытые ссылки.
- Аддон абсолютно бесплатен, благодаря пожертвованиям пользователей, проявившим интерес к дополнению.
Модуль тестировался на следующих версиях компонентов и модулей:
- Joomla 4.3.4
- Joomla 4.2.9
- Joomla 3.9.15
- Joomla 3.9.27
- JoomShopping 5.1.2
- JoomShopping 4.18.5
- JoomShopping 4.18.6
0.1.2: (09.10.2023)
— Исправлена ошибка с типами полей radio, checkbox, select, combobox, из-за которой не сохранялось большое количество выбранных элементов
0.1.1: (24.03.2023)
— Поддержка Joomla 4 + JoomShopping 5;
— Исправлено отображение значений полей типа Checkbox и Radiobox в карточке товара в административной панели
0.0.7: (19.12.2021)
— Удалена привязка к домену и соответствующий зашифрованный код, теперь аддон распространяется бесплатно.
0.0.6: (23.06.2021)
— Внесено исправление для совместимости с JoomShopping 4.18.6;
— Внесено критическое исправление, из-за которого при сохранении настроек внутри других аддонов удалялись поля в аддоне Custom Fields;
— Устранена ошибка, возникающая при попытке установить аддон поверх установленного.
0.0.3: (15.02.2020)
— Добавлен набор различных типов полей для добавления;
— Исправлена работа мультиязычных полей.
0.0.1: (23.11.2019)
— Возможность создания полей вида input;
— Организован вывод поля в позиции на свое усмотрение;
— Добавлена мультиязычность полей.
- Добавление поля повторителя полей;
- Переработка окна создания полей.
В: Есть ли привязка к домену?
О: Нет. Аддон бесплатный и может устанавливаться на любое количество доменов.
В: Будет ли аддон работать с JoomShopping 3?
О: Нет.
В: Есть ли в планах разработка аддона для JoomShopping 3?
О: Нет.
В: Не получается установить аддон, что я делаю не так?
О: Аддон устанавливается из раздела «Компоненты» — «JoomShopping» — «Установка и обновление». Если и в этом случае не устанавливается, напишите о проблеме на почту info@blog-about.ru
В: Где находятся настройки аддона?
О: Настройки аддона доступны из раздела «Компоненты» — «JoomShopping» — «Опции» — «Расширения», справа от аддона «JoomShopping addon — Custom Fields» нажмите кнопку в поле «Конфигурация». После активации аддона в карточке товара появится вкладка «Custom Fields», где можно заполнить все созданные поля.
В: Будет ли работать аддон с кастомным шаблоном JoomShopping?
О: Работа аддона с кастомизированным шаблоном JoomShopping не гарантируется. Всё зависит от степени его кастомизации.
В: Аддон установился нормально, настройки произведены, но результата никакого, где проблема?
О: Если у Вас переопределен шаблон JoomShopping в Вашем шаблоне Joomla, то откройте файл /templates/ВАШШАБЛОН/html/com_jshopping/list_products/product.php Если у Вас стандартный шаблон JoomShooping или он переопределен согласно рекоммендациям JoomShopping, то откройте файл /components/com_jshopping/templates/ВАШШАБЛОН/list_products/product.php
В файле должны быть строки следующего вида:
— print $product->_tmp_product_html_start;
— print $product->_tmp_product_html_before_image;
— print $product->_tmp_product_html_body_image;
— print $product->_tmp_product_html_after_image;
— print $product->_tmp_product_html_before_image_thumb;
— print $product->_tmp_product_html_after_image_thumb;
— print $product->_tmp_product_html_after_video;
и т.п., в противном случае аддон срабатывать не будет.
В: Как задать параметры для ссылки или числового поля?
О: Достаточно в поле «Значения» перечислить параметры (каждый параметр с новой строки), например min=»20″ или target=»_blank».
- Для работы модуля необходима версия PHP не ниже 5.6;
Чтобы вывести значение кастомного поля на в карточке товара на странице категории, нужно в шаблоне list_products/product.php (в начале файла) добавить следующее:
$hover_photo = JFactory::getDbo()->setQuery("SELECT `ba_custom_field_1` FROM `#__jshopping_custom_fields_values` WHERE `id_product` = $product->product_id")->loadResult();
Затем в месте, где необходимо вывести данные из поля пишем:
<?php if ($hover_photo != null) { echo ''; } ?>
В моём случае я вывожу доп.изображение для товара. Вы же можете модифицировать данный код для себя.
Автору расширеня большое спасибо, и два вопроса: можно ли как-то более изящно решить данную задачу (без getDbo() запроса), и не планируется ли подобный плагин для категорий? Т.е. чтобы можно было именно категориям добавлять дополнительные поля?
Пример: для поля указали позицию в списке "после изображения". Это позиция _tmp_var_bottom_foto и если открыть файл /list_products/product.php шаблона JoomShopping то можно найти эту позицию. По необходимости её можно передвинуть выше/ниже в пределах самого товара, как будет удобнее.
Если же Вы планируете выводить поле за рамками конкретного товара, тогда тут без getDbo не обойтись.
P.S.: Нет, для категорий не планируется такого дополнения.
Скажите пожалуйста, как можно вывести данные из кастомного поля вашего плагина на странице категории товаров? Т.е. в шаблоне list_products/product.php
Заранее спасибо!
В настройках аддона, когда создаете поля, там есть выбор позиции в карточке товара и в списке, выберите нужные позиции для отображения http://joxi.ru/xAeB96yTPP8egr
Пример есть в демо на странице https://blog-about.ru/demo/magazin/odezhda/futbolki.html (последний товар)
Если всё равно не выводится, то вполне возможно у Вас переопределен шаблон и в нём могут быть удалены стандартные позиции вывода для аддонов.
2. Возможно ли сделать переопределение шаблона вывода полей?
1. Пока, к сожалению, катастрофически не хватает времени вернуться к доработкам аддона, потому ничего не могу обещать
2. Именно переопределение нет, всё зашито в плагине. Максимум можете только отредактировать в файле /plugins/jshoppingproducts/ba_custom_fields/ba_custom_fields.php формат отображения в методе generate_html_field
Он и не должен выводить, т.к. обработку плагинов нужно включать отдельно, да и в аддоне это в принципе не реализовано.
Остается только ждать обновления. Либо, если у Вас Joomla 4 и если есть доступ к FTP, то откройте файл ba_custom_fields.php в каталоге /plugins/jshoppingproducts/ba_custom_fields/ (главное, сперва сделайте копию файла на всякий случай)
В этом файле в самом начале сразу после строки:
defined('_JEXEC') or die('Restricted access');
Добавьте строку:
use Joomla\CMS\HTML\HTMLHelper;
Ниже в этом же файле, примерно в 165-ой строке найдите строку (там еще должно быть подписано case 'editor'):
$html .= '<div class="field_content">' . $value . '</div>';
И замените на следующую строку:
$html .= '<div class="field_content">' . HTMLHelper::_('content.prepare', $value) . '</div>';
1. Опция, которая позволяла бы выводить поле только в товарах, которых нет в наличии.
2. Вывод поля в произвольном месте.
Заранее спасибо!
2-ой пункт в принципе не осуществимо, т.к. аддон выводит поля только в специальных позициях, которые предоставляются самим шаблоном JoomShopping.
Как вариант, Вы можете выбрать какую-нибудь ненужную Вам позицию, например "после видео", сохраните в нее поля. После этого отредактируйте файл product_default.php в каталоге /components/com_jshopping/templates/ВАШ_ШАБЛОН/product/
В этом файле найдите строку <?php print $this->_tmp_product_html_after_video;?> (если например "после видео", если другую позицию выбрали, то соответственно искать придется другую строку, но принцип тот же), вырежите ее и вставьте в любое интересующее Вас место в этом же файле
1-ый пункт, можете попробовать аналогичным образом, выберите какую-нибудь позицию, например "перед файлами демо", в том же файле найдите <?php print $this->_tmp_product_html_before_demofiles; ?>, перенесите в нужное место и оберните в условие
<?php if (!$this->config->hide_text_product_not_available){ ?>
<?php print $this->_tmp_product_html_before_demofiles; ?>
<?php }?>
Насчет самого условия не помню, нужно именно проверять, но вроде именно это должно определять, есть в наличии товар или нет
Подскажите пожалуйста,
Как вывести дополнительные поля в произвольном месте товара?
Например в index.php Вашего шаблона подключить owl, и проинициализировать согласно документации.
В качестве селектора использовать $('.custom_field .field_gallery').owlCarousel()
Для вывода в корзине и заказе не подразумевается. Для этого нужно дополнительно дорабатывать аддон.
Есть ли возможность добавить поле
----
Поле "Изображение до (медиа поле) - Изображение после (медиа поле)"
----
С возможностью сделать это поле повторяемым?!
Спасибо.
К сожалению нет. На данный момент "повторители" только в задумке.
Всем разработчикам, которым требуется описанный в статье функционал - рекомендую к покупке!