Комплексный маркетинг сайта: продвижение сайта, контекстная реклама, соц. сети, аналитика. От 15.000 рублей в месяц.
Главная » Полезные статьи » Различные CMS (статьи) » MODX » Одна картинка (или один набор картинок) Evogallery для нескольких товаров

Одна картинка (или один набор картинок) Evogallery для нескольких товаров

Допустим, у нас есть 5000 товаров, на них в общей сложности приходится 2000 картинок, которые повторяются на множестве товаров. Итого до 20.000 повторений. Можно их просто залить через Evogallery, но это раздует базу данных, плюс сами фотки будут весить в 10 раз больше из-за большего количества. Есть два решения этой проблемы.

Решение 1.

Создаём репозиторий. Это просто неопубликованная (скрытая) папка в дереве страниц Модкса. Создаём ТВ-параметр с выбором (или мультивыбором) подходящих изображений. Туда заливаем в нашу новую папку 2000 картинок отдельными страницами. Сложно, но чё поделать. Затем выбираем нужное поле через DocInfo.

Решение 2. Два хака модкса для одной проблемы.

В .htaccess пишем примерно такую строчку:

  • RewriteCond %{REQUEST_URI} ^/assets/galleries/(617[3-9]{1}|61[8-9]{1}\d|6[2-9]{1}\d{2}|[7-9]{1}\d{3}|10\d{3}|11[0-2]{1}\d{2}|113[0-3]{1}\d|1134[0-1]{1})/.*
  • RewriteRule ^assets/galleries/\d+/(.*)$ "http://mon-key.ru/assets/galleries/11676/$1" [L]

Длинное регулярное выражение в редиректе это диапозон 6173-11341. Почему так сложно? Потому что регулярные выражения не умеют работать с диапозонами чисел больше 9. Для составления этого диапозона он был разбит на составляющие:

6173-6179617[3-9]{1}
6180-619961[8-9]{1}\d
6200-69996[2-9]{1}\d{2}
7000-9999[7-9]{1}\d{3}
10000-1099910\d{3}
11000-1129911[0-2]{1}\d{2}
11300-11339113[0-3]{1}\d
11340-113411134[0-1]{1}

Сниппет, кстати, работать в таких условиях не будет. Ему тоже нужен заботливый хак.

Открываем /assets/snippets/evogallery/classes/gallery.class.inc.php и сразу перед строчкой:

$imgfile = $this->config['galleriesPath'] . $row['content_id'] . '/' . $row['filename'];

Добавляем:

if ($row['content_id']>=6173&&$row['content_id']<=11341) {$row['content_id']=11676;}

В итоге любая из этих страниц на самом деле берёт картинки из единой страницы-отстойника под номером 11676, в которую нам остаётся просто загрузить все картинки.

UPD: не забываем в вызове сниппета прописать &limit=`50` или типа того, а то от тысяч изображений сниппет ломается!

Во всех статьях в коде заменены:

[ на &#91;

{ на &#123;

< на &123;

Звоните +7 (812) 914-41-56, ответим на вопросы на тему работы с MODX Evolution или комплексного маркетинга.

Заказать эту или любую другую услугу вы можете на странице контактов.