Бесплатная CMS для вашего сайта Разумная альтернатива WordPress

MaxSite CMS 0.78 (тестирование)

14-11-2012Reading time ~ 7 min.Versions 36288

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

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

Основная идея в том, чтобы вынести часть файлов из default-шаблона в общий shared-каталог. У нас так сложилось, что default-шаблон хранит файлы, которые могут использоваться другими шаблонами. В итоге default-шаблон получился достаточно объёмный и вебмастерам (новичкам) не всегда очевидна логика работы.

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

Я провёл некоторый анализ и составил список файлов и каталогов, которые действительно являются общими и нет смысла их копировать из шаблона в шаблон. Если сейчас не пойти на такую переделку, то default-шаблон распухнет еще больше.

Кратко расскажу что изменилось.

Все общие файлы вынесены в отдельный shared-каталог. Он находится выше чем шаблоны, поэтому не будет влиять на старые разработки. Default-шаблон остался в неизменом виде. Таким образом все старые шаблоны, которые используют default будут как и прежде работать.

Тут важный момент: теперь мы можем говорить о двух вариантах построения шаблона. Старый - на основе default и новый - на shared-каталоге. Технически это практически одно и тоже, но из-за некоторых изменений, парные файлы могут быть несовместимы. Например type-файлы из shared чуть по-другому подключают main-файлы. Так же есть и другие отличия. Так что не стоит смешивать эти два подхода в своем шаблоне.

Каталог shared/blanks содержит заготовки. Сейчас там create_a_new_template_old, custom-файлы и type_foreach-файлы. Эти файлы предназначены для копирования в свой шаблон.

CSS-cтили находятся в shared/css-less.

Каталог shared/functions хранит файлы, которые могут подключаться в functions.php шаблона. В default-шаблоне это аналог functions-template.php. Но в них есть различия. Файл не нужно копировать в свой шаблон, он подключается прямо из shared.

В каталог main я вынес main-start.php и main-end.php. Эти файлы нужны для работы шаблона, но их код как правило не меняется.

Каталог meta хранит мета-поля, которые могут использоваться всеми шаблонами.

Каталог options хранит файлы с функциями по работе с опциями. Здесь реализовано подключение ini-файл опций.

Каталог stock, традиционно содержит готовые скрипты. Подключать либо из shared, либо копировать в свой шаблон.

Каталог type содержит type-файлы. Теперь type-каталог имеет другую структуру. Тип подключается не по имени файла (+ .php), а по подкаталогу. Например для типа home: type/home/home.php, для записей: type/page/page.php и т.п. Такой подход значительно упрощает модульный подход, где требуется какая-то диспетчеризация вывода. Например главная страница может выводиться новостной лентой или в виде блоков рубрик. Технически проще это сделать с двумя файлами (+ home-cat-block.php), но чтобы исключить этот тип данных, приходилось прописывать исключения (см. index.php default-шаблона). Теперь в type-каталоге все подключаемые модули размещены в подкаталогах units. Вы можете посмотреть рализацию для типа users, где она достаточно проста для понимания.

Файлы main-start.php и main-end.php подключаются в type-файлах немного по-другому. Раньше было простое подключение через require. Теперь код будет таким:

if ($fn = mso_find_ts_file('main/main-start.php')) require($fn);

Функция mso_find_ts_file() ищет указанный файл вначале в каталоге шаблона, и если его нет, в shared-каталоге. На выходе false или полный путь файла. Функция достаточно часто используется, так что есть смысл сразу разобраться в чём её задача.

По структуре шаблон теперь стал несколько компактней и содержит меньше файлов. Я включил к комплект MaxSite CMS шаблон «D2». В каталоге осталось всего неколько базовых файлов:

  • info.php - информация о шаблоне
  • main.php - html-разметка шаблона (модульная сетка)
  • functions.php - функции шаблона
  • index.php - дипетчер типов данных (подключение type-файлов)

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

Файл functions.php практически тот же, только по-умолчанию загружаются некоторые stock-файлы. Файл не требует изменений - для своих целей предназначен, как и раньше, custom/my_functions.php.

Файл index.php сильно изменился. Вся диспетчеризация вынесена в отдельную функцию mso_dispatcher(), что позволило уменьшить размер кода (всего несколько строчек) и его логику.

Компоненты, как и прежде находятся в каталоге components, только теперь каждый компонент располагается в своём подкаталоге. Причём имя основного файла совпадает с именем каталога, например:

  • components/menu/menu.php
  • components/footer-copy-stat/footer-copy-stat.php

Структура в общем-то повторяет type-файлы. Для компонентов предусмотрено несколько предопределённых файлов:

  • style.css - для стилей, которые подключаются в head
  • options.ini и options.php - для опций

Если компонент начинается с «_» или «-», то его подключение (отображение в админ-панели) игнорируется. Такие «скрытые» компоненты могут использоваться в других компонентах прямым require-подключением.

Каталоги css, custom, images, js, language, stock, type и type_foreach сохранили своё предназначение, поэтому на них останавливаться не буду.

Новый каталог options содержит options.php, который через shared осуществляет диспетчеризацию опций, а также сами опции в виде привычных ini-файлов. Но, если раньше все опции были в одном ini-файле, то теперь опции можно разнести по отдельным произвольным файлам. Синтаксис полностью сохранён, поэтому логичней разбивать опции по секциям. Подключение производится в алфавитном порядке по именам файлов. Именно поэтому ini-файлы пронумерованы.

Каталог css-less содержит стили шаблона. Технически используется только var_style.less, который компилируется в css/var_style.css через css/var_style.php. Последовательность подключения css-файлов сохранилась, только теперь style-all-mini.css берётся из shared-каталога. Если в шаблоне нет css/var_style.css, то этот файл будет использован из shared-каталога. Грубо говоря, это позволяет вообще исключить css-файлы из своего шаблона. В «D2» именно так это и реализовано, то только с целью тестирования фреймворка style-all-mini.css. В рабочем шаблоне, конечно же, это не имеет смысла - нужно использовать свой css/var_style.css.

В css-less содержится структура каталогов для less-файлов, произведены некоторые подключения, но в целом эти вещи отданы на откуп вебмастера.

Несколько слов о фреймворке style-all-mini.css. В shared-каталоге находятся исходные less-стили. Я предусмотрел вариант, когда этот фреймворк либо не нужен, либо требуется пересобрать по своему варианту. Если в шаблоне будет файл css/style.php, то это будет единственный подключаемый файл вместо связки style-all-mini.css + var_style.css. Соответственно в этом файле можно разместить компилятор mso_lessc(), который будет отдавать в HEAD единый css-файл, собранный уже по своему алгоритму, по аналогии с var_style.less. При этом можно сделать подключение произвольных less-файлов из shared-каталога.

Стили style-all-mini.css немного поправил по типографике, а также удалил спорные моменты. В частности вывел из фреймворка стили некоторых компонентов, которые были в default-шаблоне. Теперь style-all-mini.css несколько проще и по идее вообще не содержит ничего лишнего. Если в своём шаблоне создать пустой var_style.css, то можно увидеть «чистый» style-all-mini.css.

Что в итоге?

Сам шаблон стал проще для понимания. Текущий вариант D2 по-идее будет новым «create_a_new_template», поскольку не содержит ничего лишнего. Все css-стили логично собраны в виде less-файлов, компилятор работает автоматом, можно об этом не задумываться. CSS-фреймворк «вычищен» и есть воможность собрать свой вариант.

Компоненты имеют лучшую предопределенную структуру, в которой вообще невозможно запутаться. Опции разбиты на секции-файлы, что опять же упрощает с ними работу.

Type-файлы, получив новую структуру, позволят создавать различные юниты-блоки. Например можно предусмотреть вывод записей колонками, блоками, в несколько рядов и т.п. Всё это будет готово к использованию, достаточно только подключить в своём type-файле. Раньше здесь были серьёзные ограничения, теперь о них можно забыть.

Далее в планах.

  • Решить вопросы по css-классам type-файлов. Нужно всё привести к единой схеме именования и html-структуре. Буду признателен, если верстальщики подключатся к этому процессу. Если пожеланий не будет, сделаю на свой лад. После претензий принимать не буду (инфа 146%).
  • LESS-миксы под разные задачи. Хочу отдельную библиотеку стилей.
  • Блоки-юниты для type-файлов. Сделать разный вывод под разные задачи.
  • Скачать MaxSite CMS 0.78 (и все последующие в этом roadmap) можно на Github. У меня пока сложности с его освоением, могут быть «косяки», поэтому историю изменений обещать не буду. Качайте zip-версию.

    Related Posts
    Comments (41) RSS
    1 Anonymous 2012-11-15 09:36:53

    О, как раз новый небюджетный сайт подвернулся. Потестирую новый подход. Значит, я делаю копию d2, активирую и воюю над ней, так?


    2 Максим 2012-11-15 09:41:23 admin

    Да, верно.


    3 Cuprum 2012-11-15 11:54:47

    А ты планируешь остаться в рамках той же разметки? Может для этого, нового варианта уже перейти на HTML5 c использованием элементов header, footer, section и тд.?


    4 Максим 2012-11-15 14:10:31 admin

    Хотел перейти, но не смог точно разобраться где что указать. Предлагай вариант, я только «за». :-)


    5 torg 2012-11-16 00:10:33

    Когда будет релиз 0.78 ?

    Почему blogolet и maxsite похожи ?

    Плюсы и минусы их ?

    Щас ngcms на сайте.


    6 Ruslan Brest 2012-11-16 10:01:29

    Могу ответить на все вопросы по гитхабу.

    Выход версии желательно сразу приучиться помечать тегом - это своеобразная закладка и очень удобна в будущем. Также сразу станут доступны архивы по версиям.

    Пожелание: неудачная мысль назвать репозиторий "cms" (github.com/maxsite/cms, maxsite/cms здесь = author/project, при форке другим автором название проекта у него оказывается "cms", что очень неудобно и надо переименовывать). Если нет принципиального желания оставить именно так, то пока не расползлось - не поздно переименовать.


    7 Александр 2012-11-16 19:47:11

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


    8 multVVM 2012-11-17 08:36:49

    а что это за файл такой empty, пустой


    9 Максим 2012-11-17 09:06:29 admin

    Чтобы каталоги гитхаб не удалял.


    10 icedogas 2012-11-18 20:08:54
    torg , о Господи, вроде бы помню вас по ngcms, что тоже потихоньку слезаете?)

    Когда будет релиз 0.78 ? - а вам зачем %))

    Почему blogolet и maxsite похожи ? - почему вы так решили?

    Плюсы и минусы их ? - они есть :)


    11 Alex 2012-11-19 13:27:36

    >А ты планируешь остаться в рамках той же разметки? Может для этого, нового варианта уже перейти на HTML5 c использованием элементов header, footer, section и тд.?

  • 1

  • 12 Сергей М 2012-11-19 19:15:44
    А ты планируешь остаться в рамках той же разметки? Может для этого, нового варианта уже перейти на HTML5 c использованием элементов header, footer, section и тд.?
    Хотел перейти, но не смог точно разобраться где что указать. Предлагай вариант, я только «за». grin

    Нашелся доброволец? :)

    Или перелопатить пока еще некому? :)


    13 Максим 2012-11-19 21:04:48 admin

    Работа идёт. Скоро выложу вариант.


    14 Сергей М 2012-11-20 09:28:36

    Вопрос: а почему в D2 отсутствует компонент Logo-links?


    15 Максим 2012-11-20 13:30:30 admin

    C компонентами пока ещё не определился.


    16 Anonymous 2012-11-21 00:04:27

    Максим спасибо за ваш труд.

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


    17 Николай Громов (nicothin) 2012-11-21 06:58:30
  • type-файлы
  • type-foreach-файлы
  • custom
  • components
  • и теперь вот shared.

    Мне одному кажется, что это перебор?


    18 Сергей М 2012-11-21 09:26:40

    Ну если что, мое мнение - это важный компонент.

    Так как через него выводится название и описание сайта.

    Я то присобачить его смогу.

    Но многие нет...


    19 Максим 2012-11-21 09:35:26 admin

    С компонентами проблема в том, что они требуют отдельного css-файла. Причем для каждого шаблона нужен свой вариант дизайна. Если я включу разные компоненты, то всё-равно потребуется доводка по стилям. Пока предполагаю, что компоненты будут, но без css-стилей. Будут less-стили в css-less с разметкой компонента. Тогда вебмастер его подключает и указывает нужные варианты оформления.


    20 Сергей М 2012-11-21 11:07:48

    Так подожди.

    Шаблон D2 вообще для кого предназначен? Я думал для создания из него других шаблонов?

    Так сказать точка отправления.


    21 Максим 2012-11-21 11:19:51 admin

    И в чём проблема?


    22 Сергей М 2012-11-21 12:49:11

    Так вот именно проблем со стилями нет.

    Я когда делаю новый шаблон, один фиг практически все перелопачиваю.


    23 Максим 2012-11-21 13:26:22 admin

    Вот поэтому я и не хочу включать стили компонентов в комплект. Будет less-заготовка. А использовать её или нет, пусть каждый решает сам.


    24 stonest 2012-11-21 14:48:20

    предложение по верстке:

  • объединить мелкие картинки и иконки в один спрайт. (таймлайн страницы большой)
  • Перенести по возможности стили из PHP в CSS (т.к. часто повторяются).
  • (- тестировать страничку нового шаблона например в gtmetrix . com)

    Спасибо за работу над шаблоном!:-)


    25 stonest 2012-11-23 17:29:36

    Мысли по верстке: по моему правильнее если на странице будет только 1 тег h1, а заголовки постов/новостей будут h2, а заголовки в сайтбаре - h3.

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


    26 Алексей 2012-11-24 20:29:11

    2 года использую Maxsite v. 0.40 , только сейчас обратил внимание на то что на главной странице, где размещается 4 новости, несколько тегов h1.

    Нельзя ли сделать только один тег h1 ?


    27 Максим 2012-11-24 22:41:58 admin

    Теперь h1 будет располагаться как положено по семантике HTML5 в header секции article.


    28 чувак 2012-11-25 22:36:53

    Как по мне, так в сайтбаре не должно быть ни h1, h2, h3, там должен быть


    29 Дима Тиунов 2012-11-26 12:15:26

    Максим,я бы хотел прояснить вопрос с метками и ключевыми словами для поисковиков (в теге страницы),это одно и тоже ?,если нет то будет ли оно соединено в единое целое ?


    30 Мурванидзе 2012-11-26 17:06:50

    Дима, это не одно и то же.

    Кейворды только для роботов.

    Метки для людей, плюс дополнительная плоскость классификации статей.


    31 Дима Тиунов 2012-11-27 17:03:52

    Мне бы было круто сделать кнопочку копировать из поля "Метки" в поле "Ключевые слова"


    32 icedogas 2012-11-27 17:18:20
    Дима Тиунов

    да ну бред конечно - это не правильно, если вам не чем занять это поле заполните его 3-5 ключевыми словами и пропишите для всего сайта) Но вообще, это же легко правиться руками, просто так слишком много кнопок появиться может..)))


    33 vovans 2012-11-27 20:33:26
    Мне бы было круто сделать кнопочку копировать из поля "Метки" в поле "Ключевые слова"

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


    34 Дима Тиунов 2012-11-28 06:30:20

    Ну тогда я предлагаю сделать авто-генератор ключевых слов с набором функция как тут http://webmasta.org/tools/keygeneratortext/ как в DLE.


    35 Александр 2012-11-28 07:44:09
    Ну тогда я предлагаю сделать авто-генератор ключевых слов с набором функция как тут http://webmasta.org/tools/keygeneratortext/ как в DLE.

    Дружище, поставь себе плагин генерации мета-тэгов и не парься.:-) Плз, не забивай мозги добрым людям ерундой. :-)


    36 Александр 2012-11-29 19:59:55

    Новый дизайн смотрится классно. Вообще, супер!


    37 stonest 2012-12-02 13:48:57

    Нашел ошибку. При смене шаблона на D2 выскакивает такое:

    Severity: Warning<br> Message: is_file() [function.is-file]: open_basedir restriction in effect. File(/../../../shared/css-less/mixins/helpers.less.less) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp)<br> Filename: less/lessc.inc.php<br> Line Number: 80

    скриншот http://s1.ipicture.ru/uploads/20121202/Ke1CLRqH.png

  • --------------------------------
  • MaxSite CMS 0.787 (от 2012-11-30)


    38 Максим 2012-12-02 14:22:26 admin

    Читайте внимательно сообщение об ошибке и пишите хостеру. MaxSite CMS здесь не при чём.


    39 stonest 2012-12-02 18:43:23
    Читайте внимательно сообщение об ошибке и пишите хостеру. MaxSite CMS здесь не при чём.

    Согласен.

    У меня на этом хостинге были проблемы с переменной: 'DOCUMENT_ROOT', пришлось задавать путь к сайту в ручную.

    А в новом шаблоне используется похожая переменная? Если да, то где можно путь изменить?


    40 Александр 2012-12-03 06:40:56

    Заметил, что при включении шаблона D2 необходимо, чтобы на var_style.css обязательно были установлены права на запись. Иначе выдает ошибку

    Severity: Warning

    Message: fopen(/home/htdocs/maxsite.loc/application/maxsite/templates/d2/css/var_style.css): failed to open stream: Permission denied

    Filename: common/common.php

    Line Number: 4142

    A PHP Error was encountered

    Severity: Warning

    Message: fwrite() expects parameter 1 to be resource, boolean given

    Filename: common/common.php

    Line Number: 4143

    A PHP Error was encountered

    Severity: Warning

    Message: fclose() expects parameter 1 to be resource, boolean given

    Filename: common/common.php

    Line Number: 4144


    41 Vlad Sedov 2012-12-06 19:07:38

    «Тут важный момент: теперь мы можем говорить о двух вариантах построения шаблона. Старый - на основе default и новый - на shared-каталоге».

    Я как рядовой пользователь озабочен тем, что дальнейшее раздвоение может привести к усложнению понимания новичками – поэтому Максим, может есть смысл все взвесить – и сделать коренной перелом – все пользователи на одной версии делают переход на принцип shared-каталога. Например, по какой-то инструкции – я выношу графические файлы и uploads плюс еще что-то в особую подготовленную папку – типа new_default, далее папку default удаляю совсем – убираю приставку new – получаю default по новому принципу.

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

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

    Извините – если что-то не понял – я далек от программирования, но если второй вариант построения шаблона - на shared-каталоге – перспективнее, то лучше сделать переход как можно раньше.

    Leave a comment!