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

MaxSite CMS 0.81

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

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

Ещё раз: обновление следует выполнять согласно инструкции в файле install-ru.txt.

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

Загружать архив MaxSite CMS следует с Github. Файл latest.zip на моём сайте пока не удалял — в ней версия 0.77.

Изменений довольно много (winmerge выдаёт 117 шт.), поэтому я остановлюсь на самых заметных. Правда сразу отмечу, что некоторые возможности доступны только для шаблонов, основанных на shared-каталоге, например D2.

Меню

Меню теперь можно оформлять в виде:

http://ссылка | название | подсказка | class | class_для_span

Это позволяет задавать css-класс не только для li-элемента, но и вложенного span.

Если адрес будет задан в виде «##», то a-ссылка не будет сформирована вовсе. Останется только вложенный span-элемент.

Если пункт меню задать как «---», то будет сформирован пустой li.divider — разделитель пунктов меню. Стили уже заданы в css-фреймворке.

Новые BB-коды

Новый код create_list предназначен для формирования сложного UL-LI списка в тексте записи. Сам список задаётся по правилам обычного меню, включая подпункты «[ ]».

Пример create_list

[create_list]
ссылка | Первый
ссылка | Второй

[
## | Третий-первый
link | Третий-второй
]

ссылка | Четвертый
ссылка | Пятый
[/create_list]

Уровней вложенности может быть сколько угодно, главное не сбиться в «[ ]»-блоках. Также допускается указания css-класса для родительского UL-элемента.

[create_list(класс)] 
...

BB-код show используется для скрытия/раскрытия блоков в тексте. Это в какой-то мере аналог спойлера, только используется анимация и сохраняется состояние открытых/закрытых блоков. Использовать только в таком варианте:

[show Заголовок]
текст 
[/show]

Также отмечу, что можно придумать и свои замены на уровне плагина — для этого следует использовать хук bbcode. Он выполняется сразу после всех стандартных замен в тексте.

Изменения в плагине Forms

Можно указывать некоторые дополнительные параметры.

[name_title=Название поля ИМЯ]
[email_title=Название поля EMAIL]

Также теперь сохраняются заполненные поля формы в случае неверной формы. Кроме того, при задании полей можно указать вариант фильтрации данных: base, xss, trim, integer, strip_tags, htmlspecialchars, email и not_url.

Отдельное спасибо Николаю Громову, который реализовал часть функционала.

Компоненты D2

Появились новые:

  • _random-text — вывод цитаты на основе плагина randomtext. Это подкомпонент, который пока нигде не используется.
  • footer-3-sidebars — три сайдбара в подвале сайта. Сами сайдбары нужно определить в custom/my_functions.php.
  • menu-login — сдвоенный компонент из главного меню и формы логина (dropdown).

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

Изменения в CSS/LESS

В целом изменения незначительные — поправлены некоторые неточности. В хелперы добавлен новый микс .box_sizing(border-box), позволяющий задавать боксовую модель блока:

-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;

В shared новый микс columns.less, в котором я собрал стили для колоночной верстки. Вариант div.columns и div.box присутствовал раньше в D2, поэтому уже знаком вебмастеру. А вот вариант div.onerow совершенно новый. Он позволяет делать резиновую адаптивную колоночную вёрстку. В текущем варианте я рассчитал ширины для 1-5 колонок. Например 4 колонки можно сделать так:

<div class="onerow">
	<div class="col w1-4">1-4</div>
	<div class="col w1-4">1-4</div>
	<div class="col w1-4">1-4</div>
	<div class="col w1-4">1-4</div>
</div>

А это вариант колонок, где первая 1/4, вторая 2/4 и третья — 1/4:

<div class="onerow">
	<div class="col w1-4">1-4</div>
	<div class="col w2-4">2-4</div>
	<div class="col w1-4">1-4</div>
</div>

То есть следует следить, чтобы сумма «числа класса» была равна числу колонок. Как-то так: wОДНАКОЛОНКА-ВСЕГОКОЛОНОК .

Микс .col() используется для задания стилей произвольному блоку. Например вариант 5-колоночной верстки, где первая занимает 4/5 ширины, вторая 1/5 часть:

div.r1 {
	.col > .w4_5;
}
 	
div.r2 {
	.col > .w1_5;
}

Классы используются те же только с подчеркиванием. (Пример блоков в виде картинки.)

Опции шаблона

По сравнению с 0.80 здесь небольшие изменения. В shared/options/default я перенёс дефолтные для всех шаблонов опции (ini-файлы), поскольку они всё равно дублируются. Поэтому в каталоге шаблона options следует размещать только свои опции. Если же стоит задача затереть или изменить дефолтные, то используется стандартные вариант: дублируем как пустую или новую секцию.

Также возможен вариант, при котором можно принудительно запретить подгрузку дефолтных опций. В option.php указываем:

mso_set_val('get_options_default', false);

Изменения в выводе записей

Можно управлять выводом миниатюр. Если задать

mso_set_val('show_thumb', false);

то вывод миниатюр вообще будет исключен.

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

mso_set_val('show_thumb_type_home', false);
mso_set_val('show_thumb_type_category', false);

То есть указываем к ключу «show_thumb_type_» тип данных.

На странице рубрики можно выводить произвольную ушку сразу под её описанием. Название ушки формируется как category_SLUG. Например, если у рубрики короткая ссылка news, то её ушка будет category_news.

Для страниц комюзеров можно дополнительно выводить произвольные данные через хук users_add_out.

CSS-профили для записей

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

Произвольные main-шаблоны

Вещь, призванная разрешить проблему произвольного вывода данных. Типовая задача — на какой-то странице нужно отключить вывод сайдбара. Код вывода сайдбара прописан в main.php и для решения данной задачи приходилось мудрить с custom-файлами, где и прописывать условия вывода сайдбара.

Теперь можно использовать любое количество main.php, которые будут созданы под любую задачу. В комплекте D2 в каталоге main шаблон вывода no-sidebar. В файле удалён вывод сайдбара, а также дополнительно указан body.no-sidebar. Соответствующие стили уже прописаны в css-less (при отсутствующем сайдбаре нужно увеличить колонку контента).

Выбрать main-шаблон можно не только при редактировании записей, но и в настройках шаблона: для главной, рубрик, меток, архивов и авторов.

Но и это ещё не всё. Возможно автоматическое подключение main-шаблона по типу данных. Для этого следует разместить файл как main/type/ТИП/main.php. Например для главной это будет main/type/home/main.php.

Возможность использования разных main-шаблонов позволяет строить совершенно произвольные по структуре страницы сайта. Для примера вы можете посмотреть страницу где используется подобный подход.

Произвольные шаблоны заголовков записей (info-top)

Тоже интересная возможность. Для записи можно указать любой info-top type_foreach-файл. Традиционно он всегда был один и чтобы разрулить разный вывод заголовков, требовалось вводить в файл дополнительные условия. Теперь достаточно сделать какой-то вариант info-top-файла и разместить его в type_foreach/info-top/. После этого при редактировании записи можно указать нужный файл.

Настройка записи

Напомню, что для вывода в info-top лучше всего использовать шаблонизатор Page_out, который уже автоматом доступен в этом файле. Для примера я кинул два файла: category-and-header.php и header-only.php.


Пожалуй, это самые основные и интересные изменения в MaxSite CMS 0.81. Полный и детальный список я постоянно выкладываю на гитхабе.

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

1Константин24-01-2013 15:27

Использую 0.75, стоит подождать чтобы обновиться "обычной загрузкой файлов поверх старых."? Или будет нельзя обновиться с 0.75?

Спасибо за cms!

3Андрей25-01-2013 18:43

Макс, вообще осуществимо сделать адекватную поддержку SSL? Чтобы когда к сайту по https заходят - то все линки выдавались с этим же https префиксом?

4librarianСайт25-01-2013 20:23

У меня сайт работает по https в том числе. И всё работает нормально. Нужно только правильно в тексте самих записей расставлять протоколы (я вот вообще использую запись типа //libc6.org/... Есть ещё мой плагин https, который принудительно редиректит если что не так.

5Андрей26-01-2013 10:52

librarian, ну смотрите, простейший пример: захожу в /admin по https, ввожу данные для авторизации - и оно меня кидает в админку уже по http (т.е. логин и пароль отправляет именно по http что не круто) - т.е. тут дело не в том что я где-либо в контенте неправильно ссылки ставлю, а в самой cms'ке, верно? Или это проблема в теме админки?

И вот по внешней части, пользовательской так сказать - будьте добры, подскажите - это проблема темы или двигла cms? Захожу по https - а все ссылки на записи, на авторов, на разделы - все ведут на http,даже ссылки в хедере страницы на favicon и js скрипты.

Вот у вас таки да, всё работает ровно и красиво.

6librarianСайт26-01-2013 11:20

Наиболее вероятны два варианта:

1. Вы когда-то исправляли выставление переменной в libc6.org/public/application/config/config.php

Она должна выглядеть так:

$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://" . $_SERVER['HTTP_HOST'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);

2. Вебсервер не сообщает движку, что он работает по протоколу HTTPS (типичный вариант такого поведения, когда Apache работает за nginx)

Проверить это можно сделав файл phpinfo и проверив там наличие переменной HTTPS = on.

У меня выставление этой переменной реализовано по выставлению переменной из X-Forwarded-Proto:

SetEnvIf X-Forwarded-Proto https HTTPS=on

7Аноним26-01-2013 16:23

Как же у вас так и получается: Память 1.8МБ? У меня 7-8 мб. Что включить или как настроить?

8Артур27-01-2013 02:58

Хотелось бы в следующей версии, другие ЧПУ, а не site/page/...

9Андрей27-01-2013 09:57

librarian,

1. Код 1 в 1, не менялся.

2. Этой переменной HTTPS вообще нету, увы. Код который вы написали, я вставил в хтацесс - ситуация не изменилась.

Ну смотрите, тут же, рядом с maxsite, работает smf - у него в этом плане все ровно: если в настройках урла сайта забито https://site.com то он всё выдает по https, если http - всё адекватно выдает по http.

10JeckDiggerСайт29-01-2013 15:12

В последней версии install.txt отсутствует описание для назначения прав каталогам и файлам на сервере после загрузки. На первоначальном этапе новой установки это необходимо.

11Олег Антончик31-01-2013 11:35

Я накатил обновление. Изучаю вкусности. Прежняя версия была 0.805, с шаблоном D2 ознакомился там, все на уровне

12Alex01-02-2013 13:13

Хотелось бы в следующей версии, другие ЧПУ, а не site/page/..

+1

сделайте настраевыемые ЧПУ

13Алексей03-02-2013 21:48

Тоже обновился без проблем.

14lex11-02-2013 14:17

Скажите, при обновлении на 0.811 обязательно ли распаковывать директорию _mso_add? На старой версии 0.63 такой папки нет. Или это необязательные причиндалы и можно их не распаковывать?

16jimmy24-02-2013 09:29

К сожалению, а может и к лучшему структура шаблона D2 мне показалась немного сложной... с одной стороны: в шаблоне осталось только то, что действительно нужно (страницы оптимизированы, лишнее вынесено за шаблон и т.д.), но default хоть и страдал "избыточностью" (все в в себе), но было удобнее...

17Андрей24-02-2013 13:31

Здравствуйте. А уже готовые шаблоны дизайна, традиционного HTML 4.0 типа, в табличной верстке, с минимумом оформления в CSS, все еще поддерживаются?

18vovansСайт25-02-2013 20:53

Если публиковать пост "в будущее", указав нужное время, то пост не появляется, пока кэш не обнулится. Можно его сбрасывать при отложенном постинге? А то публикуешь в полночь, а пост появляется только утром (

19Santery26-02-2013 16:34

Абсолютно такая проблема, как и у vovans

хочется, например, опубликовать пост в будущее и чтобы сайт сам сбрасывал кэш после публикации и сразу появлялся на странице

люди, помогите реализовать(

20Павел10-03-2013 10:23

Посмотрел понравилось, отличная система работает очень шустренько, не хватает еще правда много функций, например у меня проблема сразу всплыла, по сортировке записей в каталоге, иногда требуется вручную отсортировать записи в каталоге и если их много то получается цифрами не очень удобно, хотелось бы видеть какое нибудь drag&drop; решение по ручной сортировки, если сравнивать с тем же вордпресс есть аналог Custom Post Order by Category, ну и по главной тоже с сортировкой проблемы не разобрался есть ли возможность назначать какие посты выводить в цикле на главную а какие нет?

21Jimmy Jonezz11-03-2013 06:11

Я жутко недоволен слишком сильным дроблением "структуры шаблона". Делаю шаблон на основе D2. Например, правка мелких "деталей" доставляет кучу неприятностей касаемо поиска связей. Захотел изменить вывод записей на главной, из shared взял home.php и поместил его в свой шаблон. Захотел вывод миниатюр, а данной функции в home.php не оказалось, потом узнал, что такая функция доступна в другом фале, в папке def_out. Полез туда и зарылся окончательно... Спора нет, некоторые "лишние" элементы вынесены, но когда начинаешь тонкую настройку шаблона проблемы возникают по нарастающей...

22vovansСайт11-03-2013 07:19

Для начала можно в админке "Настройка шаблона" посмотреть внимательнее.

23serg19-01-2014 15:00

установил, но bb-код даже в редакторе текста когда пишу текст для страниц не работает. Т.е. сам редактор вставляет бб-код, а вот когда сайт формирует страницу - бб-код остается, а должен преобразоваться в хтмл. хтмл код работает на ура!

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

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

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

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