Действия

Фишки шаблонов Joomla

Материал из База знаний Joomla

Здесь вы найдете то, что сделает ваш шаблон Joomla! по-настоящему динамичным.

Для начала напомню, что шаблон Joomla написан на PHP - значит доступны все функции этого замечательного языка программирования.

При создании шаблонов Joomla можно использовать любые параметры (и их проверки). Чтобы сориентироваться в них, достаточно отключить SEF и вы увидите пары ПАРАМЕТР=ЗНАЧЕНИЕ, используя которые можно легко создать динамичный шаблон.

Показываем какой-то текст, только для статей

Com_content - название компонента контента, view - команда просмотра статьи (или статичного содержимого).

if ($option=='com_content' && $task=='view') {
 
    echo "Пользователь смотрит статью с идентификатором, равным $id";
}

Определяем Главную страницу

Когда в шаблоне надо часто использовать проверку на Главную страницу, то чтобы улучшить читабельность кода делаем так

$site_frontpage = (mosGetParam( $_REQUEST, 'option', '' ) == 'com_frontpage')?1:0;

или так

// Если $option равна com_frontpage, то $site_frontpage = 1, а иначе $site_frontpage = 0
$site_frontpage = ($option == 'com_frontpage')?1:0;

Затем в коде вставляем проверку

<?php if ($site_frontpage == 1) { ?>
// Показываем html-код №1
<?php } else { ?>
// Показываем html-код №2
<?php } ?>

Пояснение: Если запрошена Главная страница (компонент com_frontpage), то показываем код №1, иначе - код № 2

Скрываем правую колонку

Здесь правая колонка будет скрываться при условии, что в ней нет модулей или когда мы редактируем статьи на сайте.

$rightcol = ( mosCountModules( 'right' ) and ( empty( $_REQUEST['task'] ) || $_REQUEST['task'] != 'edit' ) )?1:0;

Пояснение: Если в позиции right есть модули И параметр task пуст или не равен edit, то переменная $rightcol будет равна 1, иначе - 0

Затем в шаблоне определяем, где у нас код правой колонки.

Например, было так

<td id="rightcol">
  <?php mosLoadModules( 'right' ); ?>
</td>

Модифицируем код так

<?php if ( $rightcol > 0 ) { ?>
 <td id="rightcol">
  <?php mosLoadModules( 'right' ); ?>
 </td>
<?php } ?>

Сейчас правая колонка будет скрываться в режиме редактирования и при отсутствии модулей.

По-простому, если нужно просто скрывать области шаблона (области с модулями), когда в них нет модулей, можно сделать так:

<?php if ( mosCountModules( 'right' )) { ?>
 <td id="rightcol">
  <?php mosLoadModules( 'right' ); ?>
 </td>
<?php } ?>

Сейчас правая колонка будет скрываться ТОЛЬКО при отсутствии в ней модулей. Если визуально модулей нет, а колонка не скрывается, то, возможно, модули есть, но они пусты (модуль работает, но на сайт ничего не выводит).


Сокрытие пунктов меню или области шаблона для зарегистрированных пользователей

К сожалению, здесь не всё так просто: надо либо править модуль меню, либо выносить скрываемые пункты в отдельный модуль (и даже в отдельную позицию модуля), а уже его скрывать.

Делается примерно так:

1. определяем позицию для модуля - в нужном месте шаблона вставляем код:

if (!$my->id && mosCountModules( 'user7' )) 
mosLoadModules( 'user7' );

2. Для модуля меню со скрываемыми пунктами указывается в параметрах позиция user7

Для области шаблона это выглядит так

<?php if (!$my->id) { ?>
любой html-код, который надо скрыть
<?php } ?>

Если наоборот надо отображать области, то !$my->id меняется на $my->id