[ms2Gallery] Версия 2.0


С новым годом, друзья! Сегодня я хочу рассказать вам об изрядно переписанной ms2Gallery 2.0.

— Весь код заново просмотрен и отформатирован в PSR-2.
— Улучшена сортировка картинок, настройка «ms2gallery_exact_sorting» удалена.
— Улучшен вывод картинок в админке, настройка «ms2gallery_thumbnail_size» удалена. Больше вы не должны видеть логотип вместо превьюшек — они подключаются в зависимости от настроек источника файлов.
— В properties файла пишется дата съёмки EXIF, если скрипт может её получить.

Один единый чанк

Все параметры &tplRow, &tplOuter и т.д. заменены на один &tpl. Старые чанки больше не устанавливаются, вместо них один Fenom чанк как у miniShop2. Соотвественно, также подключается Fotorama.

Чтобы сохранить свой вывод на рабочих сайтах после обновления, есть 2 варианта:
— просто указать пустой &tpl и добавить все старые чанки:
[[!ms2Gallery?
    &tpl=``
    &tplRow=`tpl.ms2Gallery.row`
    &tplOuter=`tpl.ms2Gallery.outer`
    &tplEmpty=`tpl.ms2Gallery.empty`
    &tplSingle=`tpl.ms2Gallery.single`
]]
— или более правильный способ — переписать новый чанк tpl.ms2Gallery так, чтобы он содержал ваш старый код, только на Fenom. Для тех, кто это уже делал в miniShop2 — проблем не будет.

Thumbnails

Изменён формат параметра thumbnails источника файлов. Теперь можно указывать ключи массивам параметров, и именно по ним будут называться превьюшки. То есть, вместо
[{"w":120,"h":90,"q":90,"zc":"1","bg":"000000"},{"w":360,"h":270,"q":90,"zc":"1","bg":"000000"}]
теперь можно указать
{"small":{"w":120,"h":90,"q":90,"zc":"1","bg":"000000"},"medium":{"w":360,"h":270,"q":90,"zc":"1","bg":"000000"}}
и использовать {$file.small} вместо {$file['120x90']}.

Соотвественно, названия превьюх и пути к ним больше никак не привязаны к размерам. Параметры w и h можно заменить на mw, mh и любые другие, какие только позволяет phpThumb.

Более того, если у вас есть несколько источников с разными размерами и вы хотите выводить файлы из них в одной выборке — теперь это возможно! Вы можете даже использовать один чанк с такими общими именами превьюшек.

Понятное дело, что текущие настройки thumbnails при обновлении не перезаписываются. Вам нужно поменять их самостоятельно и перегенерировать все превьюшки.

Поддержка miniShop2

Новая версия ms2Gallery позволяет полностью заменить родную галерею товаров. Зачем это делать?
1. Единообразие с остальными страницами.
2. Возможность отключать файлы, без удаления.
3. Дополнительные поля файлов.
4. Теги файлов (с оговоркой).

Для правильной работы вам нужно:
1. Обновить miniShop2 до версии 2.4.8-pl.
2. Включить системную настройку ms2gallery_sync_ms2.
3. Импортировать картинки из ms2 в ms2gallery через консольный скрипт core/components/ms2gallery/cli/import_ms2.php
4. Проверить, что родная галерея спряталась, а выводится только ms2Gallery c источником файлов для товаров (по умолчанию MS2 Images). Очень важно, чтобы новая галерея подхватила старый источник, иначе будут генерироваться дубликаты.

Имейте в виду, что старая галерея просто скрыта, но записи в её БД будут синхронизироваться с новой. Это сделано для поддержки родных сниппетов ms2 и сторонних дополнений.

Есть одна особенность, о которой нужно знать: если вы будете импортировать картинки в старую галерею через её родной процессор, то они будут также обновляться в новой галерее, но c изменением id файлов. Теги файлов привязаны к этим id и при таком раскладе будут сбиваться.

То есть:
— или все действия с файлами вы делаете только через админку и процессоры ms2Gallery (и тогда синхронизация работает в одну сторону старой галереи).
— или вы импортируете файлы через сторонние дополнения в старую галерею, они синхронизируются с новой и вы просто не используете теги.

По другому, к сожалению, пока никак.

Поддержка Tickets

Раз уж у нас есть поддержка miniShop2, было бы странно не поддержать и Tickets, у которого вообще никаких файлов в админке не выводится.

Для исправления этого недостатка вам нужно:
1. Обновить Tickets до версии 1.8.0-pl.
2. Включить системную настройку ms2gallery_sync_tickets.
3. Импортировать файлы тикетов в ms2Gallery через консольный скрипт core/components/ms2gallery/cli/import_tickets.php
4. Проверить, чтобы галерея использовала правильный источник файлов (по умолчанию Tickets Files).

После этого вы сможете загружать файлы в тикеты с фронтенда и видеть их в админке. Удалять, редактировать и т.д.
Тут нужно только помнить, что если ссылка на файл вставлена в содержимое страницы, то при удалении через ms2Gallery она не будут убрана — так что следите за этим самостоятельно. Ну и сортировка на вывод через TicketMeta никак не влияет.

С тегами ситуация такая же, как и у ms2. А в остальном — нормальная двухсторонняя синхронизация файлов.

Консольные скрипты

Помимо двух уже упомянутых скриптов, теперь есть еще и третий — core/components/ms2gallery/cli/generate.php. Это скрипт для обновления всех превью ms2Gallery.

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

Заключение

Как видите, разом выпущены новые версии трёх дополнений. Хоть я и старался всё отладить, где-то могут проскочить ошибки. Не забываем про резервные копии, ну и большие серьёзные проекты я бы сразу так не советовал обновлять.

Обновление miniShop2

— Такой же формат thumbnails как и у ms2Gallery.
— Убрана системная настройка «ms2_product_thumbnail_size», за ненадобностью.
— Всякие улучшения для поддержки ms2Gallery.

Обновление Tickets

— Такой же формат thumbnails как и у ms2Gallery. Соответственно, для новых файлов превьюшки будут храниться в отдельной директории thumb.
— Форма редактирования тикета теперь обновляется данными с сервера. Удалённые файлы и ссылки на них пропадают сразу после сохранения.
— Обновлён код замены ссылок на файлы в тексте тикета. Надеюсь, больше не будет битых ссылок при сохранении. Но так как у меня и раньше их повторить не удавалось, 100% гарантии нет.
— Всякие улучшения для поддержки ms2Gallery.

Цена

В общем и целом, все три дополнения теперь более-менее унифицированы по работе с файлами. Даже загрузчик у всех одинаковой версии, чтобы при пережатии на фронтенде совпадал хэш файлов и дубликаты не грузились.

В связи с таким обновлением функционала, ms2Gallery теперь стоит 1490 рублей. Пока идут скидки в магазине, вы можете купить её почти по прежней цене — 1192 руб. Старые покупатели обновляются бесплатно.

Всем спасибо за внимание!
06 января 2017, 21:18    Василий Наумкин   G+  
8    1982 +28

Комментарии (58)

  1. Виталий Батушев 07 января 2017, 07:32 # +1
    Внезапно стала вызывать ошибку 500 (PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)) такая конструкция:
            [[!pdoPage?
                &element=`ms2GalleryResources`
                &tpl=`@INLINE
                <div class="pi-gallery-item">
                    <div class="pi-img-w pi-img-hover-zoom">
                        <img src="[[+360x270]]" title="[[+360x270.name]]" />
                        <div class="pi-img-overlay pi-img-overlay-darker">
                            <div class="pi-caption-centered">
                                <div>
                                    <a href="[[+uri]]" class="pi-colorbox">
                                        <span class="pi-caption-icon pi-caption-scale icon-search"></span>
                                    </a>
                                    <h3 class="h4 pi-weight-300"><a href="#" class="pi-link-white">[[+pagetitle]]</a></h3>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                `
                &typeOfJoin=`inner`
                &includeThumbs=`360x270`
                &limit=`6`
                &tplPageWrapper=`@INLINE <div class="pi-pagenav pi-center"><ul>[[+pages]]</ul></div>`
                &tplPage=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a></li>`
                &tplPageActive=`@INLINE <li><a href="[[+href]]" class="pi-active">[[+pageNo]]</a></li>`
            ]]
    
    С предыдущей версией таких проблем не было.
    Без pdoPage выводится без проблем.
    1. Василий Наумкин 07 января 2017, 08:14 # +2
      Исправил, можно обновляться на 2.0.1
      1. Виталий Батушев 07 января 2017, 09:34 # 0
        Премного благодарствую!
    2. but1head 07 января 2017, 18:03 # 0
      Процессор загрузки не менялся? А то только адаптировал ms2gallery под 1.6
      1. Василий Наумкин 07 января 2017, 18:07 # +1
        Да вроде не особо, стал почти таким же как у miniShop2. По идее, всё должно работать так же.
      2. Сергей Водолагин 07 января 2017, 20:49 # 0
        Подскажите как на Fenom вывести размер фото

        [[+properties.width]]
        [[+properties.height]]
        
        1. Василий Наумкин 07 января 2017, 21:00 # +2
          Если речь про новую версию с одним чанком, то
          {foreach $files as $file}
          	{$file.properties.width}
          	{$file.properties.height}
          {/foreach}
          1. Сергей Водолагин 07 января 2017, 21:08 # +1
            Спасибо!!!

            Может ещё что-то нужно переделать?
            <div class="catalog-menu my-gallery" itemscope itemtype="http://schema.org/ImageGallery">
                {if $files?}
                    {foreach $files as $file}
                        <figure class="catalog-menu-item" itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
                          <a href="{$file['url']}" title="{$file['name']}" itemprop="contentUrl" data-size="{$file.properties.width}x{$file.properties.height}">
                            <img src="{$file['300x225']}" itemprop="thumbnail" alt="{$file['alt']}">
                            <h4 class="post__title">{$file['name']}</h4>
                          </a>
                          <figcaption itemprop="caption description">{$file['name']} {$file['description']}</figcaption>
                        </figure>
                    {/foreach}
                {else}
            
                {/if}
            </div>
            Это для photoswipe использую
        2. Максим Степанов 08 января 2017, 05:38 # 0
          Здравствуйте, подскажите только у меня не срабатывает скрипт generate.php? Все обновлено до последний версии, запускаю консолью.
          1. Василий Наумкин 08 января 2017, 07:38 # 0
            s1@test:~$ php ~/www/core/components/ms2gallery/cli/generate.php
            Generated previews for 13 files in 2.61 sec.
            Synchronized 9 files with miniShop2 in 0.04 sec.
            Synchronized 4 files with Tickets in 0.03 sec.
            
            А у тебя что показывает?
            1. Максим Степанов 08 января 2017, 07:46 # 0
              Дело в том что и ничего не выдает, просто бесконечный процесс загрузки
              1. Василий Наумкин 08 января 2017, 07:49 # +1
                А консолью сервера ты называешь компонент Николая?

                Нет, друг, мой скрипт нужно запускать из настоящей консоли сервера
                1. Максим Степанов 08 января 2017, 07:52 # 0
                  Да я про консоль Николая, спасибо буду пробовать
          2. Антон 09 января 2017, 02:02 # 0
            Огромный шаг к объединению минишопа и тикетса.
            Осталось окончательно их объединить.
            1. Василий Наумкин 09 января 2017, 08:42 # +1
              Нет.
            2. Алексей Титов 10 января 2017, 01:35 # 0
              Здравствуйте. После обновления miniShop2 до 2.4.8 перестают работать кастомные плагины, в лог пишет ошибку:
              miniShop2(ERROR @ /var/www/user/www/core/components/minishop2/model/minishop2/minishop2.class.php : 459) [miniShop2] Could not load plugin at "/var/www/user/www/[[+core_path]]components/msplfeatures/index.php"
              1. Василий Наумкин 10 января 2017, 05:22 # +1
                В документации написано, что можно использовать переменные {base_path}, {core_path} и {assets_path}.

                А вообще, обновись — вернул возможность использовать плейсхолдеры с одним плюсом, типа [[+core_path]].
                1. Алексей Титов 10 января 2017, 09:16 # 0
                  Спасибо. Заменил в resolve.plugin.php
                  $miniShop2->addPlugin('msplFeatures', '{core_path}components/msplfeatures/index.php');
                  Ну, и обновился тоже
              2. Wassi Wassinen 11 января 2017, 23:12 # 0
                Василий, спасибо за унификацию! Объединил с тикетами. Скажи, как ограничить кол-во загружаемых файлов в форме?
                1. Василий Наумкин 12 января 2017, 06:47 # 0
                  Никак.
                  1. but1head 18 января 2017, 22:18 # +1
                    Василий, добавьте, пожалуйста, ограничение на загрузку.
                    Мой ms2gUploader из-за новых обновлений ms2g поломался, а обновлять его не вижу смысла т.к. теперь в тикетс это дело реализовано. Только ради этого и писал его. Все равно компонент только в связке с тикетс используют.
                    1. Василий Столейков 22 мая 2017, 16:21 # 0
                      обновлять его не вижу смысла т.к. теперь в тикетс это дело реализовано
                      Не согласен!
                      Реализована только синхронизация файлов тикетс и ms2Gallery, но это в 2 раза больше записей в таблицах (возможно и файлов в источниках файлов). Зачем лишние сотни мегабайтов дублирующихся записей, если можно напрямую в ms2Gallery грузить?

                      ms2gUploader — очень классная штука! Вот если она научится ещё понимать и выводить разные типы файлов (не только изображения) + получит поддержку тегов ms2Gallery, то будет очень достойное дополнение к ms2Gallery.
                2. Андрей 14 января 2017, 11:43 # 0
                  Василий, подскажите, как исправить. Обновил Minishop до последней версии и у меня пропали все фото товаров.
                  В логе вот что:
                  (ERROR @ /core/components/minishop2/processors/mgr/gallery/getlist.class.php : 105) Array
                  (
                      [0] => 42S22
                      [1] => 1054
                      [2] => Unknown column 'msProductFile.active' in 'field list'
                  )
                  1. Василий Наумкин 14 января 2017, 13:43 # 0
                    Посмотри, может у тебя тоже не создалась колонка.
                    1. Андрей 14 января 2017, 17:20 # 0
                      Да, все так. Добавил поле, все появилось. Спасибо
                  2. Комментарий был удален.
                    1. Комментарий был удален.
                      1. Комментарий был удален.
                        1. Комментарий был удален.
                          1. Комментарий был удален.
                            1. Комментарий был удален.
                            2. Комментарий был удален.
                              1. Василий Наумкин 27 января 2017, 08:50 # +1
                                Попробуй почитать документацию.

                                Все дальнейшие вопросы — в поддержку платных дополнений магазина. Этот флуд удаляю.
                      2. Алексей Смирнов 28 января 2017, 20:24 # 0
                        Доброго дня.
                        При использовании TicketForm:
                        Фронтенд. Перетаскиваем фотографию на поле загрузки — Файл по пути записывается правильно, а вывод пути формируется посредством другого источника а именно Tickets Files. В админке по ms2Gallery все нормально.
                        В общем-то проблема только в выводе на фронтенд.
                        Замечено: Если я оставляю настройку: tickets.source_default равную пути Тикетов а не галереи, то фоки загружаются именно в тикетный раздел файлов (tikets/-id-/) ну и соответственно в админке фотки не видем тк там Источник галереи (при переключении на Тикетный — фотки видим). А на фронт-енде мы видем фотки и все красиво.
                        Менял настройки source в самом снипете TicketForm (2 — Тикет, 4 — галерея):
                        [[!TicketForm?
                        &parents=`0`
                        &resources=`3`
                        &source=`4`
                        &allowedFields=`parent,pagetitle,content,published`]]
                        ничего не помогает на фронт-енде сменить пути. Может Кто подскажет что не так? Может, права мешают какие-то?
                        1. Василий Наумкин 28 января 2017, 20:32 # 0
                          4. Проверить, чтобы галерея использовала правильный источник файлов (по умолчанию Tickets Files).
                          Для кого написано?

                          При включении интеграции с ms2 или Tickets — всегда должен быть один источник файлов у них, и у ms2Gallery.
                          1. Алексей Смирнов 28 января 2017, 20:42 # 0
                            Простите, Василий, за назойливость. Т.е. источник файлов Должен быть Именно Тикетс, а не Галерейный? в моем случае источник 2 у всех товарищей? Т.е. именно так задуманно?
                            1. Алексей Смирнов 28 января 2017, 20:46 # 0
                              Просто думал что раз мы Галерею ставим, значит должен использоваться ее источник, как синхронизатор. :))
                              В общем сам себе придумал работу на вечер :))) поправил на тикеты. Спасибо!
                              1. Василий Наумкин 28 января 2017, 20:57 # +1
                                Оно должен быть одинаковый у обоих дополнений, чтобы не дублировались картинки.
                                1. Алексей Смирнов 29 января 2017, 11:45 # 0
                                  Доброго дня.
                                  Да я делаю все так:
                                  ms2Gallery: joxi.ru/l2ZRaP0uwljVM2
                                  Тикетсы: joxi.ru/vAWK6PgU135R6A
                                  Ставлю один источник источник msGallery (4 — id). Чищу кеш.
                                  Открываю страницу где TicketForm редактирование-добавление (стандартные шаблон его)
                                  joxi.ru/ZrJY8P3T9QxkBA
                                  перетаскиваю файл. И не вижу его. joxi.ru/bmozZ3asxOGl6r
                                  чанк joxi.ru/Vm6xq8puD3N09A
                                  Даже если я с админки добавляю фотку — такой же эффект. ссылка на картинку есть, а миниатюры нет. Те. в снипете TicketForm не прикрепляется миниатюра фотки плейсхолдеры [[+small]] [[+medium]] так же пусты.
                                  Вопрос — как добавить в выборку данные миниатюры для TicketForm.
                                  Пока у меня вызов стандартный:
                                  [[!TicketForm?
                                  &parents=`0`
                                  &resources=`3`
                                  &allowedFields=`parent,pagetitle,content,published`]]
                                  В источник файлов я добавил генерацию приевьюшки с названием tbumb и все заработало, но все же на будущее — возможно ли подключить другие вариации сгенерированных вариантов? Может быть это делается через where?
                                  1. Василий Наумкин 29 января 2017, 12:55 # 0
                                    А теперь всё это + доступы в админку — в поддержку магазина.
                          2. Алексей Бгатов 18 февраля 2017, 01:58 # 0
                            было бы приятной плюшкой, если бы Василий счел уместным теперь в настройках раздела тикетов добавить возможность выбирать источник файлов для галереи внутри этого раздела) А то тикеты не только для добавления с фронтенда удобны, но и для всяких статей-новостей, и могут быть нужны разные габариты картинок в разных разделах
                            1. Алексей Бгатов 20 февраля 2017, 15:13 # 0
                              вообще, хорошо бы иметь системную настройку с конфигом — какому шаблону какой источник файлов. А то когда для товаров и для обычных страниц и для тикетов один источник по умолчанию — это не круто, а клиент руками не будет переключать по причине своей забывчивости…
                            2. Alexander V 20 февраля 2017, 01:55 # 0
                              Василий, в Minishop2 есть возможность массового обновления превью?
                              1. Антон 18 мая 2017, 08:48 # 0
                                Есть
                                1. Alexander V 18 мая 2017, 11:11 # 0
                                  Можно подробней?
                                    1. Alexander V 18 мая 2017, 12:56 # 0
                                      Для новой галереи подходит?
                              2. Денис Гром 13 марта 2017, 01:10 # 0
                                Подскажите не могу найти настройку! Перегенерировал превью в PNG все картинки посыпались yadi.sk/i/fXgCCHtS3FdgEv, вернул сейчас в jpg, превью есть но в дереве отображаются по ссылкам как PNG, как управлять этим?
                                1. Андрей 17 мая 2017, 18:37 # 0
                                  Подскажите пожалуйста как решить — у меня не спряталась кнопка старой галереи Minishop2 показываются обе вкладки.Кроме того, вообще никаких фото в админке не показывает, хотя на сервере они лежат. Источники файлов по всякому комбинировал уже.
                                  1. Константин Ильин 22 мая 2017, 14:37 # -1
                                    Василий, планируется ли Drag&Drop в редакторы или в поле content?

                                    Ато есть, и не мало, индивидуумов которые которые не понимаю как прописать плейсхолдер [[+image.0.url]].
                                    Дак еще они не понимают как это будет выглядеть и хотят в живую видеть т.е. щас так:
                                    joxi.ru/n2YR1NbuodZM9A
                                    А хотят вместо иконки отсутствующего изображения видеть само изображение из галереи ms2Gallary ну и соответственно ресайзить как им надо и т.п.

                                    Это упростило бы жизнь разработчику, а точнее облегчило объяснение этим индивидуумам.

                                    Если списком предложения:
                                    1. Drag&Drop в редакторы или в поле content c возможностью выбора small,medium(т.е. из настройки медиа thumbnails)
                                    2. Live просмотр
                                    3. Сделать галочку Hidden(Скрыть в галереи) в свойствах картинки joxi.ru/J2bNGpbFXLVxN2. Т.е. по аналогии как у modResource «Не показывать в меню» для изображений, и при выводе сниппетом ms2Gallery они не показывались бы.
                                    1. Илья 31 мая 2017, 12:40 # 0
                                      Василий здравствуйте!
                                      Давно заметил у себя ошибку при удалении изображений ресурса.
                                      При попытке удалить все изображения одним нажатием выскакивает ошибка:

                                      по одному удаляются нормально
                                      Хостинг modhost
                                      Все последние версии
                                      Домен временный
                                      1. Стас 05 июня 2017, 12:42 # 0
                                        Здравствуйте. Я совсем новичок в modx. Скажите, я в чанке пытаюсь прикрутить данный плагин.
                                        Как мне вывести оригинальный размер изображения?
                                        1. Кирилл 05 июня 2017, 14:57 # 0
                                          {$image} или {$url}
                                        2. Сергей Самусев 05 июня 2017, 18:17 # 0
                                          Возможно ли добавить функцию сжатия оригиналов картинок на этапе их загрузки?
                                          1. Aleksandr Kirjanov 12 июня 2017, 11:23 # 0
                                            Не могу обновить ms2Gallery на новую версию пишет:
                                            Не удалось загрузить и создать пакет с подписью:ms2gallery-2.0.4-pl

                                            В чем причина покупал 13 апреля 2015.
                                            1. Евгений 12 июля 2017, 11:05 # 0
                                              Добрый день. Подскажите, пожалуйста, как можно поменять путь для сохранения файлов? Я имею ввиду не тот, что указывается в источниках файлов, а папку, которая создается — чтобы она не по id ресурса называлась, а по tv-полю, по артикулу, например.
                                              1. Евгений 12 июля 2017, 12:35 # 0
                                                И еще один вопрос для знатоков — как вывести несколько фильтров?
                                                Прописываю {«w»:1600,«fltr»:«wmi|wm.png|C|100»,«fltr»:«wmt|www.aveo.property|15|BR|000000|||20»} — выводит только второй фильтр.
                                                1. Алексей Андреев 14 июля 2017, 13:19 # 0
                                                  Обновил с какой-то из старых версий до последней. Перенастроил вывод на феном, на сайте картинки стали отображаться по-старому. А вот в админке пустота, будто у ресурсов не загружено ни одной фотки. И загрузка новых тоже не работает. Колонка active в базе имеется. Кто-нибудь еще с таким сталкивался?
                                                  Вы должны авторизоваться, чтобы оставлять комментарии.