Новости Joomla

Свои типы полей в 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 для атрибута addfieldprefixnamespace 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

Компания JetBrains рассказала о своей поддержке Joomla

Компания JetBrains рассказала о своей поддержке Joomla

JetBrains - один из мировых лидеров в разработке программного обеспечения для разработчиков. Её программные продукты - это IDE - профессиональные среды разработки, которые отличаются от простого блокнота/редактора с плагинами набором всевозможных инструментов для разработчиков, глубоким анализом кодовой базы, подсказками по ней и по языку программирования, отладкой ошибок и многим-многим другим. Одним из самых известных продуктов компании является IDE PHP Storm, который можно назвать отраслевым стандартом PHP-разработчика.

В статье How PhpStorm Helps Maintain PHP Open-Source Projects: Interviews and Real-World Examples в блоге компании описываются Open Source проекты, которым JetBrains оказывает поддержку (это могут быть бесплатные лицензии для разработчиков для некоммерческих проектов).

В список попали:

  • PHPUnit - фреймворк для unit-тестирования в PHP
  • Doctrine DBAL - библиотека для PHP, которая предоставляет лёгкий и гибкий слой для коммуникации с базой данных. Она поддерживает различные базы данных через единый и согласованный API.
  • CodeIgniter — популярный MVC-фреймворк для разработки на PHP
  • Joomla! - наша любимая CMS.

Эти названия (кроме "Joomla") чаще всего не слышат вебмастера и разработчики обычных сайтов и интернет-магазинов. Но эти названия хорошо знакомы PHP-разработчикам, которые создают сложные и высоконагруженные проекты и микросервисы. То, что Joomla оказалась в одном ряду с такими программными инструментами - делает ей честь.

🙏 За ссылку спасибо участнику нашего сообщества Ринату Кажетову (@rkazhet).

Подпишитесь на @joomlafeed

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

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Какая разница как назвать переменную, если она ранее не обозначена? ))
Правильное имя переменной позволяет разработчику понять, что содержит переменная
и не вней суть то
см. ->get('task') и ->get('option') это разные параметры
обычно в стандартных шаблонах эти переменные приведены в качестве примера

так в /joomla4/templates/cassiopeia/index.php
Код
// Detecting Active Variables
$option   = $app->input->getCmd('option', '');
$view     = $app->input->getCmd('view', '');
$layout   = $app->input->getCmd('layout', '');
$task     = $app->input->getCmd('task', '');
$itemid   = $app->input->getCmd('Itemid', '');
*

darkghost

  • Живу я здесь
  • 2212
  • 97 / 0
Теория - оно то хорошо, но ... срабатывает ошибка
Вариант
Код
<?php
 if(showPage(['option'=>'com_content'])):?>
    На всех страницах компонента com_content
<?php endif;?>
или же
Код
$option = JFactory::getApplication()->input->get('option');
if ($option === 'com_content') {
echo 'bla bla';
}
выдает
Код
Fatal error: Call to undefined function showPage() in ..../index.php on line ХХХ
Благодарю за подробности, но вот не срабатывает предложеное. Но задачку стоит усложнить, веть некие условия (так понимаю) необходимо объеденить. Схематически
Код
Условие: если главная и com_content
   бла...бла...бла
иначе = ничего не выводить
« Последнее редактирование: 08.02.2020, 00:51:23 от darkghost »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Цитировать
$menu = JFactory::getApplication()->getMenu();
$task = JFactory::getApplication()->input->get('task');

if ( ($menu->getActive() == $menu->getDefault()) && ($task == 'com_content')) {
// это главная страница и компонент контента
} else {
// а это нет
}
В чем проблема то прописать нужные условия
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
выдает
Код

Fatal error: Call to undefined function showPage() in ..../index.php on line ХХХ
пишет, что функция showPage не определена. (Она на первой странице топика)
Код
<?php
function showPage($x = []){
    return array_intersect_assoc($x,  $_REQUEST) === $x;
}
 if(showPage(['option'=>'com_content'])):?>
    На всех страницах компонента com_content
<?php endif;?>
*

darkghost

  • Живу я здесь
  • 2212
  • 97 / 0
Код
<?php
function showPage($x = []){
    return array_intersect_assoc($x,  $_REQUEST) === $x;
}
 if(showPage(['option'=>'com_content'])):?>
    На всех страницах компонента com_content
<?php endif;?>
срабатывает, на странице товара - есть ОГ ЖШ, а не Жуумлы. Спасибо!
Заметил, что в ЖШ на странице категории (где выводяться все товары категории) - не выводит ниодного ОГ. Его вовсе нету, но думаю - это не главное )))
 
*

Konstantin124

  • Захожу иногда
  • 59
  • 1 / 0
Здравствуйте!

Есть некий блок с php и HTML вставками, который мне нужно выводить на всех страницах сайта, кроме одной единственной. Эта страница привязана к меню с адресом
Код
index.php?option=com_contact&view=contact&id=2

Больше в этом меню никаких материалов нет. Подскажите, пожалуйста, как правильно написать условие? перепробовал много вариантов, либо не реагирует, либо не выводиться во всём com_contact, либо 404.

Заранее благодарен.
*

ShopES

  • Захожу иногда
  • 426
  • 11 / 0
оформить модулем
указать где не выводить

*

Konstantin124

  • Захожу иногда
  • 59
  • 1 / 0
оформить модулем
указать где не выводить
Это понятно. Но неужели нет другого решения?

Пишу шаблон, стараясь максимально всё упростить и городить отдельный модуль для вывода двух строк - по моему это за гранью.
*

fbr

  • Завсегдатай
  • 1661
  • 206 / 7
Здравствуйте!

Есть некий блок с php и HTML вставками, который мне нужно выводить на всех страницах сайта, кроме одной единственной. Эта страница привязана к меню с адресом
Код
index.php?option=com_contact&view=contact&id=2

Больше в этом меню никаких материалов нет. Подскажите, пожалуйста, как правильно написать условие? перепробовал много вариантов, либо не реагирует, либо не выводиться во всём com_contact, либо 404.

Заранее благодарен.

Смотрите самый верхний пост на этой странице. Различные условия в шаблонах Joomla 3.0 и 2.5

Код
if ($option !== 'com_contact' && $itemid != 2) { // ваш код}

*

Konstantin124

  • Захожу иногда
  • 59
  • 1 / 0
Смотрите самый верхний пост на этой странице. Различные условия в шаблонах Joomla 3.0 и 2.5
Код
if ($option !== 'com_contact' && $itemid != 2) { // ваш код}
Так не работает. Вот так работает:
Код
$option = JRequest::getVar('option');
$view = JRequest::getVar('view');
$id = JRequest::getVar('id');
if (($option == 'com_contact') && ($view == 'contact') && ($id != 2)) { // мой код }
*

Konstantin124

  • Захожу иногда
  • 59
  • 1 / 0
Здравствуйте!
Необходимо выводить разный текст для разных компонентов. В шаблоне для Joomla 3 работает такой код:
Спойлер
[свернуть]
В шаблоне для Joomla 4 это не работает. Равно как не работает ни один из предложенных здесь вариантов.

Прошу помощи.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Код
<?php $option = JFactory::getApplication()->input->getCmd('option', ''); ?>

<?php if($option == 'com_content') { ?>
        <h1> <?php echo 'TPL_MYTEMPLATE_CONTENT' ?> </h1>
<?php } ?>
Работает  в Joomla 4
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
Товарищи, такой вопрос возник по условиям: обычно мы указываем в парметрах нужной категории её ID.
Например:

Код
<?php if (showPage(array('option' => 'com_content', 'view' => 'article', 'catid' => 8))) { ?>

А можно ли сделать это по псевдониму категории? Т.е. сначала определить, какой alias у категории выводимого материала?
Заранее спасибо!
*

goga_pgasovav

  • Захожу иногда
  • 444
  • 6 / 0
  • Внимательный джумловод
А можно ли сделать это по псевдониму категории? Т.е. сначала определить, какой alias у категории выводимого материала?

Спустя без малого год возникла подобная задача: мне понадобилось проверять alias материала в index.php шаблона.
Дело в том, что id — не всегда самая «стабильная» константа для условий выбора. Например, материал, на который мы ссылаемся, могут удалить, а затем создать новый с тем же псевдонимом, но id уже будет другой.
Поэтому опишу решение, которое считаю рабочим и довольно гибким:

Код
<?php
$ct = '';

if (showPage(array('option' => 'com_content', 'view' => 'article'))) { // проверяем, находимся ли мы на странице материала, и если да, то получаем его alias по ID
    $ct = 'article'; // тип контента — материал
    $article =& JTable::getInstance('content');
    $article->load($articleID);
    $alias = $article->alias;
}

$ex_pages = array('404', 'some-page'); //в массиве перечисляем псевдонимы страниц, которые будут участвовать в условии

if ($ct == 'article' && in_array($alias, $ex_pages)) {
    //выполняем нужные действия, если наше условие выполняется
}
?>

Возможно кому-то пригодится.
« Последнее редактирование: 16.12.2024, 17:28:52 от goga_pgasovav »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблоны Joomlart, Gavick, Yootheme, RocketTheme для Joomla: легально и с обновлениями, no warez

Автор _ib_

Ответов: 168
Просмотров: 204098
Последний ответ 15.04.2023, 18:26:50
от AS1969
Где в Joomla 3.4.3 шаблон материала? Шаблон Yootheme Organic

Автор annushka

Ответов: 13
Просмотров: 5556
Последний ответ 13.09.2022, 11:14:56
от tuztref
Master3 – современный удобный гибкий шаблон для Joomla! 3 на фреймворке UIkit 3

Автор dron

Ответов: 81
Просмотров: 9346
Последний ответ 11.09.2021, 03:12:59
от vasileк
Как убрать tooltip в регистрации в Joomla 3?

Автор KoloS

Ответов: 13
Просмотров: 8473
Последний ответ 24.08.2021, 19:00:51
от coolplaymaster
Сменить текст placeholder в поле поиска Joomla 3.x

Автор Poincare

Ответов: 7
Просмотров: 1958
Последний ответ 09.06.2021, 15:39:26
от Akeksandr