Начало index php showtopic

Часть 2. Создание шаблона

Что бы до конца понять, как работает код этой и других страниц, нужно знать хотя бы основы программирования, HTML, PHP, CSS. Всё это вы можете найти в разделе «Программирование».

Для удобства дальнейшей работы настройте компьютер таким образом, что бы все текстовые файлы сайта с расширением .php, .css, .hml, .html и т.д. открывались в редакторе Notepad++.

При запросе, полученном от браузера, система обращается к файлу index.php шаблона, установленного по умолчанию. Давайте внимательно изучим содержимое этого файла, так как именно он отвечает за составление кода страницы.

Откройте файл. Путь к файлу, если шаблон уже установлен на сайт (см. глава 2, «Установка базовой основы»), таков:

〉〉〉 OSPanel > domains > shablon1 > template > имя_вашего_шаблона > index.php

где shablon1 — это название специального сайта, установленного на локальном сервере, как это описано в главе 2; соответственно, вы должны вписать здесь своё название. Если всё сделано правильно, то вы увидите на экране вот такую «картинку»:

Код на PHP

В начале файла находится код, написанный на языке PHP ; такой код присутствует практически во всех шаблонах и традиционно начинается с информативного блока, в котором содержится некоторая информация (версия Joomla, название шаблона, автор, тип лицензии и т.д.). Так как каждая строка начинается с символа * , а весь блок заключён в /** . */ , то эта информация игнорируется системой и предназначена только для разработчиков.

3 /**
4 * @package Joomla_3.8.Site
5 * @subpackage Templates.WDS_template_number_1
6 * @avtor WDS
7 * @copyright
8 * @license GNU GPL
9 */

Сразу после блока информации следует стандартное выражение, запрещающее прямой доступ к файлу. Для чего необходима такого рода защита и как это всё работает вы можете прочитать в статье Программирование > CMS Joomla > «Запрет прямого доступа (константа ‘_JEXEC’)» , а пока нужно только запомнить, что такая строка встречается в начале всех файлов с расширением .php кроме файла index.php , находящегося в корне сайта:

Далее создаются все необходимые переменные, которым присваиваются соответствующие значения, и подключаются:

  • JS Frameworks;
  • Bootstrap;
  • скрипты JavaScript, находящиеся в соответствующей папке шаблона;
  • каскадные таблицы стилей (CSS):

14 //Создание переменных и получение данных
15 $config = JFactory::getConfig();
16 $logo = $this->params->get(‘logo’);
17 $doc = JFactory::getDocument();
18 $app = JFactory::getApplication();
19 $templateparams = $app->getTemplate(true)->params;

20 // Добавление JS Frameworks и Bootstrap CSS
21 JHtml::_(‘bootstrap.framework’);
22 JHtml::_(‘bootstrap.loadCss’, true, $this->direction);

23 //Подключение JavaScript и CSS
24 $doc->addStyleSheet(JUri::base().’/templates/’.$this->template.’/css/stl_tpl_wds_v1.css’);
25 $doc->addStyleSheet(JUri::base().’/templates/’.$this->template.’/css/main_menu.css’);
26 $doc->addStyleSheet(JUri::base().’/templates/system/css/system.css’);
27 $doc->addScript(‘/templates/’.$this->template.’/JavaScript/IntExp_HTML5.js’);

Последний блок в коде PHP применяется для изменения расположения основного контента. В этом блоке переменная $contentwidth получает соответствующее значение (left, right или mid) в зависимости от наличия модулей в левой и правой колонках; в дальнейшем вид страницы будет зависеть именно от этого значения:

28 // Блокировка пустых LEFT и RIGHT, ввод значений в переменную для настройки .
29 if($this->countModules(«left»)&&!$this->countModules(«right»)) < $contentwidth="left";>
30 if($this->countModules(«right»)&&!$this->countModules(«left»)) < $contentwidth="right";>
31 if($this->countModules(«left»)&&$this->countModules(«right»))

На этом код на PHP заканчивается и начинается код на HTML .

Код на HTML

В начале, в соответствии с требованиями HTML , следует указание типа документа:

Затем следует тэг . Здесь находится информация, необходимая для правильной работы браузера, а так же устанавливается язык сайта по умолчанию:

Обратите внимание: информация, заключённая в теги . —> игнорируется системой и нужна лишь для удобства работы с кодом.

Далее подключается HEAD>:

О том, что такое jdoc:include, читайте в Программирование > CMS Joomla.

И вот теперь следует открывающий тэг :

Между открывающим и закрывающим тегами и находится специальный контейнер, в которое вложено всё содержимое сайта, за исключением Footer («подвала»). Наличие этого контейнера не обязательно, но такой контейнер даёт определённое преимущество в оформлении, даёт возможность адаптировать страницы к разным размерам мониторов и так далее (об этом будет рассказано позднее):

Создание содержимого страницы начинается с HEADER («шапки» сайта):

После открывающего тэга в ставляется изображение, которое указано в панели управления (см. Часть 1, глава 8):

54
55

56
57
58 baseurl ?>»> echo htmlspecialchars($logo); ?>» alt=»get(‘sitename’);?>» title=
«get(‘sitename’);?>»/>
59

60
61
62 baseurl ?>»>
get(‘sitetitle’));?>
63
64

Этот код даёт команду вставить изображение в шапку сайта, а если изображение не найдено, то будет выведено название сайта, указанное в соответствующем поле в панели управления.

И последняя часть кода в HEADER создаёт соответствующую модульную позицию, после которой следует закрывающий тэг:

Рассмотрим внимательнее эту часть кода.

Заявление jdoc:include даёт указание системе создать модульную позицию, на что указывает type=»modules» , с именем name=»header» и стилем style=»xhtml» . Это стандартный код для создания модульных позиций.

При необходимости вы можете при помощи такого кода создавать новые модульные позиции.

Далее таким же образом создаётся модульная позиция для главного меню сайта:

Здесь стоит обратить внимание на то, что код, который даёт указание создать модульную позицию, находиться внутри конструкции кода на PHP:

Такие конструкции при создании элементов страницы встречаются очень часто; это нужно для того, что бы в случае отсутствия самого элемента (в данном случае – главного меню) модульная позиция не создавалась и место на странице под этот элемент не резервировалось.

После модульной позиции для главного меню таким же образом создаётся позиция для вывода пути на сайте breadcrumbs:

После breadcrumbs создаётся основная секция, в которой будут находиться основной контент и различные модули:

Обратите внимание на некоторые особенности основной секции.

Во-первых, в ней будут созданы модульные позиции для левой и правой колонок LEFT и RIGHT, модульная позиция TOP-CONTENT («над контентом») и BOTTOM-CONTENT («под контентом»), но не будет создана модульная позиция для контента, поэтому основной контент просто займёт всё остальное место.

Во-вторых, для основного контента будет создана отдельная секция, которая будет представлена в трёх вариантах: content-left, content-right, content-mid, при этом каждый вариант будет настроен отдельно при помощи таблиц CSS. В зависимости от значения переменной $contentwidth, полученного вначале, в коде страницы будет использоваться один из этих вариантов; соответственно, основной контент будет располагаться слева (content-left) или справа (content-right) от модулей либо по середине (content-mid).

Итак, читаем и разбираем код далее:

Думаю, всем уже понятно, что была создана модульная позиция LEFT.

А это уже создана секция основного контента, о чём было сказано выше. Обратите внимание на то, что при помощи кода PHP в названии класса к слову content добавляется слово, хранящееся в переменной $contentwidth.

Вышеуказанный код, как вы поняли, создаёт позицию «Над контентом», но только в том случае, если в неё есть что вставлять, т.е. какой-либо модуль. Если модуля не окажется, то и позиция не будет создана.

Далее следует код основного контента:

Этот код (строка 102) вставляет на страницу компонент (материал так же является компонентом), но в некоторых случаях выдаёт специальное сообщение системы (строка 100).

Далее по уже известному принципу создаются модульные позиции BOTTOM-CONTENT и RIGHT:

Здесь ничего сложного нет, но нужно обратить внимание на присутствие двух закрывающих тэгов . Первый закрывающий тэг (строка 110) относится к тэгу секции основного контента (строка 90), а второй – к тэгу секции MAIN_SECTION (строка 82).

И последнее, что мы видим внизу основного блок-контейнера («b-container», строка 49):

Строка не создаёт какой-либо видимый элемент на странице, но имеет очень важное значение: он располагается под всеми элементами, расположенными выше; это достигается за счёт настроек в файле каскадных таблиц стилей stl_tpl_wds_v1.css :

Для чего это нужно? Это нужно для того, что бы следующий ниже элемент начинался только после того, как на странице закончатся все предыдущие.

Дело в том, что все элементы на странице выстраиваются в том порядке, в котором расположены в коде, но длина каждого элемента может быть разной! Если, к примеру, на сайте слева и справа от основного контента находятся различные модули, то длина каждого столбца может быть неравномерной, так как вряд ли кто-то будет создавать абсолютно одинаковые модули по высоте и располагать их симметрично с обоих сторон! Но иногда возникает ситуация, когда очередной элемент страницы должен быть расположен строго под всеми другими независимо от их высоты (как раз то, что и нужно для «подвала» сайта), и вот здесь приходит на помощь созданный класс «clr», который чётко отделяет все верхние элементы от тех, которые будут созданы ниже.

Код в строке 119 нужен для корректного отображения FOOTER — «подвала» сайта, который не входит в основной блок-контейнер. Для чего это сделано?

Обратите внимание на то, что «подвал» сайта располагается в самом низу, под всеми элементами страницы, что обеспечивает наличие кода в строке 118, о котором было рассказано выше. Но проблема в том, что высота основного блок-контейнера зависит от высоты страницы, а так как все страницы разные по объёму текста и наличию изображений, то если эта высота окажется слишком маленькая (например, при выводе ошибки 404), «подвал» сайта окажется не внизу, а в середине экрана, а это смотрится не совсем красиво. Что бы «привязать» «подвал» сайта к низу экрана, эта модульная позиция выведена за пределы блок-контейнера, но в самом блок-контейнере под эту позицию обязательно зарезервировано место при помощи кода в строке 119, причём без дополнительной обёртки в . . Это место имеет строго определённую высоту, определённую в файле стилей stl_tpl_wds_v1.css :

Сам же FOOTER при помощи файла стилей размещается таким образом, что он «привязывается» к низу экрана, но об этом будет подробно рассказано в главе 5 «Работа с CSS».

И последнее, что создаёт код страницы – FOOTER.

Данный код объяснений не требует, здесь всё понятно.

Строка 130 создаёт надпись: «WDS», указывающую на авторские права; здесь вы можете разместить любой свой текст по своему усмотрению, например, «Все права защищены» и т.п.

Строка 131 создаёт надпись «© 2018 Copyright». Код, написанный на PHP, нужен для вставления соответствующей даты (символ «Y» указывает на год).

Этот код создаёт последнюю позицию на сайте, находящуюся в левом углу «подвала» сайта – f-menu. Здесь можно будет в дальнейшем разместить информацию, которая обычно всегда присутствует в «подвале» сайта: обратная связь, контакты и тому подобное.

В самом конце следуют закрывающие тэги:

Теперь вы знаете, из чего состоит и для чего нужен файл index.php, как он управляет созданием кода страницы. Теперь вы знаете, как добавить или убрать модульную позицию, надписи и так далее, а значит, уже можете самостоятельно «подогнать», переписать код этого файла под создаваемый вами шаблон. Но так как этот файл только создаёт различные элементы, но не указывает для них точные координаты, размеры и оформление, то самое время перейти к работе с каскадными таблицами стилей CSS.

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!

Источник

Читайте также:  Python засечь время выполнения функции
Оцените статью