Условия для вывода контента в Joomla 3.x
Так уж заведено у Joomla, те, кто использует её в качестве основы для своего сайта, предпочитают покупать готовые шаблоны или заказывать у разработчиков. С расширениями обстановка та же самая, если хочешь многофункциональный модуль с кучей настроек плоти деньги. Конечно, есть на просторах интернета бесплатные варианты, но они не всегда нас устраивают. Однако, я завёл этот разговор не для того чтобы обсудить финансовую сторону, а показать, что вокруг нашей CMS сформировалась определённая ситуация. Речь идёт о том, что в сети очень сложно найти дельную статью о создании собственного шаблона, все они предлагают лишь основы, не вдаваясь в подробности. Ну а если хочешь большего, как говорил выше, плати. Поэтому многие начинающие разработчики сталкиваются с большими проблемами, когда доходит до создания интересных элементов дизайна. Парой, даже после вёрстки остаются вопросы, ответ на которые найти достаточно тяжело. К примеру, вы написали код, благодаря которому на сайте показывается какой-то модуль, но хотите выводить его в категориях. Joomla предлагает достаточно удобное решение: привязка к пунктам меню. Но это возможно, только если созданный вами элемент будет компонентом, плагином или модулем, т.е. в качестве расширения. А что если вы планируете написать свой код прямо в index.php? В этом случае ваше дизайнерское чудо будет открываться на всех страницах без исключения. Так вот, мы рассмотрим два интересных, но в тоже время простых кода. Первый будет определять зарегистрирован пользователь или нет, и показывать определённый контент в зависимости от того, кто открыл страницу. Второй код поможет выбрать, на каких страницах показывать созданный нами элемент дизайна. Эти два условия предлагают массу возможностей для начинающих веб мастеров.
Вывод контента для посетителя
По большому счёту, зашедшие на сайт люди делятся на два типа, это обычные гости и те, кто прошел регистрацию (т.е. вошли под своим логином и паролем). Определив роль человека, зарегистрирован он или нет, мы можем показать тот или иной материал на сайте. К примеру, мы хотим отобразить рекламу на всех страницах, но при этом знаем, что любая реклама вызывает раздражение у многих посетителей. Поэтому предлагаем им зарегистрироваться у нас, для того чтобы скрыть её из виду. Вместо рекламы, конечно же, может быть всё что угодно. А делается это при помощи вот этого небольшого кода:
PHP код:
<?php $user = & JFactory::getUser(); if ($user->guest) { ?> 1. Показать всем <?php } else { ?> 2. Показать только зарегистрированным пользователям <?php } ?>
Если вы вставите код рекламы вместо надписи 1 и целиком удалите 2, то установленный вами рекламный баннер, не будет показан зарегистрированным. И обратная ситуация, если хотите показывать людям, вошедшим на сайт под своим логином, то удалите целиком первую, а вторую заполните. Хотя можно использовать и обе в зависимости от поставленной задачи.
Для общей справки вот ещё один код:
PHP код:
<?php $user = & JFactory::getUser(); if (!$user->guest) { echo 'Вы вошли как:<br />'; echo 'User name: ' . $user->username . '<br />'; echo 'Real name: ' . $user->name . '<br />'; echo 'User ID : ' . $user->id . '<br />'; } ?>
Те, кто вошли на сайт под своим паролем увидят общую информацию о себе: имя пользователя, настоящее имя, свой id.
Вывод контента только на главной странице
Вот тут начинается самое интересное, так как Joomla предлагает стандартные средства для решения поставленной задачи. Однако мы не можем ими воспользоваться, если хотим вставить свой код прямо в index.php. Этот файл отвечает за вывод всей информации на сайте, и то, что мы напишем, будет показано на всех страницах. Поэтому необходимо создать условие для вывода, но и здесь не всё так просто. Теперь давайте по порядку.
1. При первой установки движка, все ссылки на страницы, категории и материалы имеют не правильный вид. Если обратите внимание на одну из них, то увидите что-то вроде этого: домен_сайта.ru/index.php/категория/название_материала
Так вот, index.php здесь лишнее. Как минимум потому, что создать условие с такой ссылкой просто не получиться, наш элемент будет по-прежнему показываться на всех страницах. И чтобы всё работало как надо, для начало необходимо убрать рас и навсегда index.php из ссылки. Идём в корень сайта, где лежит файл htaccess.txt и открываем его через редактор NotePad++. Вставляем в самый низ этот код:
Apache configuration код:
RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://домен_сайта.ru/ [R=301,L]
Обратите внимание на третью строку, там необходимо вставить ссылку на ваш сайт. Сохраняем этот файл без расширения, но с точкой в самом начале названия (.htaccess). Если не знаете как: в программе Notepad++ нажимаем «сохранить как», после этого выбираем тип файла «All types (*.*)», пишем название .htaccess и на кнопку сохранить. Осталось вернуть этот файл назад.
2. Теперь необходимо настроить SEO в Joomla. Заходим в панель управления и открываем общие настройки, справа увидите «настройки SEO». Выставляем те значения, что и на картинке:
Главное здесь поставить «ДА» в пункте «Перенаправление URL». После этих действий можно переходить к самому коду для сайта.
3. В файле index.php нашего шаблона используем такой код для отображения контента:
PHP код:
<?php $menu = & JSite::getMenu(); if ($menu->getActive() == $menu->getDefault()) {?> 1. Показать на главной странице <?php } else { ?> 2. Показать на всех остальных <?php } ?>
В общем-то, здесь принцип тот же самый, что мы рассматривали выше, вставляете свой контент туда, где хотите показать. Стоит пояснить кое какой момент. Я создал несколько категорий для сайта и добавил их в основное меню. Главная страница, у меня выглядит как блог, на которой располагаются публикованные материалы в 2 колонки. Для удобства создал общую категорию под названием «ALL» (пустая) и привязал её к главной, а внутри неё были все оставшиеся категории.
Так как публикуемые материалы во всех категориях относятся ещё и к общей «ALL», то на главной странице у меня отображаются все посты по дате добавления. Так вот, если у нас была задача показать контент только на главной, здесь вырисовывается интересная ситуация. При добавлении материала в категорию «ALL», контент предназначенный для главной страницы будет всё равно показан в этом материале. Это произошло потому, что Joomla при формировании ссылки на открывшемся материале не стала добавлять название категории, так как наша категория «ALL» и является главной. Обращайте на это внимание, если захотите воспользоваться этим кодом. В остальных случаях, при переходе по меткам, категориям и страницам всё работает, как и задумано.
Соседние материалы | ||||
Joomla 3.5 - Все, что вам нужно знать | Создаем RSS-ленту в Joomla! |