Плагин синхронизации похожих товаров

Плагин синхронизации похожих товаров - Liber.pro - личный сайт Алексея Либера Картинка  1

Частая задача - проставлть похожие товары. Но нам зачастую приходится делать двойную работу: сначала ставить в документе похожий товар, а потом в похожем товаре ссылку на исходный.

Я написал плагинчик, который делает эту работу за нас)

Создаем ТВ параметр, в который через запятую будем вводить похожие документы. Запоминаем id нового ТВ и вставляем в пятую строчку плагина.

Вот код (событие OnDocFormSave):

//<?php
    $e = &$modx->Event;
    if ($e->name == "OnDocFormSave") {	
        $tv = 29;
        $docs = $_POST['tv'.$tv];		
        if ($docs)
        {
            $docsArr = explode(',',$docs);
            
            
            $tvtable = $modx->getFullTableName('site_tmplvar_contentvalues');
            
            foreach($docsArr as $d)
            {
                
                if ($modx->db->getValue("select count(*) from $tvtable where `contentid`=$d and `tmplvarid`=$tv")==0)
                {
                    
                    $modx->db->insert(array('contentid'=>$d,'tmplvarid'=>$tv,'value'=>$id),$tvtable);
                }
                else
                {
                    
                    exit($modx->db->getValue("select count(*) from $tvtable where `contentid`=$d and `tmplvarid`=$tv"));
                    $val = $modx->db->getValue("select `value` from $tvtable where `contentid`=$d and `tmplvarid`=$tv");
                    $vals = explode(',',$val);
                    if (!in_array($vals,$id)) 
                    {
                        
                        $vals[]=$id;
                        $new = array();
                        foreach($vals as $v) if ($v) $new[]=$v;
                        $value = implode(',',$new);					
                        $modx->db->update(array('contentid'=>$d,'tmplvarid'=>$tv,'value'=>$value),$tvtable,"`contentid`=$d and `tmplvarid`=$tv");
                    }
                }
            } 
        }
        
    }		
Оставить комментарий