Подскажите как... подружить minishop2 и easycomm
        Доброго времени суток! 
Возникла необходимость в магазине сделать сортировку в каталоге по рейтингу товара, для того что бы сделать рейтинг решил использовать компонент easycomm. Нaстроить его я смог, но вот как объединить их теперь в воедино, что бы сортировать по рейтингу?
Подскажите в каком направлении искать информацию, как это сделать! На сайте что то не смог найти статей, которые помогли бы.
З.Ы. Заранее спасибо за вашу помощь и советы.
    
    
                                                                                
            Возникла необходимость в магазине сделать сортировку в каталоге по рейтингу товара, для того что бы сделать рейтинг решил использовать компонент easycomm. Нaстроить его я смог, но вот как объединить их теперь в воедино, что бы сортировать по рейтингу?
Подскажите в каком направлении искать информацию, как это сделать! На сайте что то не смог найти статей, которые помогли бы.
З.Ы. Заранее спасибо за вашу помощь и советы.
Комментарии: 4
                НУ хоть намек, что почитать. MODX я только начал изучать…            
                    
                Я сделал TV поле rating для шаблона товара и плагин на событие OnDocFormRender с проверкой товар это или нет (ID шаблона товара у меня 7):
В моем случае этого хватило, поскольку товары постоянно обновляются и менеджер сайта их открывает, но можно сделать по тому же принципу сниппет, который запускать по Cron.
                    <?php
if ($resource->get('template') == 7) {
	$thr = 'resource-'.$id.'';
	$pars = array (
		'thread'=> $thr,
		'tpl'=> 'rating-tv'
		);
	$rat = $modx->runSnippet('ecThreadRating',$pars);
	$rating = ceil($rat);
	$page = $modx->getObject('modResource', $id);
	$page->setTVValue('rating', $rating);
}При открытии ресурса в редакторе ему автоматически прописывается в TV rating его рейтинг из таблицы компонента. Ну а дальше уже простая сортировка по TV.В моем случае этого хватило, поскольку товары постоянно обновляются и менеджер сайта их открывает, но можно сделать по тому же принципу сниппет, который запускать по Cron.
                Допустим, у вас есть сниппет msProducts/mFilter2 для вывода/сортировки товаров. Для того, чтобы организовать сортировку по рейтингу нужно:
— загрузить модель easycoms в вызов &loadModels
— обозначить классы вызываемого контента
— вывести желаемую сортировку в &sort или &sortby, в зависимости от вызываемого сниппета
В итоге у вас получится примерно (напрямую с easycomm не работал) такая конструкция:
Извиняюсь, что не даю конкретный пример join'a — не работал с easycomm. Впрочем, составить запрос по аналогии, надеюсь, труда не составит.
                    — загрузить модель easycoms в вызов &loadModels
— обозначить классы вызываемого контента
&class=`msProduct` &element=`msProducts` — заджоинить таблицы easycoms в &leftJoin и &select— вывести желаемую сортировку в &sort или &sortby, в зависимости от вызываемого сниппета
В итоге у вас получится примерно (напрямую с easycomm не работал) такая конструкция:
[[!mFilter2? &loadModels=`voteforms` &class=`msProduct` &element=`msProducts`&sort=`желаемый_плейсхолдер_для_рейтинга:desc`
	&where=`{"class_key":"msProduct"}`
	&leftJoin=`{
		"Класс_для_easycomm": {
			"class": "Класс_для_easycomm",
			"on": "msProduct.id = Класс_для_easycomm.поле_с_айди_страницы_в_таблице_easycomm"
		}
	}`
	&select=`{"Data": "*",  "Класс_для_easycomm": "Класс_для_easycomm.поле_рейтинга AS желаемый_плейсхолдер_для_рейтинга"}`
]]В вызываемом чанке рейтинг можно будет выводить плейсхолдером [[+желаемый_плейсхолдер_для_рейтинга]], соответственно. Извиняюсь, что не даю конкретный пример join'a — не работал с easycomm. Впрочем, составить запрос по аналогии, надеюсь, труда не составит.
                Большое спасибо за советы, пойду пробовать.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.