Сознание шаблона сайта в Joomla 3. Начало

Для Joomla созданы сотни шаблонов, которые можно использовать для того, чтобы отображать данные сайта в интернете. Есть платные шаблоны, есть бесплатные, но это вовсе не означает, что всегда нужно использовать готовые решения. Иногда при проектировании нового сайта требуется начать его делать с нуля. Joomla идеально для этого подходит, нужно лишь только разобраться в том, как создавать шаблоны сайтов. В этой статье рассмотрим минимальный объём данных, необходимых для начала работы по созданию шаблона сайта с нуля для CMS Joomla 3.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Файловая структура шаблона сайта для CMS Joomla 3

Первым делом рассмотрим, какие папки и файлы требуются для создания минимального шаблона сайта для CMS Joomla 3.

Лирическое отступление про кодировку файлов.

Сразу отмечу, что кодировка файлов должна совпадать с кодировкой файлов на сервере. Обчно это UTF-8, но лучше открыть любой из файлов на сервере и посмотреть, в какой кодировке он хранится. Ещё лучше, конечно, наверняка знать кодировку файлов на сервере, но для этого нужно лезть в его настройки. Серверов может быть несколько (например, Apache и NGiNX) и у них эти кодировки обычно явно задаются в конфигах. В общем, можно ничего не знать, о том, как устроена работа сервера, но если с кодировкой будут проблемы, это станет видно по кракозябрам вместо текста, набранного на русском языке (кирилице). если пошли кракозябры, — значит нужно разобраться с кодировкой и выставить правильную.

Итак, минимальная файловая структура шаблона сайта для CMS Joomla 3 достаточная для того, чтобы шаблон можно было установить и он начал работать:

└─── rezon
    ├── css
    │   ├── index.html
    │   └── template.css
    ├── images
    │   └── index.html
    ├── language
    │   ├── en-GB
    │   │   ├── en-GB.tpl_rezon.ini
    │   │   └── en-GB.tpl_rezon.sys.ini
    │   └── ru-RU
    │       ├── ru-RU.tpl_rezon.ini
    │       └── ru-RU.tpl_rezon.sys.ini
    ├── component.php
    ├── error.php
    ├── favicon.ico
    ├── index.php
    ├── templateDetails.xml
    ├── template_preview.png
    └── template_thumbnail.png

Основная папка шаблона должна совпадать с его названием (для того, чтобы исключить возможную путаницу). Свой шаблон я назвал rezon. Все файлы шаблона должны находиться в этой папке.

Файлы-заглушки index.html во вложенных папках шаблона сайта

В папках шаблона, в которых будут находиться файлы с картинками, css, JavaScript и прочие, лучше заранее положить файлы index.html с простым содержанием типа:

<!DOCTYPE html><title></title>

Или вообще пустые. Это нужно для того, чтобы скрыть содержимое папок от любопытных глаз пользователей. Так как при некоторых настройках сервера, содержимое папок может отображаться в виде списка файлов, если в папке отсутствует индексный файл. А в папке может находиться информация, которая может помочь взломать сайт или информация приватного содержания. В общем, лучше не рисковать и выкладывать индексные файлы-заглушки. Это здоровая паранойя, которая поможет не нарваться на неприятности, связанные с недостаточной защитой данных.

Папки шаблона сайта

  • css — папка для хранения css-стилей шаблона сайта
  • js — папка для хранения JavaScript-файлов шаблона сайта
  • images — папка для хранения картинок шаблона сайта (именно шаблона, а не всех подряд картинок)
  • language — папка для хранения переводов фраз для сайтов со включенным режимом мультиязычности
    • en-GB — папка для файлов переводов фраз на английском языке
    • ru-RU — папка для файлов переводов фраз на русском языке
      • ru-RU.tpl_rezon.ini — папка для фраз переводов для фронтенда (сайта)
      • ru-RU.tpl_rezon.sys.ini — папка для фраз переводов для бэкенда (админки). Дополнительное расширение .sys.
        • Название может быть каким угодно, но принято называть файлы именно в таком формате:
          1. ru-RU — языковое обозначение
          2. .tpl_rezon — tpl_ (обозначение того, что файл принадлежит шаблону (сокращение template)), далее следует название шаблона.
          3. .sys — файл для бэкенда (админки)
          4. .ini — расширение файла (просто такое принято)

Пример файла ru-RU.tpl_rezon.ini

Так как в шаблоне будет применяться переменная TPL_REZON_XML_DESCRIPTION, то ей нужно присвоить значение:

TPL_REZON_XML_DESCRIPTION="Шаблон сайта для Joomla! 3.x. reZon, вёрска в формате HTML5. (ru-RU.tpl_rezon.ini)"

В файле локации английского языка en-GB.tpl_rezon.ini переменной TPL_REZON_XML_DESCRIPTION также должно быть присвоено значение в виде фразы на английском языке.

Пример файла ru-RU.tpl_rezon.sys.ini

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

  • Языковая переменная (принято писать ЗАГЛАВНЫМИ ЛАТИНСКИМИ БУКВАМИ, разделяя слова символом подчёркивания _)
  • Знак присваивания =
  • Значение переменной обязательно в кавычках "..." должно содержать фразу, которую требуется подставить в шаблон вместо названия переменной.

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

Итак, в файл ru-RU.tpl_rezon.sys.ini также вносим значение этой переменной:

TPL_REZON_XML_DESCRIPTION="Шаблон сайта для Joomla! 3.x. reZon, вёрска в формате HTML5. (ru-RU.tpl_rezon.sys.ini)"

В файл английской локации en-GB.tpl_rezon.sys.ini тоже нужно внести значение этой переменной.

Файлы template_preview.png и template_thumbnail.png шаблона сайта

Файлы template_preview.png и template_thumbnail.png шаблона сайта должны содержать картинку превьюхи шаблона. Так как эти файлы используются в Менеджере шаблонов сайта в админке Joomla, их лучше подготовить отдельно. Рекомендуемые размеры в пикселях:

  • template_preview.png — 640 х 480
  • template_thumbnail.png — 206 х 150

Файл favicon.ico шаблона сайта

Файл favicon.ico шаблона сайта — это файл с фавиконкой сайта. Есть масса способов его создать, пример по → этой ссылке.

Файлы component.php и error.php пока не будет разбирать. Для того, чтобы создать минимальный шаблон сайта, они могут быть пустыми или вообще отсутствовать (тогда их не нужно включать в файл templateDetails.xml).

Файл index.php шаблона сайта

Для того, чтобы убедиться, что шаблон работает, достаточно такого содержимого файла index.php:

<?php
defined('_JEXEC') or die;
?>

<!doctype html>
<html>
<head>
    <jdoc:include type="head"/>
</head>
<body>
 <div style="text-align:center;">
 <h1>Шаблон reZon</h1>
 <h2>Начало</h2>
 </div>
</body>
</html>

Файл templateDetails.xml шаблона сайта

Файл templateDetails.xml шаблона сайта содержит конфигурацию и связи всего шаблона. Его минимальное содержимое может быть таким:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 2.5//DTD template 1.0//EN" "https://www.joomla.org/xml/dtd/2.5/template-install.dtd">
<extension version="3.9" type="template" client="site">
	<name>rezon</name>
	<creationDate>5 August 2019</creationDate>
	<author>Aleksandr Zakharov</author>
	<authorEmail>muba4@yandex.ru</authorEmail>
	<authorUrl>https://mb4.ru</authorUrl>
	<copyright>Copyright (C) 2006 — 2019 MoonBase, Inc. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<version>1.0.2</version>
	<description>TPL_REZON_XML_DESCRIPTION</description>
	
	<files>
		<folder>css</folder>
		<folder>images</folder>
		<folder>language</folder>
		<filename>component.php</filename>
		<filename>error.php</filename>
		<filename>favicon.ico</filename>
		<filename>index.php</filename>
		<filename>template_preview.png</filename>
		<filename>template_thumbnail.png</filename>
		<filename>templateDetails.xml</filename>
	</files>
	
	<positions>
		<position>debug</position>
	</positions>
	
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.tpl_rezon.ini</language>
		<language tag="en-GB">en-GB/en-GB.tpl_rezon.sys.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.tpl_rezon.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.tpl_rezon.sys.ini</language>
	</languages>
	
	<config>
		<fields name="params">
		</fields>
	</config>
</extension>

Более подробный разор полей этого XML-файла см. в → этой статье.

Сборка шаблона, подготовка пакета и установка шаблона сайта в админке Joomla

После того, как все файлы подготовлены, их нужно запаковать в архив zip, в который должна входить и сама папка шаблона. Структура архива должна быть такая, которая приведена в самом начале этой статьи.

После того, как архив готов, шаблон можно установить на сайт. Если всё было сделано правильно, установка должна пройти без ошибок. После активации шаблона, он должен отобразить содержимое файла index.php.

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню