Опубликовано автор в категориях Joomla.

Продолжая тему работы с 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.

13 комментариев к записи “PHP вставки, которые можно использовать при создании шаблонов для Joomla 1.5.x”

  1. ZHeKKa

    Здравствуйте! подскажите, пожалуйста, как реализовать задумку на Jooma 1,5

    на сайте присутсвует несколько городов, в виде категорий …
    и соответсвенно, если входишь в категорию соответствующего города , то для него появляется меню с ссылкой на контакты фирмы в данном городе — это у меня получилось реализовать ..

    Вопрос!

    как мне встроить для каждой страницы контактов свою гугл-карту???

    до этого решал проблему встройкой гугл iframe-вставки в шаблон самих контактов default_address.php (\components\com_contact\views\contact\tmpl) …

    но в этом случае вариант уже такой не прокатывает, т.к карта отображается на всех страницах Контакты (у меня их 5 штук)… думаю, что можно както реализовать вывод айфрейма, заключив его в php-код с условием, чтобы в зависимости от id страницы — выводился нужный айфрейм ???

    вот как должна выглядеть страница контактов для каждого города
    http://www.nulled.ws/attachment.php?attachmentid=21878&d=1240234813 … заранее спасибо

    Ответить
    • Hiway

      Есть два варианта.
      1. Тот о котором вы говорите. Тоесь вставить стандартный фрейм карты гугла в override старницы контактов и менять строку соссылкой в зависимости от id. Для этого вам нужно определить соственные переменные, которые будут зависеть от id, вернее соответствовать им. Это можно сделать в самом файле default_address.php в саомом начале кода.
      2. Он проще, но не факт что сработает. Можно попробовать поискать модуль или плагин, который позволяет выводить карты гугла. А всатвлять в материал его уже посредством плагина вставки модуля в контент.

      Ответить
  2. Kwazaro

    Огромное спасибо за статью! Очень полезно использовать условия на ‘option’ и ‘view’ при объявлении позиций модулей в шаблоне, так как из админки неполучится указать отображение модуля только на главной — он будет отображаться и в режиме просмотра полной статьи тоже.

    Ответить
  3. stosen

    А нет ли где-нибудь в сети описания Joomla Framework на русском языке? На английском трудно дается …(((

    Ответить
  4. Hiway

    @stosen: Нет, русского нет. Только инглишь. Я встречал один сайт где пытались это сделать но, как начали, так и… В общем нет.

    Ответить
  5. Roman

    Огромное спасибо, весь интернет облазил, только у вас внятно написано как оределять id пользователя

    Ответить
  6. Гость

    А почему в этом коде:

    get('name')
    if($usertype == 'Hiway') { ?>
    Привет Hiway

    после $theuser->get('name') нет точки с запятой?

    Ответить
  7. BlackLady

    Спасибо большое за статью! Все понятно даже такому новичку в Joomla и php как я. Эта статья — то что надо!

    Ответить

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

  • (не будет показан)