Андрей

Андрей

С нами с 28 февраля 2013; Место в рейтинге пользователей: #147
29 декабря 2016, 22:59
0
Вот только что проверил, если подвигать или обновить превью, то ничего не меняется, а если удалить и загрузить картинку (возможно просто загрузить еще одну), то все норм, плейсхолдер появляется.
29 декабря 2016, 22:51
0
Оно работает, только если удалить все фотки у товара и загрузить заново. Т.е. баг вроде исправили, только что теперь все товары редактировать что-ли.
29 декабря 2016, 21:17
0
Ну да, но все же хочется что бы правильно работало.

Тут в последнем обновлении minishop2 есть пункт
— Fixed bug with incorrect rank of thumbnails after a sorting.

Наверное это решение проблемы, надо обновиться.
29 декабря 2016, 21:02
1
+1
Тоже в Minishop2 столкнулся с такой проблемой, пока нет нормального решения сделал так

{set $path = '/assets/images/products/'~$id~'/120x90/'}
{set $preview = $_pls['thumb'] | replace : $path : ''}
<img src="/assets/images/products/{$id}/175x175/{$preview}" alt="" title=""/>
27 декабря 2016, 09:36
0
Неа, так тоже 0.
27 декабря 2016, 09:36
0
Да, так работает, спасибо. Не знал, что не заданные TV не хранятся нигде.
26 декабря 2016, 17:55
0
Вот это, кстати
if(!empty($_GET['content'])){
	$data2 = array(
		'content' => $desc
	);
	$data = array_merge($data, $data2);
}

Можно заменить на
if(!empty($_GET['content'])){
	$data['content'] = $desc;
}
26 декабря 2016, 17:49
0
Их вроде бы каждый раз надо записывать, даже при обновлении. Сам когда сталкивался, нашел вот этот комментарий.

26 декабря 2016, 11:59
0
Если не ошибаюсь, то так

total.cost
delivery.price
order.cost
16 декабря 2016, 21:37
+3
Тогда уж и сниппет на феноме перепишите

{$_modx->runSnippet('pdoResources', [
	'parents' => 17,
	'resources' => $_modx->resource.boleznID,
	'tpl' => '@INLINE <li class="priem-list-item"><a href="[[~[[+id]]]]">[[+pagetitle]]</a></li>'
])}
16 декабря 2016, 14:53
0
Попробуйте вызывать pdoResources не кешируемым, либо перенесите вызов в чанк и вызывайте так:

[[$[[*boleznID:!empty=`имя_чанка`]]]]

Можно еще tpl в чанк вынести.
16 декабря 2016, 14:26
+1
[[*boleznID:!empty=`ваш код`]]

Посмотрите какие модификаторы еще есть.
16 декабря 2016, 11:31
+1
Создаете сниппет, в нем пишете

print_r($_SESSION['minishop2']['cart'])

Вызываете сниппет на странице корзины.
15 декабря 2016, 16:47
1
+2
Тоже недавно возникла такая задача, решил написанием плагина.

Вешается на событие OnLoadWebDocument, так же создал TV поля pattern-seo-title, pattern-seo-keywords, pattern-seo-description.

if ($modx->event->name == 'OnLoadWebDocument') {
    
  function getMeta($id) {
    global $modx;
    
    if ($resource = $modx->getObject('modResource', $id)) {
      
      $title = $resource->getTVValue('pattern-seo-title');
      $keywords = $resource->getTVValue('pattern-seo-keywords');
      $description = $resource->getTVValue('pattern-seo-description');

      if ((isset($title) && !empty($title)) || (isset($keywords) && !empty($keywords)) || (isset($description) && !empty($description))) {
        $modx->setPlaceholder('pattern.seo.title', $title);
        $modx->setPlaceholder('pattern.seo.keywords', $keywords);
        $modx->setPlaceholder('pattern.seo.description', $description);
      } else {
        getMeta($resource->get('parent'));
      }        
    }
  }
  
  $id = $modx->resource->parent;
  
  getMeta($id);
    
}

В разделе для которого нужно применить шаблон, в TV полях уже можно писать например — "«[[*pagetitle]]»" купить, "«[[*pagetitle]]»" цена и отзывы, инструкция по применению — "«[[++site_name]]»"

В шаблоне выводятся как плейсхолдеры [[+pattern.seo.title]], [[+pattern.seo.keywords]], [[+pattern.seo.description]]

Я выводил так, на Fenom

{set $pattern_seo_title = $_modx->getPlaceholder('pattern.seo.title')}
{set $pattern_seo_keywords = $_modx->getPlaceholder('pattern.seo.keywords')}
{set $pattern_seo_description = $_modx->getPlaceholder('pattern.seo.description')}

{if $_modx->resource['seo-title']?}
	{$_modx->resource['seo-title']}
{elseif $pattern_seo_title?}
	{$pattern_seo_title}
{else}
	{$_modx->resource.pagetitle}
{/if}

{if $_modx->resource['seo-keywords']?}
	{$_modx->resource['seo-keywords']}
{else}
	{$pattern_seo_keywords}
{/if}

{if $_modx->resource['seo-description']?}
	{$_modx->resource['seo-description']}
{else}
	{$pattern_seo_description}
{/if}
15 декабря 2016, 16:28
0
В сессии (если не путаю $_SESSION['minishop2']['cart']) хранится корзина со всеми товарами и их параметрами. В корзине у товара можете вывести опции в виде селектов и менять сессию по ajax например.
07 ноября 2016, 11:05
0
Василий, спасибо, буду смотреть.
02 ноября 2016, 09:19
0
Мне нужно в зависимости от акции (например, скидка на все товары определенного раздела) выводить разные бирки (текстовые, либо изображения) у товаров. Не нашел как это сделать стандартными средствами. Решил просто получать id акций из базы и сравнивать подходит ли товар под эту акцию, а потом уже как-то выводить бирки.

Проблема в том что никак не пойму как определить по товару к какой акции он относится. Нашел такой метод getProductAllDiscounts, но он возвращает лишь разницу в цене.

Можно ли как-то узнать акцию по товару?
30 октября 2016, 19:07
0
Выводится так
[[getImageList?
	&tvname=`Имя_TV_MIGX`
	&tpl=`@CODE: <a href="[[+имя_переменной_в_migx]]">Файл</a>`
]]

Если включен fenom в настройках pdoTools, то можно так
{foreach $_modx->resource.Имя_TV_MIGX | json_decode as $key}
	<a href="{$key.имя_переменной_в_migx}">Файл</a>
{/foreach}

Но лучше почитать документацию MIGX, там все подробно и с примерами написано.
21 сентября 2016, 21:38
0
Что-то не работает, выдает ошибку

Uncaught TypeError: Argument 4 passed to msopModificationOption::saveOptions() must be of the type array, null given

Добавил
$corePath = $modx->getOption('msoptionsprice_core_path', null, $modx->getOption('core_path', null, MODX_CORE_PATH) . 'components/msoptionsprice/');
$msoptionsprice = $modx->getService('msoptionsprice', 'msoptionsprice', $corePath . 'model/msoptionsprice/', array('core_path' => $corePath));


я так понимаю ругается на $options в строке
$modx->call('msopModificationOption', 'saveOptions', array(&$modx, $mid, $rid, $options));
21 сентября 2016, 17:15
0
Как добавить модификацию через процессор?

У товара нет никаких модификаций.

Пишу так, выводит ошибку о том что поле price должно быть уникально
$modification_data = array(
  'rid' => 45019,
  'type' => 1,
  'price' => $good_price,
  'article' => $good_article,
  'weight' => '',
  'count' => 0,
  'active' => 1
);

$response = $modx->runProcessor('modification/create', $modification_data, array(
  'processors_path' => MODX_CORE_PATH.'components/msoptionsprice/processors/mgr/'
));

if ($response->isError()) {
  print_r($response->getResponse());
}

Сама ошибка
Array
(
    [success] => 
    [message] => 
    [total] => 1
    [errors] => Array
        (
            [0] => Array
                (
                    [id] => price
                    [msg] => Это поле должно быть уникально
                )

        )

    [object] => Array
        (
        )

)