В предыдущей статье мы начали рассматривать API функции CMS Joomla, которые необходимы для унификации шаблона. Так в статье «Создание шаблонаJoomla. API функции(часть 1)» мы начали рассматривать класс JDocumentHTML, рассматрели основные переменные данного класса и как они применяются в создании шаблона для CMS Joomla. В данной статье мы подробно остановимся на методах данного класса и некоторые из них применим на практике. Ну, что приступим…
Методы:
addCustomTag(string: $html ) – добавляет в заголовок html код. Например $this->addCustomTag(<p>Привет!!!</p>)
addFavicon(string: $href, [string: $type=’image’], [string: $relation=’shortcut icon’]) – добавляет favicon, где $href – ссылка на картинку, $type – тип файла, $relation – отношение ссылки.
addHeadLink(string: $href, string: $relation, [string: $reltype=’rel’], [$attribs = array()], [array: $attributes]) – добавляет тег <link> в заголовок документа, где $href – ссылка, $relation – отношение ссылки, $reltype – отношение типа атрибута, по умолчанию = «rel», $attributes – ассоциативный массив атрибутов.
countMenuChildren – выводит количество дочерних элементов меню.
countModules(string: $condition) – выводит количество модулей в заданной позиции $condition.
Унаследованные методы:
addScript (string: $url, [string: $type=’text/javascript’], [bool: $defer=”false”], [bool: $async=”false”]) – добавляет на странице ссылку на скрипт, где $url – ссылка, $type – тип скрипта, $defer – добавляет атрибут отложенности, $async – добавляет атрибут асинхронности.
addScriptDeclaration (string: $content, [string: $type=’ text/javascript’]) – добавляет код скрипта, где $content – код скрипта, $type – тип скрипта.
addStyleSheet(string: $url, [string: $type=’text/css’],[string: $media=null], [array: $attrib]) – добавляет ссылку на CSS, где $url – ссылка, $type – тип, $media – медиа тип, $attrib – массив атрибутов.
getBase – возвращает URL документа.
setBase (string: $base) – добавляет URL для документа.
setCharset (string: $type) – устанавливает тип кодировки.
setDescription($description, string: $title) – устанавливает описание для документа.
setDirection ($dir=’ltr’, string: $lang) – устанавливает язык и направление текста для документа.
setMetaData (string: $name, string: $content, [bool: $http_equiv=’false’], [bool: $sync=’true’]) – устанавливает альтернативный мета тег, где $name – название или http-equiv тег, $content – значение содержания тега, $http_equiv – мета тип, $sync – указывает тип синхронизации.
setTitle (string: $title) – устанавливает title для документа.
Мы рассмотрели основные методы класса JDocumentHTTP, которые очень часто применяются в шаблонах Joomla. Давайте теперь применим на практике несколько методов и посмотрим, что из этого получиться. Если Вы не проделывали все, то что описано в предыдущих постах (у Вас нет шаблона на, котором можно экспериментировать), то я рекомендую скачать данный шаблон.
Давайте посмотрим какие позиции у нас есть, для этого в адресной строке введите: <адрес_вашего_сайта>?tp=1 (например у меня это выглядит так: http://localhost/joomla?tp=1) и мы должны увидеть следующее:
Давайте посмотрим какие позиции у нас есть, для этого в адресной строке введите: <адрес_вашего_сайта>?tp=1 (например у меня это выглядит так: http://localhost/joomla?tp=1) и мы должны увидеть следующее:
Теперь поставим задачу: Я не хочу, чтобы на главной странице отображался логотип в позиции «logo».
Приступим к решению данной задачи:
- Переходим в редактирование файла index.php, если Вы не помните, где он находиться, то не поленитесь и прочтите «Создание шаблона для Joomla 1.7. (часть 1)».
- Измените в строке в которой подключаем CSS-файл <?php echo $this->base ?> на <?php echo $this->baseurl ?>. И вместо:
<div id="logo">
<jdoc:include type="modules" name="logo" />
</div>
Вставьте:
<div id="logo">
<?php if ($menu->getActive() == $menu->getDefault()) {?>
<jdoc:include type="modules" name="logo" /> <!-- Вставка позиции logo-->
<?php } else { ?>
<p>А это не главная страница</p>
<?php }?>
</div>
Где if ($menu->getActive() == $menu->getDefault()) проверяем пользователь находится на главной странице или нет. Это метод является универсальным для проверки главной страницы.
Посмотрим, что получилось:
На этом пока все. Не пропускайте выход новых постов, подписывайтесь на рассылку обновления для данного блога.
В приведенном коде, по-моему, пропущена строка
ОтветитьУдалить$menu = &JSite::getMenu();
Да, конечно Вы правы в начале файла index.php у меня php вставка:
ОтветитьУдалить$menu = JSite::getMenu();
Спасибо за подробные инструкции.
ОтветитьУдалитьА как сделать подсветку текущего пункта меню? Чтобы активному пункту присваивался класс active?
Этот комментарий был удален администратором блога.
ОтветитьУдалить