Новости 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 Гость просматривают эту тему.
  • 14 Ответов
  • 2982 Просмотров
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Ну хотя бы в течении 48 часов!
С уважением отношусь к работе Виктора и его команды единомышленников! Спасибо за компонент!
Но, есть моменты которые на первый взгляд просты,и вроде по определению должны присутствовать, но их НЕТ
Одним из таких необходимых улучшением компонента, на мой взгляд, это возможность оплаты заказа в течении n-ого количества времени (48 часов вполне).
Такая возможность позволит клиентам не прыгать со стула в штаны и бежать в банкомат чтобы пополнить карту, или просто, при оформлении заказа не опешить клиента, молниеносным переходом на страницу оплату (как правило,без денег на счету клиент забудет про заказ или оплатит в другом месте). Банально может забыть что хотел купить, если 2000 товаров, ведь Виктором оговаривалось, что все происходит за одну сессию.
ОГРОМНЫЙ + этого дополнения, то что в личном кабинете, в списке заказов, можно внедрить те самые статусы заказов, имеется ввиду проверка наличия товаров для магазинов, склад которого находится в другой стране. Клиент поставил заказ, в ожидание, менеджер обновил статус, "В Наличии" или одна позиция в наличии, другая отсутствует и далее клиент оплачивает то что имеется в наличии. Удобно, и лояльность клиентов можно повысить, не делая постоянно возврат средств, так как товара нет!
Надеюсь заметите и прислушаетесь!
С Уважением
« Последнее редактирование: 06.03.2012, 05:42:34 от StyleRocket »
*

Majestro

  • Захожу иногда
  • 170
  • 29 / 8
Поддерживаю!

1. Функция отложенной оплаты
2. Напоминание по email
3. Модуль логина с информацией "Посмотреть неоплаченные заказы"
4. Там же "оплатить заказ"

Было бы очень профессионально.
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Определенно точно, будет профессионально!
3.пункт очень нужен!
Так это было б на деле:
1.В личном кабинете, "Неоплаченные заказы"

2.Справа ссылка на оплатить и далее переход к списку способов оплаты и далее уже оплата.
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Может поддержим идею, и закинем Виктору!
Я думаю это существенно улучшить магазин.
*

evpadallas

  • Захожу иногда
  • 171
  • 42 / 1
Вот только Виктор скорее всего сделает очередной аддон и будет его продавать :)
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Вот только Виктор скорее всего сделает очередной аддон и будет его продавать :)
Ну хоть уж так, а что поделать. Мы зарабатываем на магазине, ребята зарабатывают тоже. Хотя такие вещи определенно должны быть бесплатными и входить в состав готового решения магазина!
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
victorantoniak, Вы не планируете сделать такую возможность?
оплата заказа в любое время, заказ добавлен, но не оплачен например, и можно зайти в личный кабинет, клиенту, увидеть "Неоплаченные заказы" и нажать на кнопочку оплатить и переход опять на step4
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Виктор, есть планы на эту реализацию...
Оставлять "Неоплаченные заказы" в списке заказов в личном кабинете для дальнейшей возможности оплатить, было бы не плохо!)
что скажете?
*

victorantoniak

  • Moderator
  • 1579
  • 185 / 2
  • JoomShopping Team
Сейчас не планируем.
Люди не могут настроять оплаты. А тут проблем добавится.

При неправильной настройке оплат - будет как неоплаченый - могут 2 раза оплатить...
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Сейчас не планируем.
Люди не могут настроять оплаты. А тут проблем добавится.

При неправильной настройке оплат - будет как неоплаченый - могут 2 раза оплатить...
Да но ведь можно например сделать кнопочку при формировании заказа, на этапе выбора оплат, "Оплатить потом" или "Сохранить заказ" в корзину для посл.оплаты..а уже из корзины, когда клиент созрел, кнопочку напротив заказа, сохраненного "Оплатить заказ" и далее возврат опять на выбор оплаты и далее далее далее...и вроде путаницы не будет с неопла.заказами у тех кто оплату не настроил
*

N.Nick

  • Захожу иногда
  • 233
  • 5 / 0
А в чём разница между добавить в список пожеланий, а потом оплатить?
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
А в чём разница между добавить в список пожеланий, а потом оплатить?
Нннндаа, во-первых не все, по сей день, знают как пользоваться Wishlist-ом, во-вторых клиент накидает товаров в вишлист, а потом захочет оплатить, но либо он отправит в корзину все вещи, так как галки поставить нет тут возможности, либо заново закидывать в корзину, подсматривая в список пожеланий.
А оформленный заказ, который будет отображаться с личном кабинете в моих заказах со статусом "НЕ оплачено" позволит клиенту положить, например, деньги на карту или qiwi вернутся к компу и произвести оплату...
*

N.Nick

  • Захожу иногда
  • 233
  • 5 / 0
Нннндаа, во-первых не все, по сей день, знают как пользоваться Wishlist-ом, во-вторых клиент накидает товаров в вишлист, а потом захочет оплатить, но либо он отправит в корзину все вещи, так как галки поставить нет тут возможности, либо заново закидывать в корзину, подсматривая в список пожеланий.
А оформленный заказ, который будет отображаться с личном кабинете в моих заказах со статусом "НЕ оплачено" позволит клиенту положить, например, деньги на карту или qiwi вернутся к компу и произвести оплату...
Понял тогда согласен действительно удобно.
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
... положить, например, деньги на карту или qiwi вернутся к компу и произвести оплату...

Ну Qiwi - не показательный пример ;)
Сама платёжная система даёт возможность выставить счёт, так что заказ вполне можно довести до логического завершения со статусом "Pending" и оплатить потом. Более того, можно вообще не переходить на сайт платёжной системы для этого.

А вот системы оплаты, допускающие только вариант немедленного перехода на сайт, действительно создают проблему.

Хотя кто вам мешает создать ещё один метод оплаты простого типа, обозвать его "Оплатить потом" и в описании для клиента написать, что он может оплатить потом и что заказ будет обработан в ручном режиме?
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Ну Qiwi - не показательный пример ;)
Сама платёжная система даёт возможность выставить счёт, так что заказ вполне можно довести до логического завершения со статусом "Pending" и оплатить потом. Более того, можно вообще не переходить на сайт платёжной системы для этого.

А вот системы оплаты, допускающие только вариант немедленного перехода на сайт, действительно создают проблему.

Хотя кто вам мешает создать ещё один метод оплаты простого типа, обозвать его "Оплатить потом" и в описании для клиента написать, что он может оплатить потом и что заказ будет обработан в ручном режиме?
А кто мешает разработчикам замечательного JS создать в личном кабинете кнопку продолжить оформление заказа или Оплатить, напротив сформированного заказа и только после перехода по кнопке Оплата - выходишь на финальный шаг оформления заказа, где ставишь галку подтвердить и переход на сайт Пл.Сис.
RBK и IM и RoboKassa не требуют моментального перехода для оплаты, этож вроде сайт посылает сигнал что клиент готов оплатить и перебрасывает на сайт Пл.С....так что когда клиент захочет оплатить Платеж.Сис все равно, поэтому и не помешало бы сделать такие замуты как Оплатить неоплаченный заказ.
Кстати могу дать сайтик один со своими пароля, можете попробовать провести заказ и поймете о чем я
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Поиск заказа по номеру телефона клиента

Автор Shiffer

Ответов: 19
Просмотров: 3134
Последний ответ 07.12.2021, 19:43:38
от anatol81n
Имеется ли решения дополнительного статуса заказа?

Автор dss

Ответов: 5
Просмотров: 1019
Последний ответ 17.08.2021, 09:14:35
от nevigen
Отправка сообщения админу в не зависимости от статуса заказа

Автор newalex

Ответов: 4
Просмотров: 703
Последний ответ 23.04.2021, 10:30:56
от newalex
Уведомления о смене статуса заказа

Автор anny_k

Ответов: 10
Просмотров: 1096
Последний ответ 04.12.2020, 21:01:24
от nevigen
Вытащить номер и сумму заказа на страницу "Спасибо за заказ"

Автор turbolamer

Ответов: 70
Просмотров: 13817
Последний ответ 01.11.2020, 23:02:54
от Kokshetau