дополнительная информация в окне tickbox

Главные вкладки

Аватар пользователя Zigs Zigs 14 мая 2009 в 18:37

Есть необходимость вписать в окно tickbox'а еще немного нужной информации. Ну в то окно, в котором показывается большая картинка. Крутил, вертел, никак не могу понять как это сделать. Ведь он забирает информацию исключительно с тега <а>. В частности, нужно чтобы title в это окне выводился не просто текстом, а ссылкой на ноду.
Как такого добиться? Интересуют все варианты.

Комментарии

Аватар пользователя Zigs Zigs 23 июня 2009 в 19:15

Пришлось успешно решать вопрос самому путем некоторой модернизации модуля Thickbox, а именно файла thickbox.js. Знаю, что модули менять не хорошо, но другого решения не нашел.
Для передачи самой информации для отображения пришлось использовать технологию ajax. В корневую директорию сайта был добавлен файлик, который по запросу выдает нужный xml. Именно этот файл, с нужными параметрами устанавливается в href thickbox'а. Чтобы это хозяйство заработало, надо у тега А поставить стиль thickbox-ajax.

В файл thickbox.js был добавлен еще один инициализатор, в котором происходит вызов скрипта для получения нужных данных и вызов метода tb_show с передачей туда полученного xml.

Drupal.behaviors.initThickboxAjax = function(context) {
        tb_init1('a.thickbox-ajax, area.thickbox-ajax, input.thickbox-ajax');
        imgLoader = new Image(); //
}

function tb_init1(domChunk)
{
        $(domChunk).click(function() {
                var t = this.title || this.name || null;
                var a = this.href || this.alt;
                var g = this.rel || false;
       
                jQuery.get(
                        a,
                        function(xml) { tb_show ( null, null, null, xml); },
                        'xml'
                );
       
   
                this.blur();
                return false;
        });

}

Метод tb_show, который показывает большую картинку получил еще один параметр, в который может передаваться xml. Потом идет сам разбор полученных данных. Ну а дальнейшая визуализация уж потом делается кому как надо в том же самом tb_show.

function tb_show(caption, url, imageGroup, xml) { //function called when the user clicks on a thickbox link

  if (xml)
  {
        var caption = jQuery('title', xml).text();
        var url   = jQuery('image', xml).text();
        var masterurl = jQuery('nodepath', xml).text();
        var downloadurl = jQuery('download', xml).text();
  }

  и т.д.

Все фичи стандартного thickbox'а работают без изменений.
Вот. Критикуйте. А может пригодится кому.
Посмотреть как это работает можно на карусельке на моем сайте http://www.bestgameplace.ru Smile