ABC-catalog
Добавил некоторые возможности.
Архив плагина:
Раньше настоящий сегмент рубрик category подменялcя на заданный при формировании навигатора. теперь это опционально и по умолчанию не подменяется.
Разница в том, что при подмененном сегменте вывод осуществляется так как задано в файле catalog.php плагина.
Появилась опция На главной каталога все в виде артикля. Если она отмечена, то на главной странице каталога выводятся все заказанные символы со списком статей под каждым из них. И все категории для каталогизации с подкатегориями.
Категория для каталогизации должна быть нулевого уровня, а подкатегории могут быть (а могут и не быть) вложены в категорию для каталогизации не более чем два раза.
Вот пример: Каталог.
Не реализованы возможности гибкой настройки внешнего вида этого всего - не знаю еще как лучше. Пока навигатор функцией отдается заключенный в настраиваемых До и После. Также артикль содержит сперва артикль букв в До и После, затем артикль категорий тоже в До и После. Кроме того, каждая буква и категория 1-го уровня кидается в своих До_блока и После_блока.
Сам вывод находится в процедуре abc_articles().
Кроме того, появились два блока: Навигатор и Артикль.
Блоки предназначены для вывода в шаблоне, использующего блоки для управления контентом и позволяют направлять вывод нужной информации в нужные места шаблона без написания кода.
Про блоки и варианты их использования читать здесь: Обсуждение на форуме поддержки MaxSite.
Произошли некоторые изменения
В функцию abc_navigator() добавил параметр, в котором можно передать page_slug - тогда функция проверит наличие среди каталогизированных страниц такой страницы; можно также передать category_slug - тогда будет проверено наличие такой категории среди каталогизированных категорий.
Если ничего не передавать то навигатор выведется в любом случае.
Модуль вывода навигатора принял такой вид:
- $out = '';
- if ( is_type('page') ) $out = abc_navigator( array('page_slug' => mso_segment(2)) );
- if ( is_type('category') ) $out = abc_navigator( array('category_slug' => mso_segment(2)) );
- if ($out) echo $out;
То-есть можно куда угодно вставить этот блок и навигатор выведется только если мы на каталогизированной странице или категории.
Для вставки в одиночную страницу использовать такой код:- $out = '';
- $out = abc_navigator( array('page_slug' => mso_segment(2)) );
- if ($out) echo $out;
Или
- $options = mso_get_option('abc_catalog', 'plugins', array());
- if ( !isset($options['type']) ) $options['type'] = 'blog';
- if (isset($pages[0]['page_type_name']) and ($pages[0]['page_type_name'] == $options['type'])) echo abc_navigator();
Второй вариант выполнит лишнее действие - получение опций.
Ну и для вывода на страницах только нужных категорий:
- $out = '';
- $out = abc_navigator( array('category_slug' => mso_segment(2)) );
- if ($out) echo $out;
Архив обновленного плагина:
Переделал плагин как советовали в ветке обсуждения на форуме поддержки MaxSite.
Архив плагина:
Для того чтобы навигатор выводился на одиночных страницах заданного для каталога типа, необходимо в файле page.php после if ($pages) вставить следующее:
- // вставка для вывода abc-навигатора на одиночной странице
- $options = mso_get_option('abc_catalog', 'plugins', array());
- if ( !isset($options['type']) ) $options['type'] = 'blog';
- if (isset($pages[0]['page_type_name']) and ($pages[0]['page_type_name'] == $options['type'])) echo abc_navigator();
- // конец вставки для вывода 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, поскольку он один мог пагинировать любые сегменты. Теперь, в примере, пагинация происходит при помощи плагина по умолчанию.










