[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 january 2017, 21:18    Василий Наумкин   G+  
8    870 +28

Comments (42)

  1. Виталий Батушев 07 january 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 january 2017, 08:14 # +2
      Исправил, можно обновляться на 2.0.1
      1. Виталий Батушев 07 january 2017, 09:34 # 0
        Премного благодарствую!
    2. but1head 07 january 2017, 18:03 # 0
      Процессор загрузки не менялся? А то только адаптировал ms2gallery под 1.6
      1. Василий Наумкин 07 january 2017, 18:07 # +1
        Да вроде не особо, стал почти таким же как у miniShop2. По идее, всё должно работать так же.
      2. Сергей Водолагин 07 january 2017, 20:49 # 0
        Подскажите как на Fenom вывести размер фото

        [[+properties.width]]
        [[+properties.height]]
        
        1. Василий Наумкин 07 january 2017, 21:00 # +2
          Если речь про новую версию с одним чанком, то
          {foreach $files as $file}
          	{$file.properties.width}
          	{$file.properties.height}
          {/foreach}
          1. Сергей Водолагин 07 january 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 january 2017, 05:38 # 0
          Здравствуйте, подскажите только у меня не срабатывает скрипт generate.php? Все обновлено до последний версии, запускаю консолью.
          1. Василий Наумкин 08 january 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 january 2017, 07:46 # 0
              Дело в том что и ничего не выдает, просто бесконечный процесс загрузки
              1. Василий Наумкин 08 january 2017, 07:49 # +1
                А консолью сервера ты называешь компонент Николая?

                Нет, друг, мой скрипт нужно запускать из настоящей консоли сервера
                1. Максим Степанов 08 january 2017, 07:52 # 0
                  Да я про консоль Николая, спасибо буду пробовать
          2. Антон 09 january 2017, 02:02 # 0
            Огромный шаг к объединению минишопа и тикетса.
            Осталось окончательно их объединить.
            1. Василий Наумкин 09 january 2017, 08:42 # +1
              Нет.
            2. Алексей Титов 10 january 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 january 2017, 05:22 # +1
                В документации написано, что можно использовать переменные {base_path}, {core_path} и {assets_path}.

                А вообще, обновись — вернул возможность использовать плейсхолдеры с одним плюсом, типа [[+core_path]].
                1. Алексей Титов 10 january 2017, 09:16 # 0
                  Спасибо. Заменил в resolve.plugin.php
                  $miniShop2->addPlugin('msplFeatures', '{core_path}components/msplfeatures/index.php');
                  Ну, и обновился тоже
              2. Wassi Wassinen 11 january 2017, 23:12 # 0
                Василий, спасибо за унификацию! Объединил с тикетами. Скажи, как ограничить кол-во загружаемых файлов в форме?
                1. Василий Наумкин 12 january 2017, 06:47 # 0
                  Никак.
                  1. but1head 18 january 2017, 22:18 # +1
                    Василий, добавьте, пожалуйста, ограничение на загрузку.
                    Мой ms2gUploader из-за новых обновлений ms2g поломался, а обновлять его не вижу смысла т.к. теперь в тикетс это дело реализовано. Только ради этого и писал его. Все равно компонент только в связке с тикетс используют.
                2. Андрей 14 january 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 january 2017, 13:43 # 0
                    Посмотри, может у тебя тоже не создалась колонка.
                    1. Андрей 14 january 2017, 17:20 # 0
                      Да, все так. Добавил поле, все появилось. Спасибо
                  2. This comment was deleted.
                    1. This comment was deleted.
                      1. This comment was deleted.
                        1. This comment was deleted.
                          1. This comment was deleted.
                            1. This comment was deleted.
                            2. This comment was deleted.
                              1. Василий Наумкин 27 january 2017, 08:50 # +1
                                Попробуй почитать документацию.

                                Все дальнейшие вопросы — в поддержку платных дополнений магазина. Этот флуд удаляю.
                      2. Alex 28 january 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 january 2017, 20:32 # 0
                          4. Проверить, чтобы галерея использовала правильный источник файлов (по умолчанию Tickets Files).
                          Для кого написано?

                          При включении интеграции с ms2 или Tickets — всегда должен быть один источник файлов у них, и у ms2Gallery.
                          1. Alex 28 january 2017, 20:42 # 0
                            Простите, Василий, за назойливость. Т.е. источник файлов Должен быть Именно Тикетс, а не Галерейный? в моем случае источник 2 у всех товарищей? Т.е. именно так задуманно?
                            1. Alex 28 january 2017, 20:46 # 0
                              Просто думал что раз мы Галерею ставим, значит должен использоваться ее источник, как синхронизатор. :))
                              В общем сам себе придумал работу на вечер :))) поправил на тикеты. Спасибо!
                              1. Василий Наумкин 28 january 2017, 20:57 # +1
                                Оно должен быть одинаковый у обоих дополнений, чтобы не дублировались картинки.
                                1. Alex 29 january 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 january 2017, 12:55 # 0
                                    А теперь всё это + доступы в админку — в поддержку магазина.
                          2. Алексей Бгатов 18 february 2017, 01:58 # 0
                            было бы приятной плюшкой, если бы Василий счел уместным теперь в настройках раздела тикетов добавить возможность выбирать источник файлов для галереи внутри этого раздела) А то тикеты не только для добавления с фронтенда удобны, но и для всяких статей-новостей, и могут быть нужны разные габариты картинок в разных разделах
                            1. Алексей Бгатов 20 february 2017, 15:13 # 0
                              вообще, хорошо бы иметь системную настройку с конфигом — какому шаблону какой источник файлов. А то когда для товаров и для обычных страниц и для тикетов один источник по умолчанию — это не круто, а клиент руками не будет переключать по причине своей забывчивости…
                            2. Alexander V 20 february 2017, 01:55 # 0
                              Василий, в Minishop2 есть возможность массового обновления превью?
                              You need to login to create comments.