Последние темы


Сниппет для получения id родителей

  • Вообще не понятно, что вы пытаетесь сделать

    Посмотрите: Раз и Два

  • @slaad Ну грубо говоря мне нужно получить id родителей ресурсов, у которых шаблон 5 и значение ТВ поля совпадает с pagetitle текущей страницы (тв имеет множественный выбор, т.е. там через разделитель || указаны несколько pagetitle)

  • @tsergey

    Что-то такое можно попробовать:

    
    $pagetitle = 'Машинка'; //значение ТВшки, которое ищем
    $TV_ID=6;//id твшки, которую провереяем на соответствие $pagetitle
    
       $q = $modx->newQuery('modResource');
       $q->innerJoin('modTemplateVarResource', 'tv', array('modResource.id = tv.contentid', 'tv.tmplvarid = ' . $TV_ID));
       $q->select(array('modResource.id'));
       $q->where(array('tv.value'=>
               $pagetitle
               ));
       
       if ($q->prepare() && $q->stmt->execute()){
           $results = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
                    $ids_array=array();
               foreach($results as $result){
                       $ids_array[]=$result['resource_id']; 
                       
                   }
       }
      print_r ($ids_array); //для консоли
      //return $ids_array; //для работы
    
  • @slaad Спасибо что откликнулись.
    В консоле при проверке на выходе получаю Array ()

  • @tsergey Вы точно корректно заполнили
    $pagetitle и $TV_ID?

    Все должно работать, там только на $result['id']; надо поправить и все

    $pagetitle = 'Состав:'; //значение ТВшки, которое ищем
    $TV_ID=4;//id твшки, которую провереяем на соответствие $pagetitle
    
       $q = $modx->newQuery('modResource');
       $q->innerJoin('modTemplateVarResource', 'tv', array('modResource.id = tv.contentid', 'tv.tmplvarid = ' . $TV_ID));
       $q->select(array('modResource.id'));
       $q->where(array('tv.value'=>
               $pagetitle
               ));
       
       if ($q->prepare() && $q->stmt->execute()){
           $results = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
                    $ids_array=array();
               foreach($results as $result){
                       $ids_array[]=$result['id']; 
                       
                   }
       }
      print_r ($ids_array); //для консоли
    
  • @slaad Да так заработало.
    Буду теперь думать как получить id родителей этих товаров, и на выводе ограничить, что эти родители являются детьми введенного id.
    Если конечно не сложно не откажусь от помощи, или в какую сторону копать?

  • @tsergey
    Я же вам даже две базы склеил теперь должны были разобраться, ну покрутите запрос.

    Вам нужно копать в сторону $q->select - это поля которые вы из базы тащите и $q->where - это какие фильтры наклаываете.
    в $q->select добавьте modResource.parent
    в $q->where modResource.parent = > ...; ( указать id)

    И да, на выходе у вас будет многомерный массив, поэтому сначала выведите print_r ($results), прежде чем обрабатывать его, чтобы вы поняли , что вам делать.

  • @slaad Спасибо, покрутим, подумаем. Для предыдущего запроса я вот так сделал

    return implode(',',$ids_array); 
    

    Чтобы получить чисто id через запятую

  • Участник @slaad
    Заметил что если в ТВ товара указано не одно значение, а не сколько, то он не выбирается данным сниппетом

  • В общем имею след код

    <?php
    $pagetitle = 'F10/F11 2009>'; //значение ТВшки, которое ищем
    $TV_ID=6;//id твшки, которую провереяем на соответствие $pagetitle
    
       $q = $modx->newQuery('modResource');
       $q->innerJoin('modTemplateVarResource', 'tv', array('modResource.id = tv.contentid', 'tv.tmplvarid = ' . $TV_ID));
       $q->select(array('modResource.parent'));
       $q->where(array(
           'tv.value'=> $pagetitle
               ));
       
       if ($q->prepare() && $q->stmt->execute()){
           $results = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
                    $ids_array=array();
               foreach($results as $result){
                       $ids_array[]=$result['parent']; 
                       
                   }
       }
      return implode(',',$ids_array);
    

    но так как $TV_ID=6 имеет множественное значение, в выборку попадают только товары у которого этот ТВ имеет одно значение (если там указано несколько значений, то игнорируется)

    Вопрос в следующем, как сделать чтобы и с множественным значением попадали документы

 

Последние комментарии

  • Я запишу это в план. Но когда будет сделано, не известно. Компонент создавался для каталогов, у которых категории это ресурсы MODX. Поэтому там нужно выбирать родителя.

    Читать далее
  • D

    @Andchir
    Исходя из ошибки выше:

    в ваш плагин было бы неплохо добавить проверку на существование выбранного ресурса, что-бы исключить появление данной ошибки вы собираетесь дорабатывать плагин для работы с данными MIGX db, которые не имеют связи с ресурсами, а "живут" в отдельной таблице и редактируются через CMP?

    Читать далее
  • D

    @Andchir
    [23-Aug-2019 16:30:27 Europe/Moscow] PHP Fatal error: Uncaught Error: Call to a member function get() on null in /home/a0139615/domains/new.bistriki.com/public_html/core/components/catalogfill/model/catalogfill.class.php:459
    Stack trace:
    #0 /home/a0139615/domains/new.bistriki.com/public_html/core/components/catalogfill/processors/mgr/export.php(32): Catalogfill->csv_export('web')
    #1 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modprocessor.class.php(361): include('/home/a0139615/...')
    #2 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modprocessor.class.php(177): modDeprecatedProcessor->process()
    #3 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modx.class.php(1764): modProcessor->run()
    #4 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modconnectorresponse.class.php(144): modX->runProcessor('export', Array, Array)
    #5 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modconnectorrequest.class.php(86): modConnectorResponse->outputContent(Array)
    #6 /home/a0139615/ in /home/a0139615/domains/new.bistriki.com/public_html/core/components/catalogfill/model/catalogfill.class.php on line 459

    Читать далее
  • L

    @Dolce подскажите, как решили проблему? у меня тоже самое

    Читать далее