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

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

Версии (релизы)Комментарии: 41Просмотров: 36036

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

В целом же это эволюционный этап: за год работы с 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-версию.

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

1Аноним15-11-2012 09:36

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

3CuprumСайт15-11-2012 11:54

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

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

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

5torg16-11-2012 00:10

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

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

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

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

6Ruslan BrestСайт16-11-2012 10:01

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

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

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

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

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

10icedogas18-11-2012 20:08

torg , о Господи, вроде бы помню вас по ngcms, что тоже потихоньку слезаете?)

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

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

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

11Alex19-11-2012 13:27

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

+1

12Сергей МСайт19-11-2012 19:15

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

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

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

16Аноним21-11-2012 00:04

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

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

17Николай Громов (nicothin)21-11-2012 06:58

- type-файлы

- type-foreach-файлы

- custom

- components

и теперь вот shared.

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

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

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

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

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

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

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

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

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

Так подожди.

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

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

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

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

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

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

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

24stonest21-11-2012 14:48

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

- объединить мелкие картинки и иконки в один спрайт. (таймлайн страницы большой)

- Перенести по возможности стили из PHP в CSS (т.к. часто повторяются).

(- тестировать страничку нового шаблона например в gtmetrix . com)

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

25stonest23-11-2012 17:29

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

32icedogas27-11-2012 17:18

Дима Тиунов

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

33vovansСайт27-11-2012 20:33

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

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

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

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

35АлександрСайт28-11-2012 07:44

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

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

37stonest02-12-2012 13:48

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

Severity: Warning
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)
Filename: less/lessc.inc.php
Line Number: 80

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

---------------------------------

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

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

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

39stonest02-12-2012 18:43

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

Согласен.

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

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

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

Заметил, что при включении шаблона 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

41Vlad SedovСайт06-12-2012 19:07

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

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

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

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

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

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

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

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