Пример сайта, созданного на Joomla

пятница, 9 апреля 2010 г.

PHP коды для шаблонов Joomla 1.5.

Продолжая тему работы с Joomla, которая является профилирующей в моей деятельности, хочу предложить вам несколько полезных php-заготовок, для использования при создании шаблонов.
Сразу хочу предупредить, что это не полный перечень основных переменных и вариантов их использования, а наиболее часто используемые мною "снипеты " при создании динамических шаблонов для Joomla 1.5

В целом, Joomla 1.5 позволяет более гибко работать с системными переменными при создании шаблонов, нежели ее предшественница.
Кроме того, в новой версии мы можем создавать собственные шаблоны, как отдельных компонентов, так и модулей. То есть, работа с дизайном и версткой стала приятнее и легче, однако об этом в следующих постах. А сейчас по теме.

Наиболее часто используемые переменные

Вывод название папки шаблона,
$this->template
например, выражение:
<img src="templates/<?php echo $this->template; ?>/images/something.png">
Позволяет вставить нужную картинку в любое мест шаблона.

А вот два варианта автоматического вывода основной ссылки на ваш сайт
JURI::base()
Выводит url вашего сайта в виде http://www.yoursite.com
Вторая переменная возвращает относительный путь к корневой директории без http://yoursite.com
$this->baseurl

Вывод содержимого только на главной или только на внутренних страницах с привязкой к меню

В обеих случаях в начале, в основном коде шаблона, создаем функцию:
<?php
$menu = & JSite::getMenu();
?>
Ее можно и не создавать в основе, а создать прямо в месте применения. Но лучше вынести в заголовок. А потом только обращаться при необходимости.
Далее, если нужно показать контент только на главной странице, то используем конструкцию типа:
<?php
if ($menu->getActive() == $menu->getDefault()) {
echo 'Здесь вставляем необходимое, можно и HTML код';
}
?>
А если нужно показать контент на всех страницах кроме главных, то можно использовать конструкцию типа:
<?php
if ($menu->getActive() != $menu->getDefault()) {
echo 'Здесь вставляем необходимое, можно и HTML код';
}
?>

Вывод содержимого при различных запросах Joomla!

Переменная
JRequest::getVar('view')
Возвращает информации о странице, которая отображена в данный момент (кроме главной!). Ее использование полезно в случае, если вам необходимо определить некое действие в шаблоне при условии вывода того или иного типа контента.
Например:
<?php if(JRequest::getVar('view') == ('article')) { ?>
[Вставте нужное]
<?php } else { ?>
[Вставте нужное]
<?php } ?>
Данный код выведет определенное содержимое, когда у нас выводится какая-либо статья, и скроет его в другом случае.
А если мы хотим вывести какое-либо содержимое при условии использования того или иного компонента Joomla!, нужно использовать эту же переменю но в другой конструкции:
Сначала определяем функцию с помощью указанной выше переменной, но с другим определением
<?php  $option = JRequest::getVar( 'option' );?>
А далее выводим в нужном месте шаблона условие, например:
<?php  if($option == 'com_weblinks') {?>
<jdoc:include type="modules" name="user2" style="raw"/>
<?php } ?>

Вывод разного содержимого в шаблоне для разных пользователей

Вот код основного условия:
<?php
$theuser = JFactory::getUser();
$usertype = $theuser->get('[Сюда ставим атрибут]')
if($usertype == '[Сюда ставим значение атрибута]') { ?>
[Сюда ставим, что угодно]
<?php } ?>
[Сюда ставим атрибут] — в данном случае используем следующее
id: ID пользователя
name: имя пользователя
aid: идентификатор уровня доступа ( 0 для всех, 1 для зарегистрированных, и 4 испециальный уровень доступа)
gid: идентификатор группы пользователя ( 19 автор, 20 редактор, 22 издатель, 23 менеджер, 24 администратор, и 25 суперадминистратор
guest: только для гостей (когда пользователь зарегистрирован, то переменная гостя равна 0)
usertype: тип пользователя (registered, author, editor, publisher, manager, administrator, and super administrator)
[Сюда ставим значение атрибута] — подразумевает соответствующее значение для определенного атрибута.
Для наглядности — вот простой пример:
<?php
$theuser = JFactory::getUser();
$usertype = $theuser->get('name');
if($usertype == 'Hiway') { ?>
Привет Hiway
<?php } ?>
 
(- А почему в этом коде:
get('name') if($usertype == 'Hiway') { ?> Привет Hiway
после $theuser->get('name') нет точки с запятой?


- Да. Ошибка.)
 

Комментариев нет:

Отправить комментарий