Новости Joomla

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Очень часто бывают ситуации, когда возможностей привязки модулей на определенные ссылки в меню недостаточно, либо требуется более точечно отладить шаблон.
В FAQ уже существуют две замечательные темы:
Небольшие хитрости с позициями модулей
Отображение модулей в зависимости от параметра переменной $task
Но здесь рассмотрим более тривиальные и простые задачи.

Задача 1 - отображать\скрывать блоки сайта в зависимости от наличия публикации модулей
Для примера возьмем трехколоночный табличный резиновый шаблон, правая левая колонки по 25% ширины, центр тянется
Код
<table width="100%">
 <tr>
  <td width="25%"><?php mosLoadModules ( 'left' ); ?></td>
  <td>
   <?php echo mosMainBody(); ?>
  </td>
  <td width="25%"><?php mosLoadModules ( 'right' ); ?></td>
 </tr>
</table>
Делаем вот так:
Код
<table>
 <tr>
  <td width="25%"><?php mosLoadModules ( 'left' ); ?></td>
  <td>
   <?php echo mosMainBody(); ?>
  </td>
         <?php
         if ( mosCountModules( 'right' ) ) { ?>
         <td width="25%"><?php mosLoadModules ( 'right' ); ?></td>
         <?php } else {} ?>
  </td>
 </tr>
</table>
Что там это дает - при отсутствии опубликованных модулей в позиции RIGHT правая колонки исчезнет с сайта, и центральная с блоком mainbody будет занимать 75% ширины, вместо 50% как ранее.
Если подобную процедуру применить к левой ячейке - то mainbody вытянется на всю ширину экрана.

Задача 2 - популярный вопрос по отображению модулей (к примеру последних новостей) только на главной странице
Пусть блок наших новостей расположен в центральной колонке в позиции TOP, над ним PATHWAY. Нам надо чтобы на главной были последние новости но не мешался mainbody и не было pathway, на других страницах убирался модуль и был pathway с mainbody
Код
<table width="100%">
 <tr>
  <td width="25%"><?php mosLoadModules ( 'left' ); ?></td>
  <td>
     <?php if ( !isset($option) || @$option=='com_frontpage' ) {
     mosLoadModules ( 'top' ); } else { ?>
     <div><?php echo mosPathWay(); ?></div>
     <div><?php echo mosMainBody(); ?></div>
     <?php } ?>
  </td>
  <td width="25%"><?php mosLoadModules ( 'right' ); ?></td>
 </tr>
</table>
Должен сказать - весьма популярная конструкция, сам часто пользуюсь.


Задача 3 - "как скрыть правую колонку для форума"
Конструкция аналогично вопросу 2, только заменяем com_frontpage на название компонента.
К примеру com_firebird и применяем условие к правой колонке.

Задача 4 - разные картинки для разных страниц сайта
Можно найти какой нибудь модуль, написать свой, я же приведу одно из решений - когда мало того, что надо менять картинку на заранее определенную для страницы, так эта картинка должна быть фоновой для какого то элемента.
Код
<?php
if (@$Itemid == '1') {
$modulecss = 'img1';
} if (@$Itemid == '44') {
$modulecss = 'img2';
} else { $modulecss = 'img1'; }
?>
<div class="<?php echo $modulecss; ?>"></div>
В файле стилей делаю два класса:
img1 { background: url(img1.jpg); }
img2 { background: url(img2.jpg); }
У главной страницы ItemID равен 1 - будет работать класс img1 с фоновой картинкой img1.jpg
Для страницы с ItemID 44 - соответственно класс img2 с картинкой img2.jpg
Для всех остальных страниц по умолчанию класс img1
Что такое ItemID здесь

Если же нам требуется просто поместить разные картинки на разные пункты меню, то будет выглядеть примерно так:
Код
<?php
if (@$Itemid == '11' ) { echo "<img src='images/ico/1.gif' border='0' />";
} elseif (@$Itemid == '12' ) { echo "<img src='images/ico/2.gif' border='0' />";
} elseif (@$Itemid == '13' ) { echo "<img src='images/ico/3.gif' border='0' />";
} else {}
?>

Совмещяя данный пример с любым предыдущим - можно отображать элементы также и по идентификаторам пункта меню.
Кстати данный пример можно использовать для задания разным страницам сайта различного оформления CSS (е примеру background-color) без подключения дополнительных файлов стилей.
Обычно подобный прием я использую, если надо сделать разные шапки для разных страниц

Задача 5 - как избежать множества шаблонов, но сохранить возможность индивидуальной настройки главной и внутренних страниц
Открываем index.php нашего шаблона и в нем пишем:
Код
<?php
defined( '_VALID_MOS' ) or die( 'ERROR' );
switch ($option) {
   case 'com_frontpage': //for main page
     include_once ('front.php');
     break;

   default:  // default for all pages
      include_once ('inner.php');
      break;
}
?>
Что происходит - front.php и inner.php становятся как бы индексными из  разных шаблонов, содержимое каждого такого файла уже будет в точности соответствовать index.php разных шаблонов. Можно подключать различные стили CSS, графику, скрипты.
Можно продолжить данный кейс и отдавать разные страницы другим компонентам.

Итоги
Комбинируя данные приемы можно очень гибко управлять шаблоном, адаптируя практически любой дизайн под joomla

Внимание - в лоб применить данные приемы возможно лишь тогда, когда шаблон вы делаете самостоятельно. В большинстве же случаев (особенно если шаблон на DIV) - придется хорошенько покопаться в файле template_css.css
« Последнее редактирование: 01.03.2008, 14:54:31 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
Re: Различные условия в шаблонах
« Ответ #1 : 01.03.2008, 14:46:22 »
при переборе картинок я не вижу смысла использовать конструкцию IF( ... )


switch( @Itemid )
{
	
case 
1:
	
	
...
some code...;
	
break;

	
case 
2:
	
	
...
some code...;
	
break;

	
case 
N:
	
	
...
some code...;
	
break;

	
default:
	
	
...
some code...;
	
break;
}


ps. кстати, это
Цитировать
   if (@$Itemid == '11' ) { echo "<img src='images/ico/1.gif' border='0' />";
   } if (@$Itemid == '12' ) { echo "<img src='images/ico/2.gif' border='0' />";
   } if (@$Itemid == '13' ) { echo "<img src='images/ico/3.gif' border='0' />";
   } else {}
не правильно


должно быть:

if (@$Itemid == '11' )
{
   echo "<img src='images/ico/1.gif' border='0' />";
}
elseif (@$Itemid == '12' )
{
   echo "<img src='images/ico/2.gif' border='0' />";
}
elseif (@$Itemid == '13' )
{
   echo "<img src='images/ico/3.gif' border='0' />";
}
else
{
}
« Последнее редактирование: 01.03.2008, 14:50:52 от userxp »
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: Различные условия в шаблонах
« Ответ #2 : 01.03.2008, 14:53:30 »
согласен и про    case и про elseif, задача стояла то не дать правила php, а основы манипуляции в шаблоне.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться