Новости 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 #разработка

Обновлена информация в Плане развития Joomla

👩‍💻 Обновлена информация в Плане развития Joomla.Здесь собрана информация о датах релизов, описаны принципы версионирования, указаны ответственные за релизы, а так же даты окончания поддержки релизов. Опираясь на эту информацию вы можете планировать развитие ваших интернет-проектов.👩‍💻 Что нового?⛔️ Joomla 4.Дата окончания исправления ошибок безопасности в версии 4.x - 14 октября 2025г. ⚠️ После этой даты Joomla 4 прекратит получать какие-либо обновления, в том числе безопасности - вообще. Рекомендуем обновить ваши сайты до актуальной Joomla 5.✅ Joomla 5.- Дата окончания исправления ошибок в версии 5.x - 13 октября 2026г.- Дата окончания исправления ошибок безопасности в версии 5.x - 12 октября 2027 года.- Текущая актуальная (на момент написания заметки) версия - 5.3.1.- Опубликовано расписание выхода релизов Joomla 5.4. Стабильный релиз ожидается 14 октября 2025 года.✅ Joomla 6.- Дата окончания исправления ошибок в версии 6.x - 17 октября 2028г.- Дата окончания исправления ошибок безопасности в версии 6.x - 16 октября 2029г.- Опубликовано расписание выхода релизов Joomla 6.0. Стабильный релиз ожидается 14 октября 2025 года.- Для разработчиков уже доступна Joomla 6.0.0-alpha1.✅ Joomla! Framework.Обновлена информация о Joomla! Framework - полноценном PHP-фреймворке для разработки. Он в версиях 1.х и 2.х был самостоятельным параллельным проектом, однако начиная с версии Joomla 4.0 стал её основой. Добавлена информация о Joomla! Framework 3.x, который вышел 6 октября 2023 года. Его можно использовать в тех случаях, когда вам в проекте не нужна CMS Joomla целиком.Подробнее на сайте Joomla-сообщества Joomlaportal.ru#joomla #community

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

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
loadposition в компоненте
« : 13.07.2017, 18:08:55 »
Народ всем привет, подскажите пожалуйста как вывести loadposition в компоненте. По всему сайту это работает а вот в 1-м компоненте нет - подскажите где копать. спасибо.
*

fsv

  • Живу я здесь
  • 2781
  • 410 / 2
Re: loadposition в компоненте
« Ответ #1 : 13.07.2017, 19:52:32 »
По всему сайту это работает а вот в 1-м компоненте нет
Смотрите, отрабатывают ли content-плагины в этом компоненте.
Примеры см. в работающих.
Веб-разработка: заказ. Только новая разработка.
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Re: loadposition в компоненте
« Ответ #2 : 13.07.2017, 22:47:44 »
Смотрите, отрабатывают ли content-плагины в этом компоненте.
Примеры см. в работающих.

Вот шаблон вывод материала в этом компоненте:
Цитировать
<?php if ($this->item->description) { ?>
                        <div class="hyphenate text spproperty-short-overview-text" lang="ru">
                            <?php echo $this->item->description; ?>
                        </div>
                    <?php } ?>

Как заставить работать com_content подскажите пожалуйста.

// No Direct Access
defined('_JEXEC') or die('Resticted Aceess');


$doc = JFactory::getDocument();
$doc->addScriptdeclaration('var spproperty_url="' . JURI::base(). 'index.php?option=com_spproperty";');

?>

Тут тема есть но почему то у меня не сработал ни один из способов - либо я делаю что то не так: http://joomlaforum.ru/index.php/topic,205578.0.html
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: loadposition в компоненте
« Ответ #3 : 13.07.2017, 23:01:52 »
Обработка событий плагинов делаеться во view или в model.
Ну а если надо в макете вывести позицию  (не посередине текста) то есть такая штука как нестандартный вывод модуля. По гуглите.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: loadposition в компоненте
« Ответ #4 : 13.07.2017, 23:57:40 »
Код: php
$position = 'my_position';
echo trim(JHTML::_('content.prepare', '{loadposition ' . $position . '}'));
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Re: loadposition в компоненте
« Ответ #5 : 14.07.2017, 01:59:25 »
Код: php
$position = 'my_position';
echo trim(JHTML::_('content.prepare', '{loadposition ' . $position . '}'));

Спасибо большое это сработало - теперь надо понять как мне выводить модули через сам компонент: Скажем если я в php прописываю код то у меня на всех страницах компонента выходит 1 и тот же модуль - можно ли сделать так что бы "$position = 'my_position';" как то работало непосредственно через редактор и я мог вывести любой модуль без дублирования везде? Подскажите пожалуйста. Или хотя бы что гуглить :(
Код
<?php if ($this->item->description) { ?>
                        <div class="hyphenate text spproperty-short-overview-text" lang="ru">
                            <?php echo $this->item->description; $position = 'my_position'; echo trim(JHTML::_('content.prepare', '{loadposition ' . $position . '}'));?>
                        </div>
                    <?php } ?>
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Re: loadposition в компоненте
« Ответ #6 : 14.07.2017, 11:17:27 »
Пришла мысль но не знаю как реализовать: Как вывести тут заданный диапозон чисел? $position = 'my_position[Диапозон чисел]'; Что бы каждому модулю я мог просто давать уникальное число?
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Re: loadposition в компоненте
« Ответ #7 : 14.07.2017, 11:27:41 »
что-то мне кажется что loadposition тут не надо)
посмотрите например это http://www.master-web.info/display-joomla-module-anywhere/

*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Re: loadposition в компоненте
« Ответ #8 : 14.07.2017, 11:50:27 »
Если вывести в переопределении макета то можно и так
Код
<?php
<?php
$modules = $doc->loadRenderer('modules');
if (!empty($modules->render('postion')))
{
echo $modules->render('postion', array('style' => 'xhtml'));
}
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Re: loadposition в компоненте
« Ответ #9 : 14.07.2017, 15:32:08 »
Народ а с этой функцией никак объединить нельзя? http://php.net/range
*

SuschnosT

  • Захожу иногда
  • 119
  • 1 / 2
Re: loadposition в компоненте
« Ответ #10 : 14.07.2017, 19:54:57 »
Народ всем спасибо - я нереальное днище( Напишу как все получилось: Взял код Алекса
Код
[?php echo $this->item->description; $position = 'my_position'; echo trim(JHTML::_('content.prepare', '{loadposition ' . $position . '}'));?>
И поменял вот на такой вид:
Код
<?php echo trim(JHTML::_('content.prepare', ' ' . $this->item->description . ''));?>
- все модули начали выводится как надо. Благодарю за помощь ребят!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шорткоды baforms в кастомном компоненте

Автор oxbeat

Ответов: 2
Просмотров: 732
Последний ответ 20.02.2024, 00:41:29
от oxbeat
[РЕШЕНО] Как переопределить $list_limit в компоненте тегов?

Автор effrit

Ответов: 21
Просмотров: 1314
Последний ответ 14.05.2021, 17:18:36
от effrit
Как в компоненте RsSeo обнулить счетчик просмотров статьи?

Автор web1

Ответов: 0
Просмотров: 518
Последний ответ 14.02.2021, 18:24:01
от web1
Где может быть функция сохранения в компоненте?

Автор Dram

Ответов: 15
Просмотров: 1169
Последний ответ 26.10.2020, 22:20:50
от Dram
Поиск в своем компоненте средствами Joomla

Автор sesil

Ответов: 3
Просмотров: 747
Последний ответ 12.07.2019, 09:01:51
от sivers