Надеюсь, то, что я опишу ниже, кому-нибудь да пригодится.
Итак, у меня появилась потребность на каждую страницу сайта после основного текста выводить галерею соответствующих этой странице фотографий. Для достижения этой цели решено было использовать дефолтный плагин ImageGallery. Для удобства дальнейшего использования и структуризации всех фотографий было решено использовать в названиях папок алиасы страниц, на которых в дальнейшем должны появляться фотографии. Т.е. если у нас есть страница первого уровня, скажем, "О компании" с алиасом, скажем, "company", то путь к изображениям для этой страницы должен выглядеть следующим образом: "uploads/images/company/".
Сказано — сделано.
Ищем здесь подходящую нам переменную, находим $mHierarchyPath, которая должна выводить путь до текущей страницы, например "company" для первого уровня, или "company/contacts" — для второго, и т.д.
После этого в шаблон добавляем красивый динамический путь до изображений:
Code: Select all
{capture assign="gallery_path"}uploads/images/{$content_obj->mHierarchyPath}/{/capture}
Теперь, в шаблон, после тега {content} вставляем следующую конструкцию:
Code: Select all
{ImageGallery picFolder=$gallery_path}
Внимание!
И вот тут начинается самое интересное.
Если мы перейдём на страницу с неким алиасом, а одноимённой папки с изображениями на сервере нет, то у нас плагин не заработает и не даст загрузиться остальной части сайта. Это нам совершенно не подходит, потому что для некоторых страниц нам совсем не обязательно делать галерею. И не хочется создавать пустые папки, если они не нужны.
Учитывая, что я вовсе не программист и мало что в этом смыслю, пришлось задействовать мануал по PHP, где нашлась замечательная функция is_dir. Это нам вполне должно подойти.
Открываем файл plugins/function.ImageGallery.php и добавляем туда небольшой хак:
Находим строку:
Code: Select all
//Read Image Folder
Code: Select all
if (is_dir($picFolder)) {
Потом находим строку:
Code: Select all
function smarty_cms_help_function_ImageGallery() {
Code: Select all
}
Вот и всё. Теперь, если у нас есть папка с изображениями в uploads/images/, имя и путь которой совпадают с алиасом текущей страницы, то мы увидим после контента галерею всех изображений, находящихся в этой папке.
Остаётся только с помощью CSS оформить всё это дело на свой вкус и радоваться жизни.
Спасибо за внимание. )
P.S. Версия CMSMS — 1.5.2
С уважением.