Комментарии

Файл шаблона index.php
( 0 Голосов )
В Joomla принято, чтобы шаблон содержал файл index.php, который, по существу, служит шаблоном для страниц веб-сайта. (Главный файл шаблона может называться как угодно в зависимости от значения переменной tmpl в запросе. По умолчанию в качестве этого значения выбирается index.php, если переменная tmpl не определена.) 
 
Файл index.php содержит схематическое представление страницы с пустыми местами для заполнения конкретным содержимым каждой страницы.
 
В прошлых статьях нашего сайта, мы подробно пояснили каким образом страница веб-сайта Joomla компонуется в методе render (). В частности, программа сначала составляет список всех элементов jdoc:include в файле index.php шаблона, а затем заполняет пустые места соответствующим содержимым каждого элемента.
 
В качестве примера рассмотрим файл index.php для шаблона atomic. Этот шаблон входит в стандартный вариант распространения Joomla и представляет собой простейший шаблон, служащий в качестве отправной точки для создания новых шаблонов.
 
Файл index.php служит отличным примером того, насколько просто код РНР сочетается с кодом HTML средствами языка РНР. В первой части этого файла, приведенной в листинге ниже, находится единственный фрагмент кода в одном элементе разметки РНР.
 
Открывающий элемент разметки РНР в начале файла index.php шаблона atomic:
 
<?php
/**
 * @package Joomla.Site
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */
 
defined('_JEXEC') or die;
 
/* В следующей строке кода загружается библиотека MooTools языка JavaScript */
JHtml::_('behavior.framework', true);
 
/* В следующей строке кода получается объект приложения для таких функций, как отображение наименования сайта */
$app = JFactory::getApplication();
?>
В этом фрагменте кода гарантируется, что все остальное будет выполняться в среде Joomla, загружается библиотека интегрированной среды MooTools языка JavaScript, а затем получается экземпляр объекта типа JApplicationSite. Подробнее об интегрированной среде MooTools в частности и языке JavaScript речь пойдет следующих статьях сайта.
 
В следующем фрагменте кода, приведенном в листинге ниже, демонстрируется ряд очень важных особенностей шаблонов.
 
Второй фрагмент кода из файла index.php шаблона atomic:
 
<?php echo '<?'; ?>xml version="1.0" encoding="<?php echo $this->_charset ?>"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >
<head>
<!-- В следующем дескрипторе JDOC Head загружается весь заголовок и его метаданные из настроек и содержимого вашего сайта. -->
<jdoc:include type="head" />
 
<!-- В следующих пяти строках кода загружается среда Blueprint CSS Framework (http://blueprintcss.org). Если вы не собираетесь пользоваться данной средой, удалите эти строки кода. -->
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/blueprint/screen.css" type="text/css" media="screen, projection" />
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/blueprint/print.css" type="text/css" media="print" />
<!--[if lt IE 8]><link rel="stylesheet" href="/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/blueprint/plugins/fancy-type/screen.css" type="text/css" media="screen, projection" />
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/blueprint/plugins/joomla-nav/screen.css" type="text/css" media="screen" />
 
<!-- В следующей строке кода загружается файл вложенных таблиц стилей CSS шаблона, находящийся в папке шаблона. -->
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template.css" type="text/css" />
 
<!-- В следующих четырех строках кода загружается среда Blueprint CSS Framework и файл вложенных таблиц стилей CSS шаблона для языков с левосторонним письмом. Если вы не собираетесь пользоваться данными средствами, удалите эти строки кода. -->
<?php if($this->direction == 'rtl') : ?>
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/blueprint/plugins/rtl/screen.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/css/template_rtl.css" type="text/css" />
<?php endif; ?>
 
<!-- В следующей строке кода из папки шаблона загружается файл сценария JavaScript для шаблона. По умолчанию он пуст. -->
<script type="text/javascript" src="/<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/js/template.js"></script>
</head>
Во-первых, следует заметить, что в рассматриваемый здесь файл входит объявление DOCTYPE типа HTML-документа. Это означает, что тип документа полностью определяется шаблоном. И в этом есть определенный смысл, если учесть, что шаблон управляет всем представлением веб-сайта. Для того чтобы убедиться в этом на практике, перейдите к диспетчеру шаблонов в Joomla, откройте исходный стиль шаблона Beez5 - Default и измените значение параметра html version с xhtml на html5.

 

Затем отобразите страницу Fruit Shop (Фруктовая лавка) и просмотрите исходный код данной страницы. В нем вы увидите дескриптор <! DOCTYPE html> вместо <!DOCTYPE html PUBLIC "-//W3C//DTD XH...">.

Во-вторых, обратите внимание на то, что файл шаблона содержит элементы meta, title и script в дескрипторе headтипа HTML-заголовка. Эти элементы можно изменять динамически в коде, если есть такая потребность. Например, элемент title часто изменяется для каждой страницы веб-сайта, но другие элементы могут быть определены здесь и использованы без всяких изменений на всех страницах веб-сайта.

И в-третьих, следует иметь в виду, что данный файл является обычным файлом исходного кода РНР, а следовательно, в нем можно выполнять любые команды языка РНР. И это дает немало возможностей для интересного экспериментирования с шаблоном.

 


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код