Meruert CMS — 12 февраля 2016

Parcelle в 7 версии Meruert

Parcelle (произносится [парсель] с ударением на последний слог) — компактный язык разметки внутри CMS Meruert. Он позволяет вставлять небольшие кусочки кода, которые генерируют достаточно большие объёмы данных, уже свёрстанные нужным образом и корректно работающие: форму поиска или форму обратной связи, текущий год или список всех страниц сайта. Parcelles (читается так же, но разработчики под Meruert называют их «парсели» и склоняют на русском языке) — это те самые кусочки кода, или шорткоды, которые можно вставлять в любое место сайта: любую запись или страницу, любое место шаблона, сайдбар, футербар и т.п. Например, если написать [parcelle:search], то будет вставлена форма поиска. Если написать [parcelle:since:2011], то мы получим запись: 2011–2017. Если же написать [parcelle:posts:all-abc], то выведется список ссылок на все посты (записи) блога в алфавитном порядке.
В 7 версии Meruert система парселей сильно переработана. Те шорткоды, которые описаны в документации для шестой версии, всё так же работают. 

Первая часть касается вывода простых фрагментов:
[parcelle:year] или [parcelle:y] — текущий год: 2017;
[parcelle:since:1987], или [parcelle:from:1987], или [parcelle:range:1987] — диапазон от указанного года (в данном примере 1987) до текущего: 1987–2017;
[parcelle:engine] — название CMS: Meruert 7;
[parcelle:version] — версия CMS: 7;
[parcelle:sitecopy] — знак авторских прав и название текущего сайта, оформленное как ссылка на главную страницу (испльзуется по умолчанию в подвале страниц): © Meruert CMS;
[parcelle:currentPage], или [parcelle:currentpage], или [parcelle:current-page], или просто [parcelle:current] — полный адрес текущей страницы: http://www.meruert.com/date-2016-02-12/;
[parcelle:server] — адрес сервера, на котором работает данный сайт: http://www.meruert.com/;
[parcelle:lang] — код языка, который активен в системе в данный момент; имеет более специальное употребление, чем остальные шорткоды; при генерации меню может быть заменён на короткий аналог [lang]; выводит результат в виде ru;
[parcelle:today] показывает сегодняшнюю дату на нужном языке: 15 декабря 2017;
[parcelle:now] показывает текущие дату и время: 15 декабря 2017 (11:00:58).

Другая часть используется для вывода форм:
[parcelle:feedback] — форма обратной связи, позволяющая отправить письмо с сайта его владельцу;
[parcelle:search] — форма поиска, ведушая на поисковую страницу на данном сайте;
[parcelle:login], или [parcelle:login], или [parcelle:login] — форма авторизации (входа на сайт); видна только неавторизованным пользователям.
В качестве примера — результат вывода [parcelle:search]:

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

Списки материалов

[parcelle:records] — список всех материалов сайта;
[parcelle:posts] или [parcelle:titles] — список всех записей в блоге;
[parcelle:pages] или [parcelle:static] — список всех страниц, не входящих в блог;
[parcelle:drafts] — черновики;
[parcelle:secret] — тайные записи;
[parcelle:faved], или [parcelle:favorite], или [parcelle:favourite] — избранные записи;
[parcelle:tag-3] — все записи под тэгом (рубрикой) №3 — разумеется, можно использовать любой номер из тех, которые доступны; номер тэга легко узнать из адресной строки или при его редактировании;
[parcelle:blog-7] — все записи из блога №7;
[parcelle:in-projects] — записи или страницы, дочерние по отношению к указанной (в данном примере projects; например, в списке будут страницы с адресами site.com/projects/print, site.com/projects/web, site.com/projects/web/sites и другие); вы можете ограничивать анализ вложенности страниц, например, так: [parcelle:in-projects^2] — в этом случае будут выводиться страницы только с двумя уровнями вложенности
[parcelle:children] — непосредственные дочерние страницы по отношению к текущей (например, site.com/books/novels по отношению к site.com/books); 
[parcelle:all-children] — дочерние страницы любого уровня вложенности по отношению к текущей (например, site.com/books/novels/recent по отношению к site.com/books).
Если заголовка у материала нет, вместо заголовка выводятся три звёздочки.

По умолчанию выводятся все записи указанного типа, без ограничения количества. Это потому, что указаны только две позиции в парселе (позиции — то, что разделено двоеточием; на первом месте всегда слово parcelle, а на втором — то, что именно нужно вывести на экран: записи, черновики, темы и т.п.). Можно ввести третью позицию, после второго двоеточия, и в этом случае можно указать, какой максимум заголовков записей будет выведен:
[parcelle:posts:5] — пять записей блога;
[parcelle:pages:10] — десять страниц;
[parcelle:drafts:all] — все черновики.
Модификатор all на третьей позиции может и отсутствовать: если не указано точное число, значит, все записи.

В содержании все заголовки по умолчанию выводятся как отдельные абзацы. Если на третьей позиции через косую черту указать другой HTML-тэг, то обрамляющим будет именно он:
[parcelle:posts:5/li] — каждый заголовок будет элементом маркированного списка.

Наконец, на этой же третьей позиции через дефис с помощью специального модификатора (d, r, u, s, abc, cba, 123, 321) можно указать, в каком порядке будут выводиться записи: 
[parcelle:posts:10-d] или без модификатора [parcelle:posts:10] — 10 записей в хронологическом порядке (то есть не в обычном для блога порядке, а начиная с ранних записей);
[parcelle:posts:10-d/li] — то же самое, в виде маркированного списка;
[parcelle:posts:10-r] — 10 записей в обычном порядке для блога, от свежих к более старым;
[parcelle:posts:10-u] — 10 записей, отсортированных по дате последнего обновления материала (в этом случае видно, какие записи в последнее время редактировались и обновлялись);
[parcelle:posts:10-s] — 10 случайных записей в произвольном порядке: очень удобно, когда хочется всегда показывать непредсказуемую выборку материалов и почти не повторяться, или создать иллюзию постоянного обновления и богатства материалов блога;
[parcelle:posts:10-abc] — 10 записей по алфавиту;
[parcelle:posts:10-cba] — 10 записей против алфавита;
[parcelle:posts:10-123] — 10 записей, адреса которых отсортированных в алфавитном порядке;
[parcelle:posts:10-321] — 10 записей, адреса которых отсортированных против алфавита.

На четвёртой позиции можно поставить единицу, и в этом случае ссылки на материалы будут снабжены датами. Если оставить пустую позицию или вписать ноль, то даты не будет. Удобно, если даты важны:
[parcelle:posts:5-r:1] — 5 свежих записей с датами публикации.
Если вместо единицы поставить 2, то дата будет выделена цветом, если она сегодняшняя:
[parcelle:posts:5-r:2] — 5 свежих записей с датами публикации, из которых сегодняшяя будет выделена.
Модификатор 3 будет обозначать, что из даты нужно оставить только год; 4 — текущий год будет выделен цветом; 5 — текущий и прошлый год будут выделены разными цветами; 6 — три последних года будут выделены разными цветами.
Такая «подсветка» работает только в теме дизайна Orinoco. В остальных темах, если есть необходимость, можно в CSS указать нужный цвет для классов small-highlight, small-highlight-1 и small-highlight-2.

Все эти списки ссылок являются по своей сути навигационными меню, генерируемыми автоматически. На пятой позиции можно указать, каким образом будет выделен текущий пункт таких меню (то есть ссылка на ту страницу, на которой пользователь находится в данный момент). По умолчанию, если не указать пятую позицию, то она будет равна 1.
1 — ссылка перестаёт быть ссылкой и становится полужирным текстом;
2 — ссылка остаётся обычной ссылкой и приобретает CSS-класс selected;
3 — ссылка становится полужирной и приобретает CSS-класс selected.
Пример:
[parcelle:posts:5-r:1:3] — 5 свежих записей с датами публикации, причём текущий пункт меню со списком ссылок становится полужирным, но остаётся ссылкой.

Кроме этих пяти позиций, есть ещё так называемые опции: их можно указывать после любого количества позиций после вопросительного знака (?) до закрывающей квадратной скобки, и если опций несколько, то они разделяются амперсандом (&); если у опции есть значение, то оно записывается после знака равенства (опция=значение), например:
[parcelle:posts:all-s:1?images&tags&strong&prefix=* ] — все записи блога в случайном порядке с датами, все ссылки полужирные в любом случае, снабжены тэгами (рубриками) и изображениями, если они приложены к постам, а перед каждой ссылкой будет находиться префикс в виде звёздочки с пробелом.
Значения опций:
prefix или pref — префикс, тот текст, что предшествует ссылке (опция со значением);
images или preview — ссылка на запись снабжена иллюстрациями, приложенными к ней;
topic или tags — ссылка на запись снабжена тэгами (темами, рубриками) из этой записи;
bold или strong — ссылки набраны полужирным начертанием;
italic или oblique — ссылки набраны курсивным начертанием.


Списки тэгов и блогов

Списки рубрик, или тем, или тэгов, гораздо проще по своей структуре, но они всё равно могут использоваться как удобное средство навигации. Названия всегда сортируются по алфавиту, и в данный момент этот порядок нельзя изменить.
Здесь может быть четыре позиции, причём третья и четвёртая отведены обрамляющим HTML-тэгам, а первую занимает сама команда parcelle.
[parcelle:tags] выведет список из тэгов как набор абзацев со ссылками;
[parcelle:tags:div] выведет список из тэгов как набор блоков DIV со ссылками (если есть третья позиция, то в ней указано название HTML-тэга, обрамляющего пункт меню);
[parcelle:tags:ol:li] выведет список из тэгов как нумерованный список из пунктов со ссылками (третья позиция занята названием обрамляющего HTML-тэга для всего блока, а четвёртая — HTML-тэга для каждого пункта).

Каждая тема и каждый блог внутри Meruert могут иметь свой URL (фрагмент адреса). Для того, чтобы заменить стандартные tag-1, tag-2, blog-8 на осмысленные названия, нажимайте ссылки редактирования наверху страницы каждой темы. Если часть ваших записей посвящена фотографиям, то снабдите их темой записи «фото», а когда запись сохранится, нажмите на ссылку «фото» и найдите ссылку «ред.» над всеми записями данной темы; нажмите её и в поле редактирования альтернативного адреса (Альтернативный URL) введите, например, текст photo. В этом случае невыразительный адрес site.com/tag-1 для данной темы сменится на «говорящий» site.com/photo. Более того, адреса для тем можно делать иерархически вложенными: photo/portrait для портретных фотографий, photo/still-life для фотонатюрмортов, photo/portrait/monochrome для монохромных фотопортретов, и т.п. Это может пригодится для формирования динамических списков с названиями тем.

[parcelle:blogs] — это список всех блогов в системе;
[parcelle:tags] — это список всех тем записей;
[parcelle:intag-ABC] — это список всех тем записей, вложенных в тему с адресом ABC (то есть если у вас есть темы с адресами ABC/DEF, ABC/XYZ, то именно они будут выведены в списке ссылок);
[parcelle:withtag-ABC] — это список всех тем записей, вложенных в тему с адресом ABC, и ссылка на саму тему с адресом ABC.
Разумеется, в двух последних примерах ABC и прочие алфавитные наборы букв вы замените на ваши осмысленные URL для тем записей.

В следующих версиях Meruert система Parcelle будет улучшаться и дополняться.

Седьмая версия Meruert

p/PKS_9106_copy.jpg
Седьмая версия CMS Meruert завершена и готова к работе.
Скачать её напрямую можно по этой ссылке: Meruert 7.

Чтобы обновиться с шестой версии, следует заменить файлы index.php и .htaccess в корневой директории на новый из сохранённого архива, а также заменить всё содержимое папок flags, js, langs, media, themes внутри папки Meruert на новые. Если у вас были свои темы дизайна или скрипты, или свои языковые файлы, оставьте их на своих местах, они будут работать настолько же корректно, как и раньше. Остальные файлы и папки (в них хранятся ваши данные) оставьте на своих местах: в этом случае они не будут повреждены.

Что нового?
Добавились новые языки: узбекский, немецкий, эстонский и венгерский. Словари остальных языков дополнены и отражают все изменения в функциональности. Теперь в комплекте 16 языков, и в работе словари для новых языков.
Сразу несколько новых тем дизайна: элегантная тема Calin в сдержанных и тёплых оттенках, а также несколько линеек, группирующихся по темам: Flower (4 цветочные темы), Animation (2 темы с популярными анимационными персонажами) и 5 тем Fluid — это современные шаблоны с тянущейся вёрсткой и крупными шрифтами, предназначенные для внятной презентации данных. В комплекте теперь 25 тем дизайна, поставляющихся «из коробки» — включая всё ту же основную тему Orinoco, которая появилась в шестой версии Meruert и была модернизирована к седьмой. Некоторые из тем были написаны для проекта Meruert Анастасией Моруговой.
Вместо редактора расширенного форматирования NicEdit, во многом устаревшего, в системе теперь используется редактор Knedlik, написанный специально для Meruert (хотя его можно использовать и вне Meruert для своих сайтов). Важно, что с его помощью вы теперь можете загружать файлы в любое место поста или страницы; сам минималистичный редактор находится в единственном JavaScript-файле. Таблицы, богатые палитры цветов, редактирование и добавление HTML напрямую, и ещё множество улучшений.

Другие нововведения, довольно многочисленные, касаются интерфейса и новой функциональности.

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

В Meruert есть не только обычный для всех блогов антихронологический порядок записей, но и обратный — уже достаточно давно. Так что можно комфортно читать блог с момента его основания, листая страницы. Теперь можно в настройках задавать и другие типы: расположение записей по алфавиту и против, по рейтингу и даже в случайном порядке. Meruert — первая CMS, которая позволяет делать подобное, потому что она давно уже не позиционируется только как система для блогов: на ней можно делать и портфолио, и сайты с удобной структуризацией материалов.

Серьёзно обновилась система Parcelle для вставки функциональных фрагментов. Это не нарушает обратной совместимости: то, что работало в 6 версии, будет работать и в 7. Настолько серьёзно обновилась, что Parcelle посвящена отдельная заметка.

Автозагрузка PHP-скриптов, если вы являетесь разработчиком, доступна для вас уже давно. Теперь, если вам понадобились JavaScript-файлы, загружающиеся автоматически, вы можете создать в папке Meruert/js файл js.js, и система будет его подключать сама.
Поведение JavaScript частично изменилось по всей системе. Например, дополнен просмотрщик изображений; работает Ajax (для отметок рейтинга); он стал использоваться в файловом менеджере.
Во время редактирования записи можно изменять взаимное расположение приложенных файлов, добиваясь нужного порядка; особенно это актуально для приложенных изображений.
Наконец — очень важно — работает автосохранение нового материала. Так что если вы пишете новый пост, вы можете в какой-то момент закрыть страницу или перейти по какой-то ссылке, а потом снова нажать на ссылку «Написать» — заголовок и текст сохранятся.
Более того, Meruert теперь сохраняет резервные копии; в дальнейшем из них можно будет восстанавливать разные состояния системы.

Изменилась страница рейтингов для администратора: она стала более наглядной.
Ещё сильнее изменилась страница с результатами поиска — в сторону лаконичности и подгрузки только контекста, а не всего материала целиком.
Улучшен журнал (лог): в нём фиксируются не только данные ваших авторизаций, но и статистика системы: количество и общий вес файлов, записей, комментариев и другая информация.

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

При создании и редактировании записи (страницы) её сразу можно сделать главной страницей сайта, не заходя в настройки.
Добавилась опция «18+», если вы хотите скрывать какие-то материалы от несовершеннолетних.

В уведомлениях о комментариях сразу можно видеть текст самого комментария: очень удобно для администратора системы.
Кроме комментариев, добавились рейтинги (или «лайки»), включить и выключить их можно в настройках; можно собирать честные рейтинги, а можно оставить только положительные.

По умолчанию в ленте блога загружаются не все приложенные картинки и видео с аудио, а только часть (пять иллюстраций и один медиафайл). Чтобы это изменить, нужно в корневой директории сайта создать файл conf.php и там дописать директивы:
define('maxPicsAmount',5);
define('maxMediaAmount',1);
И изменить числа на нужные.
Конфигурационный файл conf.php вообще стал обладать большими возможностями, чем раньше: фактически там можно менять все предустановленные константы; об этом будет написано в документации.

В любом месте (например, в тексте любой записи) можно вставить форму обратной связи (теперь для этого нет нужды использовать плагин). Для этого достаточно написать: [parcelle:feedback]

Для тем записей появились отдельные RSS-ленты. Кроме того, у любой темы записи можно поменять название, адрес в адресной строке, ключевые слова и другие настройки. То же самое касается основного блога и всех дополнительных создаваемых блогов.

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

Код обфусцирован (приведён к не очень читаемому виду). Это позволило уменьшить его объём. 
Исправлено огромное количество мелочей с точки зрения целостности кода, вёрстки, удобства интерфейса в целом, оптимизации для поисковых систем и разных браузеров.
Через некоторое время эти и другие изменения получат отражение в документации.