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

Rebarun

  • Захожу иногда
  • 249
  • 1 / 2
Оформление заказа
« : 11.07.2020, 20:57:59 »
При оформлении заказа, на первой же странице присутствует вопрос об адресе доставки (в низу страницы)
Это не совсем логично т к если клиент выберет самовывоз например, вопрос о доставке неуместен.
Возможно ли перенести этот вопрос на страницу когда клиент выберет форму доставки?
Тестовый сайт
https://www.vitus-co.ru/
*

nevigen

  • Moderator
  • 10447
  • 863 / 25
  • http://n*****n.com
Re: Оформление заказа
« Ответ #1 : 12.07.2020, 00:36:11 »
не уверен что можно сделать на пошаговом
но на этом сделать можно. на уровне плагинов доставки.
не настройками конечно. надо будет кодить, там все индивидуально делается. но возможно точно, уже делали.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Rebarun

  • Захожу иногда
  • 249
  • 1 / 2
Re: Оформление заказа
« Ответ #2 : 13.07.2020, 08:46:28 »
не уверен что можно сделать на пошаговом
но на этом сделать можно. на уровне плагинов доставки.
не настройками конечно. надо будет кодить, там все индивидуально делается. но возможно точно, уже делали.

Не совсем понятно как это будет работать на уровне плагинов доставки.
И собстенно сам модуль не дешевый и далее предполагаете еще дополнительное кодирование.... как то не айс
Странно конечно что этот вопрос не поднимался тк явно в сандартном решении немного не логичное представление
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Оформление заказа
« Ответ #3 : 13.07.2020, 08:56:53 »
Посмотрел ваш тестовый сайт. Там вроде как вводится "Адрес счета", видимо рассчитано на безнал. А если адрес доставки отличается - то можно ввести другой. При этом поля адреса необязательные. Можно добавить выделенную строку текста под/над полями адреса "Заполнение необязательно для самовывоза". Еще можно на этапе ввода адреса добавить чекбокс "Самовывоз", который будет скрывать поля адреса и, например, на следующем этапе по умолчанию ставить выбор на "Самовывоз". Изменения формы будут минимальны. Но все же допиливать.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

nevigen

  • Moderator
  • 10447
  • 863 / 25
  • http://n*****n.com
Re: Оформление заказа
« Ответ #4 : 13.07.2020, 09:21:10 »
Не совсем понятно как это будет работать на уровне плагинов доставки.
И собстенно сам модуль не дешевый и далее предполагаете еще дополнительное кодирование.... как то не айс
Странно конечно что этот вопрос не поднимался тк явно в сандартном решении немного не логичное представление

все логично в базовом решении.
есть адрес, есть оплата и есть доставка.
вопрос особеностей каждой доставки (как и оплаты) решает конкретные плагины доставок (оплат), а не сам компонент.
точно также можно сказать почему при воде адреса или города не выскакивают подсказки. тоже ведь логично.

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

так что айс или не айс, это ...
индивидуальные решения никогда не были дешевыми. если конечно не вы сами их делаете.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Rebarun

  • Захожу иногда
  • 249
  • 1 / 2
Re: Оформление заказа
« Ответ #5 : 13.07.2020, 09:30:51 »
Посмотрел ваш тестовый сайт. Там вроде как вводится "Адрес счета", видимо рассчитано на безнал. А если адрес доставки отличается - то можно ввести другой. При этом поля адреса необязательные. Можно добавить выделенную строку текста под/над полями адреса "Заполнение необязательно для самовывоза". Еще можно на этапе ввода адреса добавить чекбокс "Самовывоз", который будет скрывать поля адреса и, например, на следующем этапе по умолчанию ставить выбор на "Самовывоз". Изменения формы будут минимальны. Но все же допиливать.

Дело в том что необходимость указания другого адреса предлагается на самом первом этапе.
Вот это не логично. Сама информация о б адресе доставки.
Зачем вообще тут информация об адресе если клиенту нужен самовывоз.
Эта информация нужна только если клиент указал не самовывоз.
Что допиливать понятно.
Можете?


*

Rebarun

  • Захожу иногда
  • 249
  • 1 / 2
Re: Оформление заказа
« Ответ #6 : 13.07.2020, 09:39:55 »
все логично в базовом решении.
есть адрес, есть оплата и есть доставка.
Спасибо за ответ.
У нас с Вами разные понятия логичности.
Если это даже базовый элемент, не значит что надо вываливать все что в нем есть там где это не требуется.  (IMHO)
И я не расчитываю на дешевые решения, я ищу варианты решения.
А по поводу цены тут тоже могут быть такие варианты что караул.
Простите что не совсем в тему, но мне необходимо было написать некую программу.
Один специалист предложил за $300, другой на  $7 !
Выполнено  за $7 с  великолепным качеством и консультациями.
Так что то что все должно быть дорого смею не согласиться...
*

Rebarun

  • Захожу иногда
  • 249
  • 1 / 2
Re: Оформление заказа
« Ответ #7 : 13.07.2020, 09:49:36 »
Посмотрел ваш тестовый сайт. Там вроде как вводится "Адрес счета", видимо рассчитано на безнал. А если адрес доставки отличается - то можно ввести другой. При этом поля адреса необязательные. Можно добавить выделенную строку текста под/над полями адреса "Заполнение необязательно для самовывоза". Еще можно на этапе ввода адреса добавить чекбокс "Самовывоз", который будет скрывать поля адреса и, например, на следующем этапе по умолчанию ставить выбор на "Самовывоз". Изменения формы будут минимальны. Но все же допиливать.

Причем при данном раскладе (когда сразу стоит выбор адреса доставки) на последнем этапе опять неогичность.
Если клиент заказал самовывоз, после оформления заказа выводится информация :
---------------
Адрес счета: Игорь Завалишин, 5 Донской проезд д. 21, 119334 Москва
Адрес доставки: Игорь Завалишин, 5 Донской проезд д. 21, 119334 Москва
Вид доставки: Самовывоз
Вид платежа: Наличными. при получении
--------------
Причем тут адрес доставки, если клиент выбрал самовывоз?
Для nevigen это все логично как он сказал.
Для меня нелогично. Базовый вариант это все таки не помойка . Но это так разговор ни о чем :-)
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Re: Оформление заказа
« Ответ #8 : 13.07.2020, 09:57:26 »
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

nevigen

  • Moderator
  • 10447
  • 863 / 25
  • http://n*****n.com
Re: Оформление заказа
« Ответ #9 : 13.07.2020, 10:26:44 »
Но это так разговор ни о чем :-)
фточку... который и начинать не надо было....
здесь обсуждают компонент... готовый и существующий.
а сообщения формата "... почему до сих пор..." говорят о много, но не о достаточном уровне понимания.
спорить не о чем.
с таким же успехом можно обсудить молоток и недостатки которые изобретатель не учел.
испольнителя вы нашли потому остальное обсжудение излишне.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

Rebarun

  • Захожу иногда
  • 249
  • 1 / 2
Re: Оформление заказа
« Ответ #10 : 13.07.2020, 13:54:04 »
здесь обсуждают компонент... готовый и существующий.
Так я и обсуждал компонент готовый и существующий, который не совсем устраивает как работает.
Это Вы начали разговор о базавой версии, а я спрашивал о возможности решения.
Достаточно было ответа либо "невозможно" либо "в коммерческий отдел" и все...
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Стоимость заказа без стоимости доставки

Автор Alex_gs

Ответов: 3
Просмотров: 2360
Последний ответ 17.01.2023, 15:04:06
от kit2m2
Стоимость оплаты в зависимости от суммы заказа

Автор Aleksej Khoroshevskij

Ответов: 5
Просмотров: 964
Последний ответ 24.10.2019, 11:00:23
от nevigen
Минимальная сумма заказа для определенного вида доставки?

Автор grandrin

Ответов: 18
Просмотров: 5322
Последний ответ 07.09.2018, 12:04:11
от Raz0r
Проверьте время заказа после обновления до Joomla 3.7

Автор den13

Ответов: 0
Просмотров: 1013
Последний ответ 28.04.2017, 11:37:59
от den13
Смена статусов заказа автоматом

Автор goson

Ответов: 6
Просмотров: 1146
Последний ответ 18.05.2016, 21:40:54
от goson