ShopModxBox это вещь! Да пробовал и на хостинги ставиться отлично. Спасибо.
Через php vapor/import.php package=core/packages/core.transport.zip — ошибки.
Кстати, а вот этого вообще не следовало делать. core.transport.zip — это ядро MODX-а, а не наша сборка.
А сборку ShopModxBox пробовали ставить? Она ставится? Там в принципе тоже самое почти, только компонентов чуть больше, плюс магазин. Удалите раздел каталога да пару расширений отключите и получите тоже самое. И да, судя по всему modxcloud убрали фришный план, оставив только триал.
по ссылке архив поврежден или имеет неизвестный формат. На modxcloud.com бесплатного аккаунта не нашел. Предлагает регистрироваться только с триал версией в 21 день. Ранее архив скачивал — попробовал все таки поставить на modxcloud по видео. Снапшот импортируется, пишет что облако с ним создается — ок. Захожу в админку — чистая англо MODX Revolution. В папке core/packages/ создается архив core.transport.zip и соответствующая папка. Через php vapor/import.php package=core/packages/core.transport.zip — ошибки.
Добрый день! Пока нет. Это вещь чисто индивидуальная, настраиваемая на отдельных проектах. Но не исключено появление какой-то более массовой вариации.
Добрый день! А можно ли где-то скачать данный импортер?
Если вы хотите дописать это (получение галереи товара) в исходный процессор получения товаров, то вы все это объединяете в одном цикле, то есть получится так:
public function afterIteration(array $list){ $list = parent::afterIteration($list); switch($this->getProperty('image_url_schema')){ case 'base': $images_base_url = $this->modx->runSnippet('getSourcePath'); break; case 'full': $images_base_url = $this->modx->getOption('site_url'); $images_base_url .= preg_replace("/^\//", "", $this->modx->runSnippet('getSourcePath')); break; default: $images_base_url = ''; } foreach($list as & $l){ // Базовая картинка $l['image'] = ''; if(!empty($l['tvs']['image']['value'])){ $l['image'] = $images_base_url . $l['tvs']['image']['value']; } else{ $l['imageDefault'] = $images_base_url . 'products/No-Photo.jpg'; } /* Картинки */ $l['images'] = array(); if(!empty($l['tvs']['images']['value'])){ $images = json_decode($l['tvs']['images']['value'], true); foreach($images as $image){ $image['image'] = $images_base_url.$image['image']; $l['images'][] = $image; } } } return $list; }
А если вы расширяете процессор, то за это не паритесь, потому что там все равно вызывается родительский метод, так что картинка будет учтена и базовая.
public function afterIteration(array $list){ $list = parent::afterIteration($list);
В общем, здесь конечно же хорошо бы ООП понимать.
а это уже дела вкуса. тут просто проверяется, задана ли картинка, и если нет — вставляется дефолтовое изображение. но это можно и в smarty сделать.
а как быть с
foreach($list as & $l){ $l['image'] = ''; if(!empty($l['tvs']['image']['value'])){ $l['image'] = $images_base_url . $l['tvs']['image']['value']; } else{ $l['imageDefault'] = $images_base_url . 'products/no_photo.png'; } }
MIGX конечно же предпочтительней по ряду причин, в том числе и потому что не приходится 100500 ТВшек создавать.
Вот я на одном проекте так докручивал галерею. В процессор получения товара дописал:
public function afterIteration(array $list){ $list = parent::afterIteration($list); foreach($list as & $l){ switch($this->getProperty('image_url_schema')){ case 'base': $images_base_url = $this->modx->runSnippet('getSourcePath'); break; case 'full': $images_base_url = $this->modx->getOption('site_url'); $images_base_url .= preg_replace("/^\//", "", $this->modx->runSnippet('getSourcePath')); break; default: $images_base_url = ''; } /* Картинки */ $l['images'] = array(); if(!empty($l['tvs']['images']['value'])){ $images = json_decode($l['tvs']['images']['value'], true); foreach($images as $image){ $image['image'] = $images_base_url.$image['image']; $l['images'][] = $image; } } } return $list; }
А в шаблоне уже оформление по своему вкусу. У меня это вот так:
{if $object.images} {foreach $object.images as $img} {snippet name="phpthumbof" params="input=`{$img.image}`&options=`w=65&h=65&q=90`" assign=thumb} <a rel="useZoom: 'zoom1', smallImage: '{$thumb}'" title="" href="{$img.image}" class="cloud-zoom-gallery"> <img alt="" src="{$thumb}"> </a> {/foreach} {/if}