Но, независимо от моего решения, пользователи могут подключать любые понравившиеся им ява-скрипты.
Подключение произвольных всплывающих оконДля подключения произвольного ява-скрипта всплывающих окон необходимо сделать следующее.
1. В деректории plugins/content/mavikthumbnails/decorators/popups создать директорию назвав ее по названию скрипта. Название может быть произвольным, но в дальнейшем необходимо его придерживаться. Для примера возьмем fancybox. В реальных проектах замените на свое название.
2. Внутри этой директории создать xml-файл, с таким же названием, следующего содержания:
<?xml version="1.0" encoding="UTF-8"?>
<popup>
<name>fancybox</name>
<title>Fancybox (jQuery)</title>
</popup>
name - системное название скрипта, должно совпадать с названием директории
title - отображаемое название скрипта, может быть произвольным
3. Внутри директории создать файл DecoratorFancybox.php внутри которого должен находиться класс
class DecoratorFancybox extends DecoratorAbstract
со следующими методами:
public function __construct(&$plugin)
{
$this->type = 'fancybox';
parent::__construct($plugin);
}
public function addHeader()
{
parent::addHeader();
// Здесь подключить необходимые ява-скрипты и стили
}
В большинстве случаев реализации этих методов достаточно. Но при необходимости можно еще использовать:
item() - для выполнения какого либо действия для всех объектов обрабатываемых плагином (статьи, модули и т.п.)
Для досупа к объекту можно использовать $this->plugin->item
4. В директории plugins/content/mavikthumbnails/fancybox (либо внутри вашего шаблона) создать файл fancybox.php
Это шаблон, которым будет заменяться оригинальное изображение.
Внутри него доступны следующие переменные:
$this->image - объект типа Plugin\Content\MavikThumbnails\ImgTag. Его свойства и методы можно посмотреть в файле imgtag.php
$this->info - объект типа MavikThumbInfo, содержит два свойства: original и thumbnail. Первое содержит информацию об оригинальном изображении, второе о превью. Внутри каждого из них есть свойства: url, path (путь в файловой системе), width, height, size (объем файла), type (image/jpeg, image/png, image/gif), local (true если изображение находиться на сервере, false - если с другого).
$this->item - обрабатываемый плагином объект (может быть разных типов)
$this->params - параметры обрабатываемого объекта
$this->isThumbnail - является ли данное изображение превьюшкой (т.е. было ли создано превью, или изображение осталось не обработанным).
Простой пример шаблона (реальные получаются несколько сложнее):
<a class="fancybox" rel="group" href="<?php echo $this->info->original->url ?>"><php echo (string) $this->image; ></a>