Виджет "Таблица картинок"

+36
4.28K
Всем привет!

В дополнении к серии постов дополнений для InstantCMS 2.x (тут и тут) спешу поделиться следующим виджетом — "Таблица картинок".

Пример его работы можно посмотреть на видео:


Из названия понятно, что виджет выводит ряд картинок в виде таблицы. Картинки динамически меняются с различными анимационными эффектами. Клик по одной из картинок ведет на страницу ее просмотра (photos/view/{id-картинки}) с комментариями и голосованием. Варианты эффектов смены картинок настраиваются в разделе "Параметры анимации" виджета. В разделе "Опции" выбирается из какого альбома показывать картинки, а также несколько других параметров.

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

Установка производится стандартным способом: Панель администрирования -> Компоненты -> Установить пакет дополнения, затем выбираем заранее скачанный пакет с виджетом и следуем инструкциям по установке. Тут написано немного подробнее.

Думаю виджет может быть полезен для привлечения пользователей сайта к просмотру определенного альбома.

Если у кого есть предложения и пожелания буду рад их выслушать.

P.S. Во избежании недопонимания, следует учитывать следующее: чтобы картинки динамически менялись их количество должно быть больше чем максимальное количество в строке таблицы (например если длина строки составляет 7 ячеек, то картинок в альбоме должно быть минимум 8, в противном случае виджет устанавливает длину строки равную количество картинок / 2). Аналогично если мы хотим выводить 3 строки в таблице по 7 картинок в каждой строке то в альбоме должно быть 22 картинки (3*7+1) или больше. Если картинок меньше, например 18 то виджет будет показывать не 3, а 2 строки по 7 картинок (т.е. 14 картинок одновременно).

-2
Алексей Т Алексей Т 9 лет назад #
Файл не найден пишет
+1
Val Val 9 лет назад #
Перезалил.
Может у меня руки не из того места растут)) Второй раз такая фигня. Вроде выложил, проверил - все работает, проходит время и "Файл не найден" (
0
Александр Сергеевич Александр Сергеевич 9 лет назад #
Как не меняй настройки(кол-во строк, картинок...), почему-то выводит только по 2 картинки. Во всех позициях(тело, сайдбар). Эфекты смены работают.

Спойлер
+2
Val Val 9 лет назад #
Я уже писал на форуме, откуда собственно и пошла эта тема... Но это мое упущение что не продублировал в теме.

Такое поведение с виджетом связано с малым количеством фотографий в альбоме (в вашем случае 4 шт).
Чтобы картинки динамически менялись их количество должно быть больше чем максимальное количество в строке таблицы (например если длина строки составляет 7 ячеек, то картинок в альбоме должно быть минимум 8, в противном случае виджет устанавливает длину строки равную количество картинок / 2). Аналогично если мы хотим выводить 3 строки в таблице по 7 картинок в каждой строке то в альбоме должно быть 22 картинки (3*7+1) или больше. Если картинок меньше, например 18 то виджет будет показывать не 3, а 2 строки по 7 картинок (т.е. 14 картинок одновременно).

В общем такая математика.
0
Shuma Shuma 9 лет назад #
А можно ли выводить в данной таблице фотографии пользователей из их альбомов?
+1
Val Val 9 лет назад #
В настройках указываете какой альбом хотите показывать. Если в этом альбоме фотографии, то он будет показывать фотографии )) Или вы хотите выводить аватарки пользователей?
0
Shuma Shuma 9 лет назад #
Нет, именно фото пользователей. Но чтобы была возможность выбрать все альбомы, а не один
+1
Val Val 9 лет назад #
Я намеренно делал вывод одного альбома. Дело в том что виджет грузит все картинки из альбома одновременно, а потом выводит их попеременно. Если грузить все альбомы сразу это плохо отразиться на трафике, страница будет долго загружаться, если в альбомах будет много фотографий.
Вообще у меня есть один компонент-концепт который заменяет функционал альбомов iCMS2. Так вот в нем грузятся сразу все фотографии, с вытекающими отсюда последствиями. Если интересно могу вам его скинуть.
+1
Xamle Xamle 9 лет назад #
Интересно!!! Спасибо, + однозначно!!! glasses
0
platon platon 9 лет назад #
не работает, по крайней мере у меня, шаблон не default но где нужно изменил пути с default на свой, виджет установился но не отображает, написал автору в личку может поможет..., на видео смотрится симпатично.
+1
Val Val 9 лет назад #
будем разбираться в личке))
+2
SpaceSel SpaceSel 9 лет назад #
Установил, работает.
0
platon platon 9 лет назад #
работает но только не на главной страницы, т.к. я думаю конфликт с другим виджетом, слайдер контента от site-stroi.ru
0
Alibek Alibek 7 лет назад #
Здравствуйте, Вы случайно не помните как решили эту проблему? у меня тоже виджет конфликтует со слайдером контента.
+3
Олег с клещами Олег с клещами 9 лет назад #
Немного поправил один файл. Чтобы корректно работал в любом шаблоне надо вместо:
Код PHP:
  1. <?php $this->addCSS('templates/default/css/imagegrid.css'); ?>
  2. <?php $this->addJS('templates/default/js/modernizr.custom.26633.js'); ?>
  3. <?php $this->addJS('templates/default/js/jquery.gridrotator.js'); ?>
написать:
Код PHP:
  1. <?php $this->addCSS("templates/{$this->name}/css/imagegrid.css"); ?>
  2. <?php $this->addJS("templates/{$this->name}/js/modernizr.custom.26633.js"); ?>
  3. <?php $this->addJS("templates/{$this->name}/js/jquery.gridrotator.js"); ?>
Иначе работает только на дефолте.
0
Олег с клещами Олег с клещами 9 лет назад #
Файл, конечно imagegrid.tpl.php smile
+1
Val Val 9 лет назад #
Спасибо! Я не проверял на других шаблонах...
r2 рассказывал про этот момент в скринкасте про написание виджетов.
Кто то знает/проверял при установке файлы копируются в дефолтный шаблон или если есть другой активный, в него?
0
Олег с клещами Олег с клещами 9 лет назад #
Файлы копируются в дефолт, но я обычно параллельно копирую и в свой шаблон. И когда надо почудить с css или tpl, то конечно лезешь в свой, а там оказывается подтягиваются css и js из дефолта - вот тут может быть путаница. Мне кажется всем разрабам надо просто принять единый синтаксис подтяжки типа:
Код PHP:
  1. <?php $this->addCSS("templates/{$this->name}/css/mycss.css"); ?>
то есть двойные кавычки и {$this->name} вместо названия шаблона.
0
Сергей Сергей 9 лет назад #
+ Всё работает но на странице только в одном экземпляре. sick
0
Romanovcmc Romanovcmc 9 лет назад #
А реально сделать так, чтобы не только из одного альбома показывало? а из нескольких, любых в общем.
+2
Val Val 9 лет назад #
Конечно реально)) все упирается в вариант реализации... Пробовал генерировать мультисписок по разному, что-то инстант ругается(( поэтому вот вариант с рукописным вводом ID альбомов:

в файле options_form.php:
коментим или удаляем строки с 14 по 32, там где new fieldList('options:album_id', array( ...
выше добавляем следующее:
Код PHP:
  1. new fieldCaption('options:album_ids', array(
  2. 'title' => LANG_WD_CONTENT_IMAGEGRID_ALBUMID,
  3. 'hint' => "Введите через запятую ID альбомов",
  4. 'rules' => array(
  5. array('required')
  6. )
  7. )),
в файле widget.php:
меняем 7 строку на
Код PHP:
  1. $album_ids = explode(',', $this->getOption('album_ids'));
и вместо 30-ой строки вставляем
Код PHP:
  1. $photos = array();
  2. foreach ($album_ids as $album_id) {
  3. $photos += $model->getPhotos($album_id);
  4. }
и проверяем как работает....

P.S. Не забываем что очень большое суммарное количество фото в альбомах загружаемых за раз замедляет загрузку страницы сайта
0
Romanovcmc Romanovcmc 9 лет назад #
Спасибо. Учту.
0
zotak zotak 8 лет назад #
Подскажите для версии 1.2 это тоже подходит ?
0
Val Val 8 лет назад #
Да должно работать, только исходные строки немного сдвинулись на 9 и 31-ую строки joke
0
universe universe 9 лет назад #
при включенном кэшировании сайта, модуль не отображается
+1
universe universe 9 лет назад #
решил так:
в \system\controllers\content\widgets\imagegrid\widget.php

после 3 строчки:
class widgetContentImagegrid extends cmsWidget {

добавил:
public $is_cacheable = false;
+1
Val Val 9 лет назад #
ну как вариант =)
0
ValeraK ValeraK 9 лет назад #
Виджет работает только с альбомами, а можно ли сделать что б он работал с любым типом контента где есть поле изображение?
+2
Val Val 9 лет назад #
В теории конечно можно, но сейчас это не реализовано. Позже я буду это делать для своего сайта, тогда выложу обновление.
0
ValeraK ValeraK 9 лет назад #
Отлично, очень ждем) Виджет тогда станет совсем универсальным)
0
Рейк Накейкл Рейк Накейкл 9 лет назад #
Установил на 2.1.1
На страницах с виджетом ошибка
Fatal error: Class 'widgetContentImagegrid' not found in /home/пользователь/сайт.ру/www/system/core/core.php on line 666
Подскажите пожалуйста как лечить?

В коре.пхп на этой строчке вот это:
Код PHP:
  1. $widget_object = new $class($widget);
0
Рейк Накейкл Рейк Накейкл 9 лет назад #
Ссори, я тормоз. Первый раз устанавливал дополнение, не скопировал файлики из package, думал они из админки загрузятся.
ВСе работает, все ок )) Спасибо!
+1
Xamle Xamle 8 лет назад #
Модифицировал маленько виджет. Добавил возможность показа из всех фотоальбомов, ограничение загружаемых картинок, сортировка по дате добавления, по комментариям и по рейтингу фотографий. На всякий случай делаем бэкап файлов. Перед заменой уберите виджет с сайта, чтобы не было белого экрана. В \system\controllers\content\widgets\imagegrid заменяем файл widget.php полностью на вот этот код [hide]
Спойлер
и файл options.form.php меняем на вот это
Спойлер

Еще от автора

СтопХам - userscript для instantcms.ru
Всем привет! Презентую чужую разработку со своей небольшой доработкой .
Предпросмотр для InstantCMS 2
Всем привет!
Just4Fun - Аватарки!
Здравствуйте, любители InstantCMS 2.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.