MSearch TV поля

Добрый день!

Я меня на сайте msearch при выводе найденных элементов выводит 2 доп.ТВполя. Проблема в том что они выводятся только для первого найденного элемента, для остальных не выводятся. Посмотреть можно на new.galaxiv.ru
Alexey Guz
21 декабря 2012, 07:36
modx.pro
2 348
0

Комментарии: 13

Евгений Дружинин
21 декабря 2012, 15:35
0
Alexey Guz, аналогичная ситуация!
При выводе TV в результатах поиска, первый товар выводится как и задумано со всеми указанными TV, а все последующие товары выдаются без них (отображаются только стандартные плейсхолдеры modx). И выдаются 2 ошибки относительно обработки includeTVList.
Вот скриншот
Вот вызов mSearch:
[[!getPage@catalog_fill? 
&element=`mSearch` 
&includeTV=`1`
&includeTVList=`image,price,articul,instock`
&tpl=`product_list` 
&limit=`10` ]]
Minishop не установлен.
    Alexey Guz
    21 декабря 2012, 15:47
    0
    Насчет 2-х ошибок: у меня была аналогичная проблема. Решил заменой версии php 5.3 на php 5.0. Попробуйте может поможет
AK
AK
02 апреля 2013, 22:00
0
Такая же проблема, неужели всё еще нет решения?
    AK
    AK
    02 апреля 2013, 22:33
    0
    Решил с помощью следующего изврата:

    [[!getPage?
    &elementClass=`modSnippet`
    &element=`getProducts`
    &resources=`
    	[[!mSearch?
    		&element=`mSearch`
    		&context=`catalog`
    		&parents=`4`
    		&showHidden=`true`
    		<b>&returnIds=`1`</b>
    	]]
    `
    &includeTVs=`1`
    &includeTVList=`блаблабла`
    &limit=`10`
    &depth=`100`
    &tpl=`product_block_tpl`
    &noResults=`Пусто`
    ]]
    Алина Карапчук
    04 апреля 2013, 00:18
    0
    Ну спасибо конечно за плагин — рекламу везде дали, теперь придется удалять етот плгин!!! Ибо без тв и с такими сложными изворотами у меня не работает.
    Виталий Валерьевич
    12 сентября 2013, 06:11
    0
    Решил проблему за пару минут. Необходимо, внести всего одну правку в сниппет mSearch.
      Олег
      08 ноября 2013, 21:27
      0
      Как решили?
        Виталий Валерьевич
        08 ноября 2013, 22:23
        0
        Лови, замени данную часть кода начиная с 78 строки, собственно все. Удачи.
        else {
        	$class = !empty($includeMS) ? 'msProduct' : 'modResource';
            $i = $offset;
        	$result = array();
            $includeTVListArr = array();
        	foreach ($res as $v) {
        		if ($tmp = $modx->getObject($class, $v['rid'])) {
        			$arr = $tmp->toArray();
        			$arr['num'] = 1+$i++;
        			$arr['intro'] = $mSearch->Highlight($v['resource'], $query);
        			if (!empty($includeTVs) && !empty($includeTVList)) {
                        $includeTVListArr = explode(',',$includeTVList);
                        foreach ($includeTVListArr as $v2) {
        					$arr[$tvPrefix.$v2] = $tmp->getTVValue($v2);
        				}
        			}
        			$result[] = $modx->getChunk($tpl, $arr);
        		}
        	}
            
            $modx->setPlaceholder($plPrefix.'count', (($i != 0) ? $arr['num'] : 0));
        	$modx->setPlaceholder($plPrefix.'render_time', $mSearch->get_execution_time() - $modx->getPlaceholder($plPrefix.'query_time'));
        
        	if ($i == 0) {
        		$modx->setPlaceholder($plPrefix.'error', $modx->lexicon('mse.err_no_results'));
        		return;
        	}
        	return implode($outputSeparator, $result);
        }
          Олег
          08 ноября 2013, 23:52
          0
          Спасибо! Работает.
          Начал разбирать — не очень понятно, для чего прибавляли $arr['num'] = 1+$i++;?
            Виталий Валерьевич
            09 ноября 2013, 10:07
            0
            К делу не относится, свои эксперементы, точно не помню, но что-то со счетчиком связано.
              Олег
              09 ноября 2013, 13:39
              0
              Ясно!
              Спасибо!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      13