Изменение документа в joomla
Иногда возникает необходимость динамического внесения изменений в документ выводимый joomla (web страницу). Для того чтобы это сделать, необходимо вначале получить ссылку на глобальный объект документа используя класс JFactory. Осуществляется это следующим образом:
- <?php
- $document =& JFactory::getDocument();
- ?>
После этого переменная $document будет буфером документа перед выводом, и мы можем вносить изменения в этот документ. Обратите внимание, что мы используем = & оператор присваивания для получения ссылки на объект. Если мы этого не сделаем, любые изменения которые мы применим к объекту документа - не будут применены. Все приведенные ниже примеры, предполагают что $document - это глобальный объект документа.
Page Title
Заголовок страницы является наиболее часто изменяемой частью документа, это содержимое тега <title> в <head> документа XHTML. Существует два метода работы с заголовком документа, это методы getTitle() и SetTitle(). Метод getTitle() возвращает существующий заголовок документа (web страницы), а метод SetTitle() устанавливает новое значение заголовка. Следующий пример демонстрирует применение метода SetTitle(), для изменения текущего заголовка документа:
- <?php
- ?>
Если же потребуется к примеру добавить к заголовку документа дополнительный текст, то это возможно сделать следующим образом:
- <?php
- $document->setTitle($title);
- ?>
Pathway (Путь)
Pathway - путь, или хлебные крошки используется в документе для отображения пользователю текущего местоположения на сайте, относительно главной страницы. Мы также можем изменить структуру пути, например это может понадобится для расширения (компонента) который имеет несколько категорий и для этого необходимо добавить пункты для отображения этой иерархии. Для доступа к объекту пути нужно получить ссылку на глобальный объект JPathway, следующий пример демонстрирует как это осуществить:
- <?php
- $pathway =& $mainframe->getPathway();
- ?>
Обратите внимание, что мы используем = & оператор присваивания для получения ссылки на объект. Если мы этого не сделаем, любые изменения которые мы применим к объекту pathway - не будут применены. Для добавления нового элемента в к пути, используется метод AddItem(). К примеру при просмотре категории компонента мы хотим добавить к пути, следующий пример демонстрирует как это сделать:
- <?php
- $pathway->addItem($categoryName);
- ?>
Существует одна очевидны, чего не хватает из этого примера. Существует нет URI. Так как мы рассматриваем категорию, нет необходимости указывать URI, потому что это текущий URI. Однако как можно заметить, в приведенном примере не хватает одной детали - указания URL адреса категории, но ведь при просмотре категории нет необходимости указания ее URL адреса, потому что это текущий адрес.
Последний пункт в пути никогда не ссылка. Нам нужно только указать URL, когда мы добавляем элементы, которые не будет последним пунктом в пути. Этот пример показывает, как мы могли бы построить путь для элемента предыдущей категории относительно текущей:
- <?php
- $pathway->addItem($categoryName, $categoryURI);
- $pathway->addItem($itemName);
- ?>
Обратите внимание на этот раз мы включили URI при добавлении категории пункта. Это нормально, б добавить к пути на дисплее () метод каждого класса JView. Важно понимать, что мы всегда должны добавить путь элементы в порядке их появления. Обратите внимание что в приведенном примере, в добавляемый пункт пути был включает URL на категорию, и если в настоящий момент отображается категория joomla, это приведет к ошибке, так как мы должны соблюдать последовательность добавления пунктов к пути, мы можем обойти это получив текущий пункт меню следующим образом:
- <?php
- $menus =& JMenu::getInstance();
- $menuitem =& $menus->getActive();
- ?>
JMenu класс отвечает за обработку меню в Joomla!. GetActive() возвращает ссылку на текущий выбранный объект пункт меню. После этого $menuitem это объект StdClass, который содержит различные атрибуты, которые относятся к текущему пункту меню. Атрибут, который нас интересует в запросе в этом ассоциативном массиве, это view и чтобы обойти предыдущую ошибку, мы должны сделать следующее:
- if ($menuitem->query['view'] != 'category')
- {
- $pathway =& $mainframe->getPathWay();
- $pathway->addItem($categoryName);
- }
- ?>
Для того чтобы усовершенствовать отображение пути, например при просмотре элемента категории или категории, добавление пункта меню возможно сделать еще более универсальным способом:
- <?php
- if ($menuitem->query['view'] != 'item')
- {
- $pathway =& $mainframe->getPathWay();
- switch ($menuitem->query['view'])
- {
- case 'categories':
- $pathway->addItem($categoryName, $categoryURI);
- default:
- $pathway->addItem($itemName);
- }
- }
- ?>
JavaScript
Для того, чтобы добавить JavaScript чисто она должна быть добавлена в заголовок документа. Мы можем использовать следующие методы для добавления JavaScript следующим образом: Для добавления Javascript в документ, с соблюдением валидной верстки, следует использовать метод AddScript(), который добавляет ссылку на внешний файл javascript в HEAD документа. Это пример того, как использовать addScript () метод:
- <?php
- $js = JURI::base().'components/com_some/assets/script.js';
- $document->addScript($js);
- ?>
Метод AddScriptDeclaration() похож, он позволяет добавлять исполняемый JavaScript код в заголовок документа. Это пример того, как использовать addScriptDeclaration() метод:
- <?php
- $js = 'function notify(text) { alert(text); }';
- $document->addScriptDeclaration($js);
- ?>
CSS
Для того, чтобы добавить стили CSS чисто они должны быть добавлены в заголовке документа. Мы можем использовать методы addStyleSheet() и addStyleDeclaration() для добавления CSS. ДЛя правильного добавления CSS (с соблюдением правил валидной верстки), мы можем использовать методы addStyleSheet() и addStyleDeclaration() Это пример того, как использовать addStyleSheet() метод:
- <?php
- $css = JURI::base().'components/com_foobar/assets/style.css';
- $document =& JFactory::getDocument();
- $document->addStyleSheet($css);
- ?>
Второй метод удобен тем что может быть использован для добавления в документ стилей предназначенных для печати документа, в этом случае метод addStyleDeclaration(), предполагает указание параметра указывающего значение атрибута media (MIME тип):
Допустимые значения media type MIME:
- all
- aural
- braille
- embossed
- handheld
- projection
- screen
- tty
- <?php
- $document->addStyleSheet($css, 'text/css', 'print');
- ?>
Также как и для javascript возможно использовать метод addStyleDeclaration():
- <?php
- $css = '.somestyle { padding: 10px; }';
- $document->addStyleDeclaration($css);
- ?>
Metadata
Теги метаданных используются, чтобы описать документ. Есть два метода метаданные в документе:
GetMetadata() используется для получения метаданных документа, setMetaData() функция используется для добавления метаданных к документу. Когда мы создаем расширений, которые обрабатывают информацию, которую мы хотим внести в индекс поисковых систем, важно их добавить в документ. Этот пример добавляет некоторые ключевые слова метаданных:
- <?php
- $keywords = 'monkey, ape, chimpanzee, gorilla, orang-utan';
- $document->setMetaData('keywords', $keywords);
- ?>
Добавление HTTP-EQUIV метаданных очень похоже. Представьте себе если мы хотим выключить стильи браузера. Мы можем использовать HTTP-EQUIV тип метаданных MSTHEMECOMPATIBLE:
- <?php
- $document->setMetaData('MSTHEMECOMPATIBLE', 'no', true);
- ?>
Метод GetMetadata() позволяющий получить метаданные, дает нам возможность добавить к текущим метаданным, дополнительные метаданные как показано в примере ниже:
- <?php
- $keywords[] = 'append me';
- $keywords[] = 'and me';
- ?>
Custom header tags
Если мы хотим, добавить другой тип тега, а не сценарий, CSS, или метаданные, мы можем использовать метод addCustomTag(). Этот метод позволяет внедрить код непосредственно в заголовке документа. Представьте себе, мы хотим, чтобы добавить комментарий к заголовок документа:
- <?php
- $comment = '<!-- Oi, stop looking at my page source! :p -->';
- $document->addCustomTag($comment);
- ?>
PS. Читайте последние записи RSS Подписка на RSS