Новости 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 Ответов
  • 3306 Просмотров
*

Anik

  • Новичок
  • 9
  • 0 / 0
Всем привет. Сайт на Joomla 2.5. Пытаюсь установить виджет Яндекс партнерки.

Скрипт виджета установила через FTP в index.php в head как было указано в инструкции, пытаюсь разместить контейнер виджета в статьи - ничего не получается.
Что было сделано:
1. В редакторе статьи отключала редактор и вставляла код - мимо
2. Создала модуль HTML, вставляла этот модуль в статью - мимо
3. Создала модуль Flexi Custom Code, тоже вставляла - мимо

Я уже не знаю что делать. Буду благодарна за любые советы
*

sivers

  • Живу я здесь
  • 2578
  • 357 / 0
Если надо во все статьи - переопределите макет статьи и вставьте в него.
/templates/шаблон/html/com_content/article/default.php
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Anik

  • Новичок
  • 9
  • 0 / 0
Спасибо! Но мне надо просто в конкретную статью. Просто это партнерка, а не контекстная реклама, ну и в этой партнерке сначала выбираешь на ЯндексМаркете товар, и под него дают конкретный виджет с кодом, ну и этот виджет я хочу вставить в конкретную статью. Но не вставляется...
Я голову сломала.. что я не так делаю?
В этой же партнерке можно получить ссылки, вот ссылки пожалуйста - вставляются и попадаешь по ним на нужный товар, а виджет не вставить...

Скажите, я хоть правильно скрипт виджета устанавливаю в index.php моего шаблона? Или нет?
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
ну тут же не видно что и куда именно вы вставляете
индивидуальная помощь: @SetAlexx
*

Anik

  • Новичок
  • 9
  • 0 / 0
ну тут же не видно что и куда именно вы вставляете

Скрипт виджета установила в index.php через FTP в шаблон : public_html/templates/beez_20/index.php
Скрипт виджета:
<!-- Yandex.Market Widget -->
<script async src="https://aflt.market.yandex.ru/widget/script/api" type="text/javascript"></script>
<script type="text/javascript">
    (function (w) {
        function start() {
            w.removeEventListener("YaMarketAffiliateLoad", start);
            w.YaMarketAffiliate.createWidget({type:"offers",
   containerId:"marketWidget",
   fallback:true,
   params:{clid:2717043,
      searchInStock:false,
      searchCategoryIds:[10470548 ],
      themeId:3 } });
        }
        w.YaMarketAffiliate
            ? start()
            : w.addEventListener("YaMarketAffiliateLoad", start);
    })(window);
</script>
<!-- End Yandex.Market Widget -->

И теперь пытаюсь вставить контейнер виджета:
<div id="marketWidget"></div>

Пытаюсь вставить этот контейнер в конкретную статью всеми способами и все мимо
Способы:
1. Создала модуль HTML - вставляю в статью через плагин Вставить модуль - мимо
2. Создала модуль Flexy - вставляю в статью через плагин Вставить модуль - мимо
3. В статье отключила редактор и просто вставляю <div id="marketWidget"></div> - мимо
*

Anik

  • Новичок
  • 9
  • 0 / 0
Если предположить, что у меня браузер блокирует рекламу, то контекстную то рекламу на этом же сайте он не блокирует...
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
инкогнито зайдите
или ссылку на стаью дайте.
дивы редактор не должен блокировать
индивидуальная помощь: @SetAlexx
*

Anik

  • Новичок
  • 9
  • 0 / 0
инкогнито зайдите
или ссылку на стаью дайте.
дивы редактор не должен блокировать

Зашла. Ничего.  *ОХ-Х-Х*
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
значит не туда вставляете
провел тест все работает без проблем
http://joxi.ru/xAegZR9hVJ0eKm
индивидуальная помощь: @SetAlexx
*

Anik

  • Новичок
  • 9
  • 0 / 0
Но я все вставляла именно туда, куда писала в посте выше - скрипт в индекс, контейнер в статью
Мне посмотрели код статьи - все там есть, в контейнере появляются теги
*

Anik

  • Новичок
  • 9
  • 0 / 0
Мне почему то не отправить сюда ссылку на мою страницу - может это правила
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
через кнопку вставки ссылки
индивидуальная помощь: @SetAlexx
*

Anik

  • Новичок
  • 9
  • 0 / 0
Мне видимо не везет как-то глобально - раз пять пыталась отправить ссылку через кнопку ссылки - пишет ошибка, включите JavaScript, сообщение похоже на спам
Проверила браузер - JavaScript подключен, прописала этот форум, пытаюсь отправить  - тоже самое. Написала сюда в техподдержку...
Вообщем грустно..
*

marksetter

  • Завсегдатай
  • 1045
  • 40 / 0
телега в подписи
индивидуальная помощь: @SetAlexx
*

Anik

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

Проблема с логином на сайт через Iphone

Автор AdmiralSFF

Ответов: 4
Просмотров: 2344
Последний ответ 13.08.2022, 13:19:41
от AdmiralSFF
При включении плагина "Система - фильтр языка" сайт не открывается

Автор Aurika

Ответов: 4
Просмотров: 3961
Последний ответ 25.06.2022, 14:14:40
от ecolora
Не отображается рекомендательный виджет рекламной сети Яндекс

Автор MultiMatrix83

Ответов: 0
Просмотров: 1022
Последний ответ 25.12.2020, 19:09:09
от MultiMatrix83
Не встраивается видео с YouTube на сайт

Автор 62411

Ответов: 6
Просмотров: 1654
Последний ответ 02.08.2020, 09:07:22
от wishlight
"Ошибка 404 - Материал нее найден" как заходишь на сайт

Автор Lepby

Ответов: 17
Просмотров: 41006
Последний ответ 11.06.2020, 08:48:10
от sound