Современная, быстрая и удобная система управления сайтом

Настройка главной страницы сайта

Главная страница — особая и ей уделено больше возможностей. В первую очередь стоит отметить, что вывод главной возможен двумя способами.

Первый — как и остальные full-записи, где можно указать модульную сетку и шаблон заголовков.

Второй вариант немного сложнее, поскольку базируется на понятии юнит (unit). Юниты — это небольшие блоки, которые можно размещать в произвольном виде на главной.

Вывод главной юнитами имеет более высокий приоритет, поэтому когда опция «Включить юниты для главной» отмечена, прочие настройки для главной игнорируются.

Для начала давайте ознакомимся с «типовым» вариантом вывода главной, а для этого опцию «Включить юниты для главной» снимем.

Снимем опцию Включить юниты для главной

Главная страница теперь выводится как и другие full-страницы, которые мы рассмотрели ранее.

Обычный вывод главной

Но, поскольку главная — особая страница, то часть её настроек вынесена на отдельную одноимённую вкладку.

Вкладка настроек главной

Настроек достаточно много — это результат эволюционного развития MaxSite CMS, когда мы постепенно добавляли новые возможности для построения главной страницы. Возможно, вы захотите использовать все эти варианты (тем более, что они «типовые» для сайтов), но наибольшие возможности вы получите только через юниты.

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

Основы работы с юнитами

Давайте опять включим опцию «Включить юниты для главной», чтобы задействовать вывод через юниты. Сами по себе юниты — это обычный текст, но он может задаваться двумя вариантами. Первый — через опцию «Юниты для главной», а второй через отдельный файл units.php.

В Default-шаблоне используется файл, на что указывает отмеченная опция «Использовать units.php», а также ссылка на редактирование этого файла.

Вкладка настроек юнитов главной

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

@module default/pages2
@module default/pages1

Команда @module загружает модуль указанного юнита. Сами модули располагаются в каталоге шаблона modules, где главным файлом является index.php. Здесь нужно понять, что модуль — это не юнит, а лишь некий «загрузчик» файла с юнитами. Пока это кажется запутанным, но со временем вы разберетесь. Смысл модулей в том, чтобы упростить подключение юнитов: это особенно актуально, когда на главной выводится сразу множество юнитов.

Чтобы не редактировать units.php, мы снимем опцию «Использовать units.php» и скопируем текст из него в опцию «Юниты для главной».

Юниты для главной

Теперь мы можем управлять выводом через эту опцию («Юниты для главной»).

Файл units.php мы пока не трогаем.

Сейчас вы можете «поиграть»: например оставить вывод только одного модуля, или поменять их местами. Посмотрите как при этом меняется вывод на главной.

Описание юнитов

Как я уже отметил, юниты — это не что иное, как обычный текст. Сейчас у нас выводятся два модуля, которые отвечают за вывод записей. Предположим, что нам нужно перед верхним блоком вывести какой-то свой текст.

Любой юнит описывается так:

[unit] 
... это и есть юнит
[/unit] 

Внутри юнита указываются пары «ключ = значение». У юнитов довольно много «ключей», рассмотрим некоторые. Например ключ html позволяет выводить произвольный html-код (или обычный текст, всё равно).

[unit] 
html = <div class="t-green t-center mar30-tb">Мой первый юнит! :-)</div>
[/unit]

Разместите этот блок в опции «Юниты для главной» и посмотрите как он появился на главной странице.

Мой первый юнит

Значение ключа должно быть записано в одну строчку, но что делать, если текст требует переноса или его слишком много? Для этого нужно использовать конструкцию _START_ и _END_

[unit] 
html = _START_
	<div class="t-green t-center mar30-tb">
		Мой первый юнит! :-)
	</div>
_END_
[/unit]

Юнитов может быть сколько угодно и все они выводятся последовательно. Это позволяет создавать сложные конструкции, который особенно пригодится для вывода html-кода, где каждый блок может быть вложен в другой.

- этот юнит открывает блок DIV
[unit]
html = <div class="t-green t-center mar30-tb">
[/unit]

- здесь выводится какой-то текст
[unit]
html = <b>Какой-то полужирный текст</b>
[/unit]

- и юнит, закрывающий /DIV
[unit]
html = </div>
[/unit]

Обратите внимание, что текст вне [unit] [/unit] игнорируется и часто используется просто как комментарий к юниту.

Ключ «file» и «last-pages.php»

Ключ file задаёт «обработчика» юнита — это файл, который принимает данные юнита и что-то с ним делает. В 99% случаев это файл last-pages.php. Этот файл выполняет роль буфера между юнитом и возможностью MaxSite CMS по выводу записей с помощью мощного шаблонизатора (page_out). У него много параметров и, кроме этого, он активно развивается, поэтому его изучение и описание займёт много времени. Вместо это мы рассмотрим лишь ту часть, которая достаточно проста и наиболее востребована.

Как это работает?

В юните могут быть как предопределённые ключи, о которых знает MaxSite CMS, так и совершенно произвольные, но которые знает файл file.

Рассмотрим такой юнит:

[unit]
file = last-pages.php

limit = 3

line1 = [title]
line2 = [cat][date]
line3 = 
line4 = 
line5 = [read]

block_start = <div class="mar30-t">
block_end = </div>

page_start = <div class="pad20 mar30-b bordered">
page_end = </div>

title_start = <h2 class="mar10-tb">
title_end = </h2>

read = Читать дальше →
[/unit]

MaxSite CMS понимает только ключ «file». Остальные ключи для неё ничего не значат. Зато эти ключи понимает обработчик — файл last-pages.php.

Данный юнит выведет 3 последние записи сайта в таком виде:

Юнит для вывода 3-х записей

Ключ limit задаёт количество записей для вывода.

Ключи line1...5 — это «линии вывода», где line1, line2 и line3 выводятся до текста записи, а line4 и line5 — после.

Ключи block_start и block_end задают html-код начала и конца блока юнита. Это общий контейнер для записей. Здесь используется DIV с классом mar30-t для 30px верхнего отступа.

Аналогично работают ключи page_start и page_end, но только для каждой записи в цикле вывода. Здесь мы также используем DIV с классами для отступов и визуальной границей.

В «линиях» используются шаблонизация вывода: мы указываем некий «псевдокод», а MaxSite CMS заменит его на реальный заголовок, рубрики, метки, даты, ссылка на «читать далее» и т.п. Но при этом есть ряд ключей, вроде title_start, title_end, read, cat_start и т.д., которые указывают как именно оформить этот «псевдокод».

Файл last-pages.php и шаблонизатор page_out поддерживает много ключей. На мой взгляд такие сложные вещи лучше осваивать постепенно. Выше приведенный пример показывает основу, которая содержится почти в любом юните по выводу записей. Важный нюанс здесь в том, что большая часть работы с такими юнитами лежит в умении пользоваться классами Berry CSS.

Модули default

Давайте посмотрим на устройство default-модулей, которые подключаются как:

@module default/pages2
@module default/pages1

Как я уже отметил, все модули располагаются в каталоге шаблона modules. В админ-панели есть редактор текстовых файлов — Файлы.

Редактор файлов MaxSite CMS

В нём выберите default/pages1/index.php. В редактор загрузится текст этого файла.

Файл для редактирования

Мы видим по сути все те же ключи юнита, только обильно используются css-классы, некоторые из которых вы уже знаете. Например для title_start указан цвет текста t-gray800, который вы можете изменить на какой-то другой.

Когда вы начинаете изменять файлы шаблона, то учитывайте тот факт, то все изменения будут утеряны после обновления MaxSite CMS. Чтобы этого не случилось, сделайте копию Default-шаблона и работайте уже с ним.

Все шаблоны находятся в каталоге application/maxsite/templates. Сделайте новый каталог, например «mytemplate» и скопируйте в него файлы из default. После этого в Основных настройках перейдите по ссылке Шаблон сайта и выберите свой шаблон.

Чтобы вам было проще определить свой шаблон, отредактируйте в нем файл info.php.

Теперь, даже после обновления системы, изменения не будут потеряны.

Кроме этого, вы можете взять за практику вначале сделать копии файлов, а уже после их редактировать. То есть вы можете сделать копии каталогов модулей pages1 и pages2 (например как mypages1 и mypages2) и работать уже с ними. В таких случаях обновление не затронет ваши файлы.