Версия предназначена для тестирования, поэтому на рабочем сайте её не следует использовать. Она содержит изменения, касаемые нового варианта построения шаблонов. Причем понятие «новый-старый» не совсем корректное, поскольку «старый» точно также работает и останется достаточно длительное время. Я сохранил совместимость, так что можно сказать, что у вебмастеров появился ещё один вариант создания сайта.
В целом же это эволюционный этап: за год работы с 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, активирую и воюю над ней, так?
2Максим15-11-2012 09:41
Да, верно.
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
Честно говоря, моих знаний пока не хватает оценить того что сделано, но радует что проект развивается и обрастает новыми возможностями. Но у меня на языке постоянно крутится вопрос, который вроде бы как и не удобно задавать. Последние модификации движка как-то влияют на время генерации страниц?
8multVVMСайт17-11-2012 08:36
а что это за файл такой empty, пустой
9Максим17-11-2012 09:06
Чтобы каталоги гитхаб не удалял.
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
Нашелся доброволец? :)
Или перелопатить пока еще некому? :)
13Максим19-11-2012 21:04
Работа идёт. Скоро выложу вариант.
14Сергей МСайт20-11-2012 09:28
Вопрос: а почему в D2 отсутствует компонент Logo-links?
15Максим20-11-2012 13:30
C компонентами пока ещё не определился.
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 вообще для кого предназначен? Я думал для создания из него других шаблонов?
Так сказать точка отправления.
21Максим21-11-2012 11:19
И в чём проблема?
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
Дружище, поставь себе плагин генерации мета-тэгов и не парься.:-) Плз, не забивай мозги добрым людям ерундой. :-)
36АлександрСайт29-11-2012 19:59
Новый дизайн смотрится классно. Вообще, супер!
37stonest02-12-2012 13:48
Нашел ошибку. При смене шаблона на D2 выскакивает такое:
скриншот 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
Согласен.
У меня на этом хостинге были проблемы с переменной: '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-каталоге – перспективнее, то лучше сделать переход как можно раньше.