Новости Joomla

Свои типы полей в Joomla.

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note" name="your_note_for_user" label="Заголовок примечания" title="Альтернативный способ для заголовка" description="Текст примечания" class="col-12 alert alert-info" heading="h1" close="true" />

heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён. Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле

<field type="systempluginstatus" name="systempluginstatus" addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>

-

type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:

<?php // namespace для атрибута addfieldprefix namespace Joomla\Module\Wtquicklinks\Site\Fields; // нельзя напрямую обращаться к этому файлу defined('_JEXEC') or die; // подключаем родительский класс для переопределения use Joomla\CMS\Form\Field\NoteField; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; // имя класса и имя файла точь-в-точь class SystempluginstatusField extends NoteField { protected $type = 'Systempluginstatus'; protected function getLabel() { // если плагин не включён if(PluginHelper::isEnabled('system','wtquicklinks')) { // меняем свойства родительского класса $this->class = 'alert alert-danger w-100'; $this->element['label'] = '⚠️ А-а-а-а!'; $this->element['description'] = 'Плагин не включён!!'; // и просто рендерим его с нашими свойствами return parent::getLabel(); } // А иначе всё хорошо, скрываем поле из виду. $this->parentclass = 'd-none'; return ''; } }

Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает. @webtolkru#joomla #php #webdev #разработка

0 Пользователей и 1 Гость просматривают эту тему.
  • 58 Ответов
  • 11089 Просмотров
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Плагин написан по мотивам тем на форуме.

Если кому интересен плагин пишите в теме, будем дорабатывать.

Все что Вам нужно, это установить его как обычный плагин Joomla, включить и настроить его...

Плагин не вносит изменение в код шаблона, поэтому Вы смело можете обновлять компонент JoomShoping - ничего у Вас не слетит!

При помощи плагина Вы сможете:
  • Вывести сообщение: При положительных остатках на складе - "Товар на складе", а при нулевых остатках - "Товар под заказ".
  • Изменить цвет текста каждого сообщения ("Товар на складе" и "Товар под заказ").
  • Указать свой текст для каждого сообщения ("Товар на складе" и "Товар под заказ").
  • Показать информационный блок, либо в списке товаров, либо на странице товара, либо везде.

Текущая версия плагина: 1.3

Тестировался на Joomla 3.4.8 - 3.7+ и JoomShoping 4.12+ - 4.16+

Скрин настроек плагина:

Спойлер
[свернуть]

Скрины демо работы плагина:

Спойлер
[свернуть]

Текущая версия плагина: Скачать: plg_jshopping_available_onorder

История версий расширения:
05.10.2019 : v1.3 - Оптимизирован код плагина. Добавлено пояснение для работы с мультиязычными сайтами.
10.08.2017 : v1.2.1 - Исправлена ошибка в коде плагина.
04.08.2017 : v1.2 - По просьбе пользователей расширен функционал. Добавлено: Показать информационный блок, либо в списке товаров, либо на странице товара, либо везде.
29.03.2016 : v1.1 - Переписан функционал плагина. Теперь плагин корректно работает с количеством указанным в атрибутах товара.
29.02.2016 : v1.0.

P.S. Принимаются комментарии, пожелания, замечания. Пожертвованиям на дальнейшее изучение PHP и JS тоже буду рад. В ближайших планах: Продолжать разрабатывать бесплатные расширения.
« Последнее редактирование: 05.10.2019, 09:34:57 от kit2m2 »
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

BYDDA

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Чего то не работает плагин?
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
У меня работает! Если хотите разобраться почему у Вас не работает, предоставьте минимальную инфу. Опишите проблему, приведите пример сайта, укажите ваши версии JoomShopping и Joomla.

А писать: "Чего то не работает плагин" - это не о чем, у других тоже наверняка работает, проблема у Вас.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

artful knave

  • Захожу иногда
  • 68
  • 8 / 0
получается, что в принципе клиент не может заказать товар, который "под заказ"? более того, его даже не видно, если включена опция "не отображать товары с нулевым остатком"?

хотелось бы самому задавать количество, при котором товар идет "под заказ": например, при нуле карточки скрыты от покупателя (товара в принципе нет и кто знает, будет ли), а при кол-ве = 1 карточки видны (магазин может достать этот товар).
ну или не на количестве основываясь, а как-то еще
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Заказать (сформировать заказ) можно и при нулевом количестве заказа. Нужно только в настройках указать "Минимальное количество единиц товара для возможности заказа = 0"
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
...хотелось бы самому задавать количество, при котором товар идет "под заказ": например, при нуле карточки скрыты от покупателя (товара в принципе нет и кто знает, будет ли), а при кол-ве = 1 карточки видны (магазин может достать этот товар).
ну или не на количестве основываясь, а как-то еще

А какой смысл делать товары под заказ, если они есть на складе?
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

artful knave

  • Захожу иногда
  • 68
  • 8 / 0
Заказать (сформировать заказ) можно и при нулевом количестве заказа. Нужно только в настройках указать "Минимальное количество единиц товара для возможности заказа = 0"
так вот в этом-то и проблема... не всегда хочется, чтоб какой-то товар могли заказать - снят с производства/больше нет у поставщика.
по сути "под заказ" - это третий вид "наличия товаров" - товар есть на удаленном/складе поставщика (да и вообще непонятно, сможет ли магазин его достать). Пример: http://www.220-volt.ru/catalog/vesi-kuhonnie/

На одной старенькой cms это было реализовано как статусы товара (вместо ограниченно/неограниченно, что-то типа -1 - резерв, 0 - нет в наличии, 1 - под заказ, 2 - доступно к покупке и т.п.)
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Тогда нужно писать уже не плагин а аддон и с немного другим функционалом.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

BYDDA

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
У меня работает! Если хотите разобраться почему у Вас не работает, предоставьте минимальную инфу. Опишите проблему, приведите пример сайта, укажите ваши версии JoomShopping и Joomla.

А писать: "Чего то не работает плагин" - это не о чем, у других тоже наверняка работает, проблема у Вас.

сайт flyrus.ru
Joomla! 3.4.8 Stable
Jooshopping 4.11.3
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
сайт flyrus.ru
Joomla! 3.4.8 Stable
Jooshopping 4.11.3

Поставьте галочку в настройках JoomShopping Товар -> Список товаров -> Количество на складе и Товар -> Товар -> Количество на складе
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

BYDDA

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Поставьте галочку в настройках JoomShopping Товар -> Список товаров -> Количество на складе и Товар -> Товар -> Количество на складе

Появилось, а надпись нет в наличии всё равно будет?
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Во-первых: отключите её там же в настройках JoomShopping Товар -> Список товаров / Товар -> Скрыть текст "Товар не доступен"

Во-вторых: Переименуйте Языковую константу _JSHOP_QTY_IN_STOCK, она у Вас = "Количество на складе". Можно например на "Товар" или "Этот товар".
Переименовать можно при помощи этого
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

BYDDA

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
Во-первых: отключите её там же в настройках JoomShopping Товар -> Список товаров / Товар -> Скрыть текст "Товар не доступен"

Во-вторых: Переименуйте Языковую константу _JSHOP_QTY_IN_STOCK, она у Вас = "Количество на складе". Можно например на "Товар" или "Этот товар".
Переименовать можно при помощи этого
Спасибо, посмотрю.
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Спасибо, посмотрю.

Заметил на вашем сайте плагин не коректно работает с атрибутами товара.

Внимание всем кто использует мой плагин! С атрибутами плагин пока НЕ РАБОТАЕТ. При смене атрибута всё равно выдает количество (заданное в атрибуте товара), а не текст.

Если у кого есть мысли по этому поводу пишите, будем дорабатывать.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

InsideMe

  • Новичок
  • 5
  • 0 / 0
С атрибутами плагин пока НЕ РАБОТАЕТ. При смене атрибута всё равно выдает количество (заданное в атрибуте товара), а не текст.
Планируете как-то исправить эту ситуацию?
*

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
Внимание всем кто использует мой плагин! С атрибутами плагин пока НЕ РАБОТАЕТ. При смене атрибута всё равно выдает количество (заданное в атрибуте товара), а не текст.
Если у кого есть мысли по этому поводу пишите, будем дорабатывать.
Используйте ajaxComplete (http://api.jquery.com/ajaxcomplete/)
Код
jQuery(document).ajaxComplete(function(event, xhr, settings) {
         if (settings.url.indexOf('ajax_attrib_select_and_price')!== -1) {
               что-то делаем....
         }
 });
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Используйте ajaxComplete

или

Код
reloadAttribEvents.push(funcAfterChangeAttr);
function funcAfterChangeAttr(json){
    console.log(json);
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
или

Код
reloadAttribEvents.push(funcAfterChangeAttr);
function funcAfterChangeAttr(json){
    console.log(json);
}
т.е. добавляем значение функции funcAfterChangeAttr в переменную (массив) reloadAttribEvents ?
Эх! Плохо мы еще воспитываем нашу молодежь я знаю чистый js ...
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
та это не чистый js :) магии нет, просто массив reloadAttribEvents определен разработчиками ЖШ для расширения js плагинами при смене атрибутов :) после отработки AJAX запроса при смене атрибута все функции из этого массивы будут вызваны. своего рода слушатель события, только сбоку :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Brooksus

  • Давно я тут
  • 641
  • 169 / 0
  • Ща спою...
та это не чистый js :) магии нет, просто массив reloadAttribEvents определен разработчиками ЖШ для расширения js плагинами при смене атрибутов :) после отработки AJAX запроса при смене атрибута все функции из этого массивы будут вызваны. своего рода слушатель события, только сбоку :)
Ага вижу....
Или + или YM41001160794290, или WMR R189734255107, а лучше все сразу и много.
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Выложил новую версию плагина: Товар на складе или Товар под заказ для JoomShopping - 1.1

Спасибо Дмитрию (dmitry_stas) за подсказку.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

mazalmaz

  • Новичок
  • 6
  • 0 / 0
Здравствуйте. Срочно нужна Ваша помощь.
Работаю над проектом, заказчик хочет что бы статусы "в наличии", "под заказ", "нет в наличии" можно было добавлять не только к самому товару, но так же и к его атрибутам.

Возможно ли это реализовать? Сколько будет стоить?
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Здравствуйте. Плагин с версии 1.1 работает с атрибутами. Можете качать и работать... Если что не понятно, пишите!
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

mazalmaz

  • Новичок
  • 6
  • 0 / 0
Здравствуйте. Плагин с версии 1.1 работает с атрибутами. Можете качать и работать... Если что не понятно, пишите!

А как указать параметр "в наличии", "под заказ" конкретному атрибуту?
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Если кол-во = 0 - Под заказ
Если кол-во больше или = 1 - В наличии. Так работает плагин.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

mazalmaz

  • Новичок
  • 6
  • 0 / 0
Если кол-во = 0 - Под заказ
Если кол-во больше или = 1 - В наличии. Так работает плагин.

Странно, у меня почему то нет параметра "количество"

*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Какая версия JoomShopping?
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

mazalmaz

  • Новичок
  • 6
  • 0 / 0
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
У Вас либо склад не включен в настройках, либо в товаре - неограниченное количество.
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
*

kit2m2

  • Живу я здесь
  • 3345
  • 273 / 0
  • Беру сайты на полное сопровождение
Обновитесь. Актуально - JoomShopping 4.14.3
Расширения для JoomShopping | Ссылка на Телеграм-канал | Сайты и магазины под ключ: Дизайн, Верстка, Программирование (расширения на заказ), СЕО-оптимизация, Сопровождение, Перенос на Joomla 4+ (5+) и JoomShopping 5+
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Мы починили поиск для JoomShopping

Автор Dimidrol-Pruper

Ответов: 101
Просмотров: 33592
Последний ответ 24.06.2024, 14:20:58
от kit2m2
Плагин - Вывод значения поля из таблицы продуктов в корзине JoomShopping

Автор draff

Ответов: 3
Просмотров: 1911
Последний ответ 26.02.2024, 07:00:01
от kit2m2
[Решено] - Заказ на одной странице

Автор shurakana

Ответов: 58
Просмотров: 18460
Последний ответ 16.03.2023, 09:53:16
от kit2m2
[Решено] Комплект товаров JoomShopping - конструктор

Автор vgromov

Ответов: 96
Просмотров: 30415
Последний ответ 14.12.2022, 15:21:24
от kit2m2
Функционал сравнение товаров в JoomShopping

Автор falur

Ответов: 53
Просмотров: 15121
Последний ответ 22.08.2022, 09:54:16
от kit2m2