PHP вставки, которые можно использовать при создании шаблонов для Joomla 1.5.x
Продолжая тему работы с 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 } ?>
UPDATE: Еще ряд полезных сниппетов для работы с меню Joomla
Удачного Joomla-строительства
Кстати, интересно почитать — Блог программиста о партнерских программахТуристические палатки сайт. Палатки туристические greenell.






Спасибо!Очень помог!
код для вывода Title
getCfg ('sitename');?>
Здравствуйте! подскажите, пожалуйста, как реализовать задумку на Jooma 1,5
на сайте присутсвует несколько городов, в виде категорий ...
и соответсвенно, если входишь в категорию соответствующего города , то для него появляется меню с ссылкой на контакты фирмы в данном городе — это у меня получилось реализовать ...
Вопрос!
как мне встроить для каждой страницы контактов свою гугл-карту???
до этого решал проблему встройкой гугл iframe-вставки в шаблон самих контактов default_address.php (\components\com_contact\views\contact\tmpl) ...
но в этом случае вариант уже такой не прокатывает, т.к карта отображается на всех страницах Контакты (у меня их 5 штук)... думаю, что можно както реализовать вывод айфрейма, заключив его в php-код с условием, чтобы в зависимости от id страницы — выводился нужный айфрейм ???
вот как должна выглядеть страница контактов для каждого города
... заранее спасибо
Есть два варианта.
1. Тот о котором вы говорите. Тоесь вставить стандартный фрейм карты гугла в override старницы контактов и менять строку соссылкой в зависимости от id. Для этого вам нужно определить соственные переменные, которые будут зависеть от id, вернее соответствовать им. Это можно сделать в самом файле default_address.php в саомом начале кода.
2. Он проще, но не факт что сработает. Можно попробовать поискать модуль или плагин, который позволяет выводить карты гугла. А всатвлять в материал его уже посредством плагина вставки модуля в контент.
Огромное спасибо за статью! Очень полезно использовать условия на 'option' и 'view' при объявлении позиций модулей в шаблоне, так как из админки неполучится указать отображение модуля только на главной — он будет отображаться и в режиме просмотра полной статьи тоже.
А нет ли где-нибудь в сети описания Joomla Framework на русском языке? На английском трудно дается ...(((
@stosen: Нет, русского нет. Только инглишь. Я встречал один сайт где пытались это сделать но, как начали, так и... В общем нет.
Как правильно вставить этот календарь в сайт на Joomla!
Версия 1.5.14
_http://script.days.ru/
Огромное спасибо, весь интернет облазил, только у вас внятно написано как оределять id пользователя
А почему в этом коде:
get('name') if($usertype == 'Hiway') { ?> Привет Hiwayпосле
$theuser->get('name')нет точки с запятой?Да. Ошибка.
Спасибо большое за статью! Все понятно даже такому новичку в Joomla и php как я. Эта статья — то что надо!