Joomla 1.5 - несколько рекомендаций
Метки: joomla
Пятница, 31 октября 2008 г.
Просмотров: 15695
Подписаться на комментарии по RSS
В работе над новым проектом мы в очередной раз решили использовать Joomla 1.5. В процессе разработки пришлось столкнуться с несколькими проблемами, способами решения которых я и хочу поделиться.
Отображение списка категорий в виде меню
Нам нужно было, чтобы при выборе пункта главного меню (связанного с разделом) в левой колонке отображался список категорий, относящихся к данному разделу. А при выборе конкретной категории в области контента отображался ее блог.
Оказалось, что этот функционал не входит в дистрибутив Joomla 1.5, поэтому пришлось искать соответствующий модуль. Такой модуль есть и он называется Content Categories. Однако у этого модуля есть два ключевых недостатка:
- Для отображения списка категорий он использует шаблон по умолчанию компонента com_content: /components/com_content/views/section/tmpl/default.php, это жестко задано в коде. Таким образом, никак нельзя повлиять на HTML-код, который выдает модуль, а там используется устаревшая верстка с помощью таблиц.
- При выводе никак не выделяется текущая выбранная категория (чтобы, например, ее можно было подсветить с помощью стилей)
В общем, пришлось модифицировать этот модуль таким образом, чтобы он использовал систему шаблонов Joomla 1.5 и передавал в шаблон текущий выбор категории. Прочитать о модуле и скачать его вы можете на странице Modified Content Categories module for Joomla 1.5.
Как убрать подключение встроенных JavaScript-модулей в публичной части сайта
По умолчанию Joomla 1.5 вставляет в заголовки всех страниц сайта подключение JS-модулей mootools.js и caption.js. Эти модули нужны для работы административного интерфейса и теоретически могут понадобиться в публичной. Однако, если они не нужны в публичной части? Тем более, mootools.js весит около 72Кб - зачем заставлять пользователей загружать его без надобности?
Рецепт решения найден здесь: Remoove Mootools From Joomla Header
Нужно прописать в заголовке шаблона следующие строки:
<?php
$user =& JFactory::getUser();
if ($user->get('guest') == 1) {
$headerstuff = $this->getHeadData();
$headerstuff['scripts'] = array();
$this->setHeadData($headerstuff); }
?>
перед строчкой:
<jdoc:include type="head" />
Как убрать ссылки на RSS в заголовке заглавной страницы
Joomla по умолчанию вставляет ссылки на RSS-потоки в заголовок заглавной страницы:
<link href="/feed/rss.html" rel="alternate"
type="application/rss+xml" title="RSS 2.0" />
<link href="/feed/atom.html" rel="alternate"
type="application/atom+xml" title="Atom 1.0" />
Если ваш сайт не является часто обновляемым блогом, эти ссылки не нужны. Отключить их достаточно легко: зайдите в административном интерфейсе в редактирование пункта меню, который увас отвечает за главную страницу (выбран по умолчанию) и отключите опцию: "Параметры - Расширенные -> Показать ссылку на ленту" / "Parameters (Advanced) -> Show a Feed Link".
Комментариев: 10
Сенкс!
/// к сожалению в публичной части, если есть separator (разрывы) меню, то без mootool'ов подменю показывается сразу, а не выплывает. Хотя идея неплохая...
Спасибо автору за данную статью. Долго искал как отключить mootools. А в каких плагинах или модулях он используется?
Огромное спасибо за статью. Наконец-то смог отключить RSS.
Спасибо большое!
Куета какая-то а не статья!
Нельзя было чуть доступнее написать. Может я и даун, но я ни чего не понял.
Сраная статья. Не написали что Mootools нельзя отключать если есть строка
В этом случае шаблону необходим mootools.
Пишете статью, раскрывайте полностью нюансы, а не лишь бы напостить и рейтинг повысить.
Не написали что Mootools нельзя отключать если есть строка
// <?php JHTML::_('behavior.mootools'); ?>комментарии не нужны
2anonymous: про повышение рейтинга рассмешили, спасибо :)
Автор, спасибо большое! Наконец-то отключил RSS! :)
Метод не совсем по фен-шуй, так как Вы удаляете Moootools на всех страницах сайта. Mootools работает в связке со многими стандартными элементами, напримем с проверкой полей ввода в форме. Поэтому чтобы сохранить гибкость, например для той же валидации форм, необходимо прописать следующее (там же, перед
)
<?php $user =& JFactory::getUser(); if ($user->get('guest') == 1) { $headerstuff = $this->getHeadData(); $key1 = JURI::base(true). '/media/system/js/mootools.js'; $key2 = JURI::base(true). '/media/system/js/caption.js'; $key3 = JURI::base(true). '/media/system/js/validate.js'; if(($headerstuff['scripts'][$key3])) { unset($headerstuff['scripts'][$key2]); } else { unset($headerstuff['scripts'][$key1], $headerstuff['scripts'][$key2]); } $this->setHeadData($headerstuff); } ?>Этот метод намного гибче и позволяет исключить тот или иной элемент по необходимости,
хотя его применение намного больше...
kulik1979[-]ukr.net