Записки

Дальнейшие изменения

В адресе страницы с одиночной картинкой идентификатор картинки перекочевал из 2-го в 3-й сегмент, а место 2-го сегмента заняла метка альбома из которого произошел переход к картинке. Если одиночная картинка выводится на своей странице, внизу (в ленте картинок) теперь будут не все картинки, а только из той же галереи что и выводимая. Таким образом ссылка одиночной картинки будет вида pictures/tag/picture.

Значит, добавил автоматически создаваемую метку _all_data_sorting. Альбом, получаемый по этой галерее, содержит все страницы отсортированные по дате добавления. То-есть, у каждой галереи будет свой альбом, содержащий все картинки галереи уже отсортированные по дате добавления файла.

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

Добавил виджет вывода страниц. Можно выбирать метку альбома, количество картинок, поле сортировки и порядок сортировки. Если же выбрать в качестве метки альбома _all_data_sorting то можно получить последние страницы. также, добавил соответствующий модуль.

Вынес вывод в шаблон и добавил возможность шаблонизации. Шаблоны находятся в каталоге templates. Пока есть один шаблон simple.

    Шаблон simple состоит из файлов:
  • index.php - диспетчер, загружающий опции и передающий управление
  • alboms.php - содержит вывод всех имеющихся альбомов по меткам
  • gallerys.php - содержит вывод всех картинок альбома
  • picture.php - содержит вывод конкретной картинки
  • options.php - задаются опции шаблона

Шаблон можно выбирать в настройках из существующих в каталоге templates.

Возможность ставить в соответствие картинке запись уже была реализована. Теперь добавил возможность включения автоматического создания соответствующих страниц, как для альбомов, так и для отдельных картинок. Это позволить комментировать картинки и альбомы, а также задавать им текст и название. Соответствие будет задаваться по слугу. К идентификатору картинки будет добавляться префикс и, таким образом, будет получаться 3-й сегмент адреса страницы картинки. Для получения страницы, соответствующей альбому, префикс будет добавляться к метке альбома и полученная строка заноситься во 2-й сегмент.

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

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

Кроме того, пришлось изменить плагин taggallery_rater в связи с тем, что идентификатор картинки перекочевал в 3-й сегмент.

Обратите внимание - автоматически созданные страницы не удаляются при деинсталляции плагина.

Да, сопряженные страницы картинок и альбомов создаются не зараниее сразу все а только в момент посещения страницы. Вначале происходит попытка получить страницу по соответствующему слугу. И в случае неудачи создается страница.

Плагин «Модули» входит в стандартный набор поставки MaxSite и его описание здесь: плагин «Модули».

Плагин обеспечивает гораздо более простое управление содержимым страниц и для его использования я решил изготовить специальный шаблон Phoeniks.

Стандартно модули можно определять либо в шаблоне либо в плагине «Модули». Также предполагается что в шаблоне определены места под модули. Затем, в админке плагина осуществляется управление: в каких местах какие модули выводить.

Однако мне нужно чтобы модули могли определять также и любые плагины и для этого пришлось несколько переделать плагин «Модули». Теперь в плагинах можно определять любое количество файлов - модулей таким же макаром, как и раньше.

То-есть мы в папке modules любого плагина создаем подключаемые файлы-модули а в папке modules/options инициализируем одноименные настройки. Все это делаем по образу и подобию как и модуль test.

Плагину осталось только прокричать про то что у него есть модули, достойные для показа. Делает он это в процедуре plugin-name_autoload так:

  1.  global $module_in_plugin;
  2.  $module_in_plugin['taggallery1'] = array('plugin_name' => 'taggallery' ,'file_name' => 'navigator.php', 'module_name' => 'taggallery_navigator');

Теперь осталось оснастить плагины модулями для вывода. Файл плагина:

Модуль с таким же именем, как и родной потому что я заменяю им родной.

Переделал плагин как советовали в ветке обсуждения на форуме поддержки 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 не хавается.

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

Пример работы можно посмотреть в этом блоге в Галерее изображений

Для голосования за картинки посетителями нужно установить плагин Taggallery-rater

Далее...

Перед внесением дальнейших изменений в плагин галереи изображений TagGallery, чтобы потом самому можно было разобраться что к чему (проблемы с этим уже есть) придумаем модель.

Далее...