Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
      • Вывод изображений
      • Вывод списка галерей
      • Генерация превью при загрузке
      • Расширение функционала, часть 1
      • Расширение функционала, часть 2
      • Расширение функционала, часть 3
      • Переход с MaxiGallery
      • Переход с EvoGallery
      • Переход с PssGallery
      • Переход с MultiPhotos
      • Подключение редактора
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • SimpleGallery

SimpleGallery: расширение функционала, часть 3

  • Дополнения
  • SimpleGallery
  • Расширение функционала, часть 3
368

SimpleGallery: расширение функционала, часть 3

В develop-сборке Evo Custom v1.1b-d7.1 появилось новое событие OnParseProperties, которое сразу вызвало у меня интерес.

Событие срабатывает при разборе параметров сниппетов и плагинов, что позволяет эти параметры подменять. И хотя параметры плагинов пока обрабатываются как-то криво, можно воспользоваться событием OnParseProperties для вмешательства в работу SimpleGallery.

Есть сайт, где реализовано две галереи с помощью SimpleGallery — в одной картинки с образцами продукции, а во второй хранятся фотографии сотрудников с их биографиями (по смыслу это не совсем галерея, просто удобно их хранить так, а не в документах). Логично было бы вкладки с галереями подписать по-разному, но в SimpleGallery название вкладки (в данном случае — «Галерея») задается в параметрах плагина, который может быть только один. Выход из положения — плагин на событие OnParseProperties:

$e = &$modx->event;
if ($e->name == "OnParseProperties") {
    if ($element == "SimpleGallery") {
        if (isset($args['template']) && $args['template']==6) {
            $out = array ();
	    //задаем новое значение параметра tabName
            $out["tabName"] = "Сотрудники";
	    $e->_output = $out;
        }
    }
}

Теперь для страницы «Список сотрудников» с шаблоном 6 вкладка будет называться «Сотрудники», а во всех остальных случаях — «Галерея». Можно проверять и $args['id'] — id страницы, на которой вызывается плагин.

Немного подумав, я решил сделать возможность подменять в onParseProperties не только параметры плагина, но и свойства соответствущего ему класса. Таким образом появляется возможность использовать произвольные списки загружаемых js- и css-файлов, что в сочетании с параметром controller позволяет (в теории) менять интерфейс и логику работы плагина для разных страниц. Например, для разных типов галерей можно использовать разные наборы дополнительных полей.

Аналогично можно изменить работу и других моих плагинов, тем более, что они все делаются из общей заготовки. Например в SimpleFiles теперь появляется возможность создавать разные типы файловых архивов (например, в одном документе храним только zip, в другом только doc и xls), меняя с помощью события OnParseProperties список разрешенных для загрузки файлов.