ABC-catalog

Добавил некоторые возможности.

Архив плагина:

Раньше настоящий сегмент рубрик category подменялcя на заданный при формировании навигатора. теперь это опционально и по умолчанию не подменяется.

Разница в том, что при подмененном сегменте вывод осуществляется так как задано в файле catalog.php плагина.

Появилась опция На главной каталога все в виде артикля. Если она отмечена, то на главной странице каталога выводятся все заказанные символы со списком статей под каждым из них. И все категории для каталогизации с подкатегориями.

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

Вот пример: Каталог.

Не реализованы возможности гибкой настройки внешнего вида этого всего - не знаю еще как лучше. Пока навигатор функцией отдается заключенный в настраиваемых До и После. Также артикль содержит сперва артикль букв в До и После, затем артикль категорий тоже в До и После. Кроме того, каждая буква и категория 1-го уровня кидается в своих До_блока и После_блока.

Сам вывод находится в процедуре abc_articles().

Кроме того, появились два блока: Навигатор и Артикль.

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

Про блоки и варианты их использования читать здесь: Обсуждение на форуме поддержки MaxSite.

Произошли некоторые изменения

В функцию abc_navigator() добавил параметр, в котором можно передать page_slug - тогда функция проверит наличие среди каталогизированных страниц такой страницы; можно также передать category_slug - тогда будет проверено наличие такой категории среди каталогизированных категорий.

Если ничего не передавать то навигатор выведется в любом случае.

Модуль вывода навигатора принял такой вид:

  1.  $out = '';
  2.  if ( is_type('page') ) $out = abc_navigator( array('page_slug' => mso_segment(2)) );
  3.  if ( is_type('category') ) $out = abc_navigator( array('category_slug' => mso_segment(2)) );
  4.  if ($out) echo $out;

То-есть можно куда угодно вставить этот блок и навигатор выведется только если мы на каталогизированной странице или категории.

Для вставки в одиночную страницу использовать такой код:
  1.  $out = '';
  2.  $out = abc_navigator( array('page_slug' => mso_segment(2)) );
  3.  if ($out) echo $out;

Или

  1.  $options = mso_get_option('abc_catalog', 'plugins', array());
  2.  if ( !isset($options['type']) ) $options['type'] = 'blog';
  3.  if (isset($pages[0]['page_type_name']) and ($pages[0]['page_type_name'] == $options['type'])) echo abc_navigator();

Второй вариант выполнит лишнее действие - получение опций.

Ну и для вывода на страницах только нужных категорий:

  1.  $out = '';
  2.  $out = abc_navigator( array('category_slug' => mso_segment(2)) );
  3.  if ($out) echo $out;

Архив обновленного плагина:

Переделал плагин как советовали в ветке обсуждения на форуме поддержки MaxSite.

Архив плагина:

Для того чтобы навигатор выводился на одиночных страницах заданного для каталога типа, необходимо в файле page.php после if ($pages) вставить следующее:

  1.  // вставка для вывода abc-навигатора на одиночной странице
  2.   $options = mso_get_option('abc_catalog', 'plugins', array());
  3.   if ( !isset($options['type']) ) $options['type'] = 'blog';
  4.   if (isset($pages[0]['page_type_name']) and ($pages[0]['page_type_name'] == $options['type'])) echo abc_navigator();
  5.   // конец вставки для вывода abc-навигатора на одиночной странице

Теперь в админке можно задать произвольные диапазоны символов, каждый диапазон в новой строчке. Формат задания: Первый символ диапазона , последний символ. 0 не хавается.

Усовершенствовал плагин так, что он может теперь решать классическую задачу двухуровневой катологизации сущностей.

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

Например: Журнал -> Год -> Номер

Конечные сущности - статьи - будут заноситься в соответствующие рубрики.

Но я решал свою задачу: растения, которые могут одновременно находится в разных категориях.

Пример работы плагина: Каталог цветущих и декоративных растений.

Для получения такого представления достаточно создать рубрикатор:

Каталог растений -> Типы классификаций -> Растение по классификации

Статьи о растениях могут принадлежать уже любым классификациям

Плагину нужно скормить номер категории "Каталог растений".

Архив плагина:

Плагин следует рассматривать как очень экспериментальный - там ничего не кешируется и не проверяется.

После активации плагина появляются страницы mysite/catalog/А и т. д.

В результате страницы заданного типа попадут в соответствующие страницы каталога по первой букве.

Сегмент catalog можно задать какой угодно.

Пример работы: http://www.filimonov.com.ua/catalog.

Архив плагина: abc_catalog-01.zip.

Можно задать такие опции:


Slug для каталога.
Выводить полные страницы или заголовки.
Выводимые категории (если оставить пустым - все).
Исключаемые страницы
Тип страниц для каталога - задать тип blog, static и т. д.
Имя сущности для заголовка каталога.

На примере этого плагина можно посмотреть как легко в MaxSite CMS можно создавать новый функционал.

Для выборки страниц используется все та же функция mso_get_page(). Перед ее вызовом строится специальная SQL функция mso_sql_build_catalog, которая при помощи оператора like выбирает страницы, название которых начинается на требуемую букву. Эта функция передается в качестве параметра в mso_get_page().

В MaxSite CMS 0-35 пагинация работала только с paginator-3000, поскольку он один мог пагинировать любые сегменты. Теперь, в примере, пагинация происходит при помощи плагина по умолчанию.