Шаблоны выполнены в 2-фазе процесса, который в полной мере использует парсер PHP обеспечить значительную гибкость и производительность для шаблона дизайнера. Шаблоны выполняются в контексте документа объект так, чтобы этот объект $ всегда экземпляра класса JDocument.
До начала выполнения шаблона, компонента были выполнены и его выход буфер для дальнейшего использования.
Шаблон исполнения, то происходит следующим образом: -
* Параметры шаблона (если таковые имеются) загружаются.
* Язык шаблонов (если таковые имеются) будет загружен.
* Если наследство режим на то переменные конфигурации копируются как глобальные.
* Файл шаблона (index.php) загружается и выполняется (по PHP). Выход в буфер. Это этап 1 процесса 2-фазе. Все между <? PHP и?> Теги выполнена как код PHP. Все, за пределами этих тегов производства, но в противном случае игнорируется. Как вывод был буфером, ничего не отправляется на веб-браузер клиента на данном этапе.
* Файл favicon.ico ищется сначала в Joomla! корневой каталог, то в корневой каталог шаблонов. Последний заменит бывший если он найден.
* Вывод, который был буфером на этапе 1 в настоящее время анализируется для <jdoc:include> элементов. Это этапа 2 процесса. Для каждого найденного элемента jdoc, соответствующего класса визуализации загружается и ее оказать метода. Выход из оказывать метод заменяет <jdoc:include> самого элемента в выходной буфер. В случае модуль визуализации классов Это вызывает выполнение модулей и буферизации своей продукции.
* Некоторые шаблона конкретной HTTP заголовки добавлены в список заголовков для вывода.
* Контроль затем передается обратно объекту JApplication который будет заниматься остальной процесс получения теперь оказанных веб-страницы на веб-браузер клиента.
Ошибка шаблонов страниц
По умолчанию Joomla! использует специальные шаблоны, когда ему необходимо повысить ошибочный ответ. Они расположены в шаблоны / система каталогов. Для серверов уровня коды статуса этих названы по имени код статуса, что в процессе согласования. Страницы по умолчанию системы ошибки:
* Templates/system/403.php (код: 403 Forbidden)
* Templates/system/404.php (код: 404 Not Found)
* Templates/system/500.php (код: 500 Internal Server Error)
Кроме того, эти страницы системная ошибка также доступны:
* Шаблоны / система / component.php (не уверен, когда это используется)
* Шаблоны / система / offline.php используется для отображения "Сайт форума" сообщения.
Обратите внимание, что jdoc: включать в себя элементы не анализируются в эти страницы ошибок.
Коды статуса определяются как часть протокола HTTP в RFC2616
Стилизация Страницы ошибок
На этих страницах можно применить используя следующий CSS классов:
* Errorboxheader
* Errorboxbody
* TechInfo
Joomla! использует шаблоны / система / error.php файл для обработки нескольких статуса HTTP ошибки, в том числе "403 Forbidden", "404 Not Found", и "500 Internal Server" ошибки. Вы можете стиле ошибка возникает, если это необходимо.
Важно понимать, что error.php является независимый файл из Joomla!. Плагины не работают на файл. Вы не можете включать модули или использовать <jdoc:include> заявления.
Переопределение Результаты Системная ошибка
Чтобы отменить результаты системной ошибки, копировать шаблоны / система / error.php файлов в шаблоны / <template-name> каталога.
Если он находит его, Joomla! будет использовать error.php файл из текущего шаблона, вместо файловой системы.
Вы можете форматировать страницы, что и требовалось, чтобы они соответствовали вашим шаблоном.
Переопределение системы Styling
Если вы хотите изменить стиль, копировать шаблоны / система / CSS / error.css файлов в шаблоны / <template-name> / CSS каталога.
Далее, обновление шаблонов / <template-name> / error.php файла для ссылки на новом месте таблицы стилей, изменяя эту строку, соответственно:
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" />
Затем, просто измените error.css, по желанию, для ваших требований стиля.
Настройка сообщений об ошибках
Вы можете добавить условную логику варьировать сообщение выдается, в зависимости от конкретного кода ошибки.
Вот пример того, как в ловушке ошибки 404 и предоставлять персонализированное сообщение.
<?php if ($this->error->code == '404') { ?> <div id="errorboxheader">Page not found</div> <div id="errorboxbody"><p>Sorry! That page cannot be found.</p> </div> </div> <?php } ?>
Кодекс HTTP Status
При запросе на страницу вашего сайта, сервер возвращает код статуса HTTP в ответ на запрос. Joomla! возвращает '200 - сервер успешно
открыл страницу для страницы ошибок. Это проблематично для тех, кто работает с Google Webmaster Услуги и пытаются получить карту
сайта решены.
Если вы хотите Joomla! вернуть код состояния для ошибки, вы можете сделать это путем добавления логики до DOCTYPE линии, а именно:
<?php if ($this->error->code == '404') { header("HTTP/1.0 404 Not Found"); } ?>
Использование заголовков тем и Footer на стандартной страницы ошибки
Если вы хотите увидеть страницу с ошибкой в тему дизайна и не люблю перенаправление на ошибки URL страницы или дублирования
HTML в шаблоне страницы с ошибкой, вот способ, чтобы применить тему шаблон на страницу ошибки.
Во-первых, положить следующий код в templates/<template-name>/error.php:
<?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); include dirname(__FILE__) . "/index.php"; ?>
Затем сделайте следующие изменения в templates/<template-name>/index.php::
1. Найти следующий код в index.php
<jdoc:include type="head" />
и заменить его следующим
<?php if (!$this->error->code) : ?> <jdoc:include type="head" /> <?php else : ?> <title><?php echo $this->error->code ?> - <?php echo $this->title; ?></title> <?php endif; ?>
2. Найти следующий код в index.php
<jdoc:include type="component" />
и заменить его следующим
<?php if ($this->error->code) : /* check if we are on error page, if yes - display error message */ ?> <p><strong><?php echo $this->error->code ?> - <?php echo $this->error->message ?></strong></p> <p><strong><?php echo JText::_('You may not be able to visit this page because of:'); ?></strong></p> <ol> <li><?php echo JText::_('An out-of-date bookmark/favourite'); ?></li> <li><?php echo JText::_('A search engine that has an out-of-date listing for this site'); ?></li> <li><?php echo JText::_('A mis-typed address'); ?></li> <li><?php echo JText::_('You have no access to this page'); ?></li> <li><?php echo JText::_('The requested resource was not found'); ?></li> <li><?php echo JText::_('An error has occurred while processing your request.'); ?></li> </ol> <p><strong><?php echo JText::_('Please try one of the following pages:'); ?></strong></p> <p> <ul> <li><a href="<?php echo $this->baseurl; ?>/index.php" title="<?php echo JText::_('Go to the home page'); ?>"><?php echo JText::_('Home Page'); ?></a></li> </ul> </p> <p><?php echo JText::_('If difficulties persist, please contact the system administrator of this site.'); ?></p> <?php else : ?> <jdoc:include type="component" /> <?php endif; ?>
Теперь Ваша тема шаблон применяется для страницы ошибок тоже.
Примечание: Модуль включает в шаблон не будет работать на страницу с ошибкой,созданный этим методом (но будет работать и на других страницах).
Добавление JavaScript
Этот кусок должен подробно описать, как добавить JavaScript, чтобы глава шаблонов с помощью Joomla! 1,5 API вызовы. Оно должно быть
направлено на людей, которые имеют лишь минимальные знания PHP, HTML и JavaScript.
Добавьте следующий код, чтобы JavaScript библиотека /media/system/js/sample.js включены в шаблон.
<?php $document = &JFactory::getDocument(); $document->addScript( '/media/system/js/sample.js' ); ?>
Объяснение
В конечном счете вы пытаетесь иметь в результате HTML-странице, JavaScript включить в главный элемент (т.е. <head> ... </head>):
Для примера:
<script type="text/javascript" src="/media/system/js/sample.js"></script>
Убедитесь, что JavaScript вы хотите включить в каталог, из приведенного выше примера:
/media/system/js/sample.js
Когда вы сможете загружать оба страницы вашего и увидеть <script> тег в <head> области, и быть в состоянии загрузить JavaScript с адреса
Опять же, на примере:
http://www.example.com/media/system/js/sample.js
Тогда сценарий интегрировано в вашу страницу, и вы можете приступить к использованию JavaScript в вашем HTML.
Не сразу добавить <script> в index.php вашего шаблона.
Код вставки <script> линии, где ваш index.php имеет следующую строку:
<jdoc:include type="head" />
Добавьте этот код PHP на вашу страницу, в голове, или рядом с JavaScript кода вы будете использовать, в зависимости от ваших
предпочтений.
<?php $document = &JFactory::getDocument(); $document->addScript( '/media/system/js/sample.js' ); ?>
Перезагрузить шаблон вашего и просматривать страницы, и убедитесь, что Sample.js включен в <head>
Добавление JavaScript файлов с помощью JHTML
Вы можете также использовать метод JHTML скрипт, чтобы добавить файл JavaScript, чтобы глава документа.
<?php $filename = 'filename.js'; $path = 'path/to/file/'; // add the path parameter if the path is different than : 'media/system/js/' JHTML::script($filename, $path); ?>
Существует и третий параметр, который можно передать в скрипт методом.
Параметр Boolean (истина / ложь). Вы бы установить это верно, если вы хотели MooTools загружены, а также.
<?php $filename = 'filename.js'; $path = 'path/to/file/'; // add the path parameter if the path is different than : 'media/system/js/' JHTML::script($filename, $path, true); // MooTools will load if it is not already loaded ?>
Обратите внимание:. Joomla 1.6 + может или не может обрабатывать MooTools иначе, чем в предыдущих версиях [1]
Список литературы
1. ↑ Техническое описание Обновление до 1,2 MooTools
Различных веб-браузерах иногда показать отличия в способе, которым они оказывают странице. По этой причине вы можете выяснить,
какой именно браузер посетителя использует для того, чтобы использовать некоторые браузера конкретных CSS.
Следующие JavaScript определяет простой объект обнаружения браузер, который определяет название и версия браузера при
декодировании navigator.userAgent строки.
function browserDetect() { var browserNames=new Array("Opera", "MSIE","Netscape","Firefox"); this.name="NK"; this.mainVersion="NK"; this.minorVersion="NK"; for (var i=0; i< browserNames.length; i++) { var pattern='('+browserNames[i]+')'+'.([0-9]+)\.([0-9]+)'; var myRegExp=new RegExp(pattern); if (myRegExp.test(navigator.userAgent)) { var results=myRegExp.exec(navigator.userAgent); this.name=results[1]; this.mainVersion=results[2]; this.minorVersion=results[3]; break; } } }
Для того, чтобы использовать это в сценарий, затем создать экземпляр этого объекта:
var browser = new browserDetect();
Собственности browser.name затем дать вам то название браузера (MSIE, Opera, Netscape или Firefox), browser.mainVersion даст вам основной номер версии и browser.minorVersion даст вам дополнительный номер версии.
Однако вы должны знать, что это не защищена от ошибок, и это, как правило, лучше (по мнению этого писателя), чтобы не писать
браузер-специфичный код, насколько это возможно.
Вы можете определить различные CSS стилей в зависимости от устройства пользователь просматривает Ваш сайт с
Распознаваемых типов средств массовой информации:
* Все - Подходит для всех устройств.
* Слуховой - Для синтезаторов речи.
* Брайля - Предназначен для Брайля тактильных устройств обратной связи.
* Выбито-Предназначен для страничных принтеров Брайля.
* Handheld - Предназначен для карманных устройств.
* Печать - используется для форматирования страниц печатного текста.
* Проекция - Предназначен для прогнозируемых презентации, например проекторов или печати на прозрачных пленках.
* Экрана - предназначен главным образом для цветных экранов компьютера.
* TTY - Предназначен для средств массовой информации с использованием сетки фиксированного шага характера, таких как телетайп, терминалы или портативные устройства с ограниченными возможностями отображения. Авторы не должны использовать пиксельных блоков с "TTY" типа.
* ТВ - Предназначен для телевидения типа устройств (низкое разрешение, цвета кожи, ограниченной scrollability экраны, звук есть).
Вы можете назначить тип носителя для CSS заявление со следующим синтаксисом
@media print {
BODY { font-size: 12pt } }
Чтобы назначить заявление более чем одним типом носителей:
@media print handheld{
BODY { font-size: 12pt } }
Кроме того, и, возможно, аккуратнее решение создать отдельную таблицу стилей для данного типа средств массовой информации и включают следующие в шаблонах <head> (Отрывок из Beez шаблона):
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/beez/css/print.css" type="text/css" media="Print" />
