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

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Создан сайт, как оказалось на старом домене.
При переходе со страниц из старого индекса, да и вообще просто
набирая адрес в любой комбинации http://site.ru/lkdnvdlfknbldfkn.php или http://site.ru/11111.php
всегда открывается главная страница, а не 404.
Включен стандартный SEF...
Как решить?
« Последнее редактирование: 09.06.2013, 01:17:09 от romagromov »
*

Harper

  • Захожу иногда
  • 82
  • 4 / 0
Можно топорно сделать, просто в htaccess прописать путь к 404 странице.
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
А какой компонент у вас на главной?
Создание сайтов, шаблонов, помощь в решении проблем.
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Включить плагин System - Redirect
Либо, если не устраивает что он пишет в базу кучу ссылок, поставить свой системный плагин для обработки handleError()
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Включить плагин System - Redirect
Либо, если не устраивает что он пишет в базу кучу ссылок, поставить свой системный плагин для обработки handleError()

Я так понимаю речь о плагине "Система - Перенаправление" - он включен.
Причем, заметил на некоторых моих сайтах 404 срабатывает, на некоторых нет. Везде плагин включен.

А какой компонент у вас на главной?

Интересный вопрос.
Если стоит jdownloads - выше описанная проблема
Если стоит com_content - 404 срабатывает
Если стоит jcomments - выше описанная проблема
Если стоит com_weblinks - пишет ссылка не найдена

Короче, нет единого действия на несуществующую страницу...

И к сожалению на еще одном сайте, где главная страница JomSocial - тоже такая же проблема...

Насчет
Цитировать
просто в htaccess прописать путь к 404 странице
- думаю должен же быть
нативный джумловский метод решения проблемы.
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Так, из области догадок...
Попробуйте создать дочерний пункт меню для главной. Уйдёт ли проблема?
Создание сайтов, шаблонов, помощь в решении проблем.
*

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Цитировать
думаю должен же быть
нативный джумловский метод решения проблемы.
Цитировать
Если стоит com_content - 404 срабатывает
Вот вам и нативный метод :)
Создание сайтов, шаблонов, помощь в решении проблем.
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Насчет  - думаю должен же быть
нативный джумловский метод решения проблемы.

Вот он и есть нативный - через handleError()
Просто не все расширения выбрасывают 404 ошибку в таких случаях, вместо этого перенаправляется на какой-то дефолтный view
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Так что делать? Ставить для главной com_content или ковырять htaccess?
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Такая же проблема, только выкидывает не на главную а на материалы определенного раздела. Как лечить?
На Joomla 2.5 и на Joomla 3 тоже.
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Цитировать
Вот он и есть нативный - через handleError()
Просто не все расширения выбрасывают 404 ошибку в таких случаях, вместо этого перенаправляется на какой-то дефолтный view

Ну что-то не догоняю, честно говоря...
Создал файл с ошибкой в корне.
В htaccess добавил директиву ErrorDocument 404 /404.php
Ноль на массу, не реагирует.

Как должна выглядеть конструкция?
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
Ну а как он будет реагировать?
Если конкретный компонент не выбрасывает ошибку - соответственно она и не будет обрабатываться.
*

romagromov

  • Давно я тут
  • 692
  • 9 / 3
Ну а как он будет реагировать?
Если конкретный компонент не выбрасывает ошибку - соответственно она и не будет обрабатываться.

Ну я догадывался о таком развитии...
Выходит, пока компонент не будет отдавать ошибку, проблема не решается.
И еще получается, что если любой компонент, который не отдает 404 ошибку стоит, как главная страница, на таком сайте 404 ошибка
обрабатываться не будет, верно?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Кнопка “Добавить в корзину” VirtueMart не работает на главной странице сайта

Автор max_max

Ответов: 0
Просмотров: 7255
Последний ответ 20.04.2021, 12:40:37
от max_max
Ошибка в слове на главной странице. Как исправить?

Автор nqui

Ответов: 3
Просмотров: 3206
Последний ответ 29.03.2018, 05:15:41
от TkGhoul
Не отображается баннер на Joomla 2.5

Автор MultiMatrix83

Ответов: 4
Просмотров: 1579
Последний ответ 27.12.2017, 09:45:05
от lexxbry
Вопрос по настройке новостной ленты на главной странице сайта

Автор sect

Ответов: 0
Просмотров: 1146
Последний ответ 18.09.2017, 02:52:01
от sect
Не корректно отображается буква "Ы"?!

Автор raynor77

Ответов: 3
Просмотров: 2121
Последний ответ 27.05.2016, 14:58:17
от raynor77