MaxSite.org 11 лет
Блог вебмастера о сайтостроении

Общие вопросы

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

MaxSite CMS / Общие вопросыПросмотров: 7838 (155)

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

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

Читать дальше...

Вывод блоков записей в шаблоне

MaxSite CMS / Общие вопросыПросмотров: 10333 (200)

В MaxSite CMS 0.852 появился новый PHP-класс Block_pages задача которого упростить создание блоков записей в шаблоне. Традиционно вывод записей блоками достаточно сложная задача и вебмастера стараются её обходить стороной. Вместо этого предлагается типовой вариант вывода записей.

Самый распространенный пример — вывод главной страницы сайта. В MaxSite CMS хоть и существуют различные варианты, но они достаточно простые и очевидные. Если потребуется что-то сложное, например вывод колонками, то необходимо программировать такой вариант индивидуально. Кроме того остается нерешенным вопрос вывода нескольких блоков записей на главной. Скажем, вверху одиночная запись, ниже две колонки по рубрике, а ещё ниже — только миниатюры в ряд.

Новый Block_pages как раз и призван упростить написание такого вывода. Он сам получает данные записей для вывода и сам же организует необходимые циклы вывода.

Читать дальше...

Наборы компонентов для любой записи

MaxSite CMS / Общие вопросыПросмотров: 17020 (313)

Иногда стоит задача менять наборы компонентов шапки и подвала на разных страницах сайта. Например на какой-то странице выводить только верхнее меню, а на другой вовсе исключить вывод компонентов. Формально для таких вещей делается main-файл (в каталоге main), где в html-секции шапки прописываются нужные компоненты.

Но, main-шаблон больше используется для смены модульной сетки, где меняются расположение элементов (например правый и левый сайдбар), поэтому если и делать наборы компонентов, то придется их делать для каждого main-шаблона. Это довольно утомительно.

Оптимальным вариантом был бы выбор набора компонентов при редактировании записи через дополнительные мета-поля.

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

Читать дальше...

Шаблонизатор или форматированый PHP+HTML вывод в MaxSite CMS

MaxSite CMS / Общие вопросыПросмотров: 10534 (171)

Шаблонизатор как правило применяется там, где требуется разделить работу программиста и верстальщика. Программист подготавливает данные для вывода, а верстальщик делает разметку в привычном HTML, без оглядки на программый код. Раньше, когда сайты были не такими интерактивными и «умными», подход неплохо работал. Со временем логика вывода усложнялась и это приводило к усложению самого шаблонизатора и добавлению новых команд. В итоге некоторые шаблонизаторы имеют настолько сложный и запутанный синтаксис, что проще выполнить логику на чистом PHP.

На текущий момент при создании PHP+HTML кода используется три основных подхода.

  • PHP - сам по себе неплохой шаблонизатор. Поэтому за базу берется HTML-код с PHP-вставками в виде echo или короткого синтаксиса.
  • Всё есть PHP. HTML выводится в виде строк череp echo. Как вариант - вывод через специальные php-функции.
  • Отдельный шаблонизор - подготавливаются данные, а сам вывод делается в отдельном tpl-файле.

Есть ещё подход, где нет никакой системы, а вариант вывода определяется по ситуации. Мы его рассматривать не будем, хотя он, насколько я понимаю, и преобладает в вебстроительстве.

Возьмем для рассмотрения простой пример вывода div-блока с текстом.

Читать дальше...

Модульная структура сайта

MaxSite CMS / Общие вопросыПросмотров: 13205 (214)

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

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

В какой-то мере ситуацию «выправляет» использование фреймворков, которые заставляют вебмастера следовать предустановленному порядку. Достаточно сравнить каталоги CodeIgniter и Zend Framework чтобы в этом убедиться. И здесь следует обязательно отметить тот факт, что оба фреймворка используют шаблон проектирования MVC (Модель-Вид-Контроллер). То есть теоретически, если следовать MVC, разработчики должны были получить примерно одинаковую структуру файлов. На деле же этого не происходит. Если же посмотреть другие фреймворки или CMS, то мы увидим ещё больше различий и несоответствий.

Читать дальше...

Форматированный вывод записей в MaxSite CMS

MaxSite CMS / Общие вопросыПросмотров: 7343 (116)

Головная боль любого верстальщика - смесь HTML и PHP-кода. Особенно запутанным будет код, в котором используется множество вложенных тэгов, css-классы и стили.

При выводе записей помощью PHP-кода получаются необходимые данные, но для вывода в браузер, нужно его оформить в HTML. Сложность здесь в том, что на уровне PHP невозможно заранее определить какие именно данные потребуются для вывода.

Например - заголовок записи. Если это главная страница, то это должна быть ссылка. Если одиночная, то просто H1. Если это какой-то виджет, то просто текст.

Именно по этой причине в MaxSite CMS с самых первых версий используются универсальные функции mso_page_...() в которых можно указать HTML-оформление. Этот подход на порядок проще, чем заставлять верстальщика оперировать PHP-переменными: код был бы в несколько раз сложней и запутанней (одни if-условия чего стоят...).

Читать дальше...

Формирование колонок в MaxSite CMS

MaxSite CMS / Общие вопросыПросмотров: 11532 (182)

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

Сама по себе верстка колонок несложная и как правило базируется на нескольких float-блоках внутри одного родителя. Что-то вроде такого:

<div class="box">
    <div class="left w33"> первый </div>
    <div class="left w33"> второй </div>
    <div class="left w33"> третий </div>
</div>

Ну и разные вариации с wrap-блоками, разными ширинами и пр.

Сложности возникают, когда необходимо организовать колонки, состоящие из нескольких вложенных блоков. Например на главной странице две колонки, в каждой из которых по 3 записи из двух рубрик. И хотя основа css-стилей останется той же, но придется организовывать некий счетчик рубрик, записей и уже от этого вставлять открывающие и закрывающие DIV'ы.

В MaxSite CMS 0.74 (но лучше использовать последний prelatest), появился отдельный php-класс, который берет на себя организацию колонок, избавляя вебмастера от необходимости вручную что-то считать и прописывать тэги/css.

Читать дальше...

РЕКЛАМА
Купить сухие смеси можно здесь |

О сайте

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