Внимание! Данная запись отмечена как устаревшая и/или потерявшая актуальность! Возможно автор уже передумал и теперь придерживается другой точки зрения, нежели изложенная в тексте ниже.

Произвольный вывод главной страницы сайта

MaxSite CMS / Основы MaxSite CMSПросмотров: 7406 (165)

На решение этой задачки у меня ушло более полугода. За это время были разные решения, но в процессе отладки и тестирования, пришлось от них отказаться. Суть — сделать так, чтобы блогер мог произвольно выстроить вывод главной страницы сайта из админ-панели. Нечто похожее уже давно присутствует в MaxSite CMS — компоненты шапки и подвала, но в случае главной задача усложняется тем, что опций каждого блока вывода может содержать очень много разных настроек.

Впрочем, всё это «лирика». Покажу на примерах, каким образом в начиная с MaxSite CMS 0.853 мы можем произвольно настраивать главную страницу.

В Настройках шаблона — Главная появилась опция «Свой вариант вывода главной».

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

Напомню, что речь идет о шаблоне Default.

Эта настройка — секционные опции, где в качестве каждого блока используется т.н. unit. Каждый unit должен иметь обязательный параметр file, в котором указывается имя подключаемого php-файла.

Сами php-файлы располагаются в type/home/units текущего шаблона или shared-каталога.

Например в shared-каталоге есть файл home-last-page.php, который выводит последнюю запись сайта. В «Свой вариант вывода главной» указываем:

[unit]
file = home-last-page.php
[/unit]

С таким же успехом мы можем использовать любой другой готовый unit-файл для типа home. Более того, unit-файлы можно использовать многократно. Например:

[unit]
file = home-last-page.php
[/unit]
 
[unit]
file = home-last-page.php
[/unit]

— выведет два блока с последними записями сайта.

В шаблоне Default я включил два unit-файла:

  • 2col-cats.php — две рубрики в две колонки
  • mini-title.php — миниатюры записей

Пример настройки главной:

[unit]
file = home-last-page.php
[/unit]
 
[unit]
file = 2col-cats.php
cats = 1,3
limit = 5
[/unit]
 
[unit]
file = mini-title.php
[/unit]

Для 2col-cats.php указываются дополнительные параметры — номера рубрик и количество записей в каждой колонке. Файл mini-title.php настроек не имеет (на момент написания статьи).

Результат:

Главная

При использовании unit-файлов из shared-каталога, следует учитывать, что в них используются различные опции. Например для home-cat-block-XXX.php следует отметить опции «Блоки рубрик на главной» и указать номера рубрик. То есть каждый unit-файл имеет какие-то свои особенности.

После отладки и настройки главной, есть смысл в опции «Время кеширования главной страницы» задать время кеширования. Поскольку каждый блок может генерировать кучу запросов к базе данных, то с помощью кеша, мы полностью снимаем эту проблему. Поддержка же этой опции полностью ложится на unit-файл.

Технические подробности

Каждый unit-файл располагается в type/home/units. В этом файле будет доступна переменная $UNIT, которая представляет собой массив с ключами из секционной опции. В нашем примере для 2col-cats.php будет массив:

array(
    file => 2col-cats.php
    cats => 1,3
    limit => 5
)

Что с этим делать решается уже на уровне unit-файла.

Вывод данных в unit-файле может быть произвольным. В shared-файлах используется «типовой» вариант, а в Default я использую новый php-класс Block_pages. В варианте с Block_pages несколько проще организовать вывод данных (меньше программирования).

В заключении хотелось бы отметить, что с реализацией «произвольной главной», MaxSite CMS достигла состояния, когда можно менять практически любую часть шаблона: компоненты, custom-файлы, main-шаблоны, type-файлы, type_foreach-файлы, css-стили/профили и, наконец-то, unit-файлы для главной.

Комментариев: 5 RSS

1Кирилл26-08-2013 05:27

Максим, благодарю за подробную инструкцию. Но подскажи пожалуйста - на чем лучше строить шаблоны? На default или D2? Просто я смотрю Дефолт шаблон уже обскакал D2 по своей простоте создания шаблонов на его основе.

2MAX26-08-2013 08:37

Сейчас между ними нет принципиальной разницы. Отличия разве что в css, но они итак будут разными у разных шаблонов. Компонентов больше в default. В остальном у них нет отличий.

3Артур01-12-2015 16:41

Здравствуйте! Спасибо, ваша статья очень помогла. Я вывел на главной, под основным текстом, четыре блочка с последними записями и миниатюрами НО, мне не нужна на главной пагинация. Не могли бы подсказать, как ее для главной отключить..? Использую шаблон default 0.93

4MAX01-12-2015 17:17

Если это юнит last-pages.php, то там есть параметр pagination.

5Артур02-12-2015 10:33

Спрасибо! Разобрался, получилось

Оставьте комментарий!

Комментарий будет опубликован после проверки. Вы соглашаетесь с правилами сайта.

(обязательно)

РЕКЛАМА
Где купить стероиды - форум в России. | Смотрите на сайте компрессор купить в оренбурге. |

О сайте

Здесь вы получите самую полную информацию о создании сайтов на MaxSite CMS.

Рейтинг@Mail.ru