[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+  
9    611 +28

Comments (24)

  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
                      Да, все так. Добавил поле, все появилось. Спасибо
                  You need to login to create comments.