Файл шаблона index.php
Файл состоит из разметки (x)HTML и программного кода РHP.
Первая строка файла закрывает к нему прямой доступ:
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
Далее видим объявление DOCTYPE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" >
Для xml:lang="" lang="" следует вставить php-код
<?php echo $this->language; ?>
DOCTYPE “говорит” браузеру как нужно понимать страницу. Strict - значит что html код будет обрабатываться в строгом соответствии стандартам. Transitional DOCTYPE значит что интерпретация может отличаться от них.
Файл пустого шаблона выглядит примерно так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>">
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="/<?php echo $tmpTools->templateurl(); ?>/css/reset.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->baseurl(); ?>templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->baseurl(); ?>templates/system/css/general.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->templateurl(); ?>/css/layout.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->templateurl(); ?>/css/modules.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->templateurl(); ?>/css/menus.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->templateurl(); ?>/css/template.css" type="text/css" />
<link rel="stylesheet" href="/<?php echo $tmpTools->templateurl(); ?>/css/editor.css" type="text/css" />
<script language="javascript" type="text/javascript" src="/<?php echo $tmpTools->templateurl(); ?>/js/script.js"></script>
<script type="text/javascript">
</script>
<style type="text/css">
</style>
<!--[if lte IE 6]> <link href="/<?php echo $tmpTools->templateurl(); ?>/css/ie6only.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if lte IE 7]> <link href="/<?php echo $tmpTools->templateurl(); ?>/css/ie7only.css" rel="stylesheet" type="text/css" />
<![endif]-->
</head>
<body>
<jdoc:include type="message" />
<jdoc:include type="module" name="breadcrumbs" /> <jdoc:include type="modules" name="top" />
<jdoc:include type="modules" name="left" />
<jdoc:include type="component" />
<jdoc:include type="modules" name="right" />
<jdoc:include type="modules" name="debug" />
</body>
</html>
С помощью тега head выводим скрипты в head:
<jdoc:include type="head" />
А также используем условные комментарии, о которых писали ранее, для совместимости с IE
<!--[if lte IE 6]>
<link href="/ie6only.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if lte IE 7]>
<link href="/ie7only.css" rel="stylesheet" type="text/css" />
<![endif]-->
Вставляем переменные в шаблон
Эти переменные пригодятся вам в файле шаблона:
Язык: $this->language;
Сайт: $mainframe->getCfg('sitename');
Почта администратора: $mainframe->getCfg('mailfrom');
Шаблон: $this->template;
URL: JURI::base();
Вставляем модуль в шаблон
Полный синтаксис инструкции вставки вывода модулей выглядит так:
<jdoc:include type="modules" name="location" style="option" />
Стиль вывода атрибута style определён в файле templates/system/html/modules.php
table - модули отображаются в виде таблицы с одной колонкой
horz - модули выводятся горизонтально каждый в отдельной ячейке таблицы
xhtml - каждый модуль помещается в отдельном элементе div
rounded - модули выводятся в формате, который позволяет выводить рамку с скругленными углами. 4 элемента div, расположенные друг в друге.
none - содержимое модуля выводится без контейнеров и заголовка
Скрытие кода разметки делаем, вставляя код PHP:
<?php if($this->countModules('left')) : ?>
<div id="sidebar">
<jdoc:include type="modules" name="left" style="xhtml" />
</div>
<?php endif; ?>
В природе есть ещё несколько методов подсчёта модулей. Предположим, что в левой колонки у нас 4 модуля и в правой 3, в этом случае:
'left and right' даст 1, потому что модули есть в обоих колонках
'left or right' - 1, потому что хотя бы в одной колонке модули есть
'left + right' - 7, потому что в двух колонках всего 7 модулей