Помогите разобраться, как получить название родительской категории не как id, а как "название"

Добрый день! Помогите, пожалуйста, сделал сниппет для получения массива ключей и их значений, все работает кроме одного никак не могу получить значение 'categories' в виде названия, как ни пробовал получаю id 'parent' подскажите как получить название. Вот сниппет:
<?php
$values[] = iconv('CP1251', 'UTF-8', $value);

$products = $modx->getCollection('modResource', array('class_key' => 'msProduct'));    

foreach($products as $product)
    {
    $value = 
    [
        $categories = $product->get('parent'),
        $pagetitle = $product->get('pagetitle'),
        $description = $product->get('description'),
        $price = $product->get('price'),
        $image = $product->get('image'),
        $popular = $product->get('popular'),
        $published= $product->get('published')
    ];
    $array = array($values);
    
    $site_url = MODX_SITE_URL;
    
    if ($popular > 0) {
        $a = "да";
        } else {
        $a = "нет";
        }
    if ($published > 0) {
        $b = "да";
        } else {
        $b = "нет";
        }
    $key = array(
    'categories'=>$categories,
    'pagetitle'=>$pagetitle,
    'description'=>$description,
    'price'=>$price,
    'image'=>$site_url.$image,
    'popular'=>$a,
    'published'=>$b
    );
    
print_r ($key);
}
Алексей
31 июля 2019, 16:22
modx.pro
116
0

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

atrox
01 августа 2019, 07:22
0
$categories = $product->get('parent'),
$categories = $product->get('pagetitle'),
попробуй вот так
    Алексей
    01 августа 2019, 09:54
    0
    Спасибо, не помогло… Сниппет выводит вместо названия категории — название продукта, а нужно чтобы выводило название родительской категории в которой он размещен, так как я написал сниппет выводится id родительской категории а нужно название (извините не знаю как она правильно называется, поле называется 'parent').
ElenaLelo
01 августа 2019, 10:31
0
В паренте хранится id рродительской категории, а не название. Наверное, вот так.
$categories = $modx->getObject('modResource', $product->get('parent'));
return $categories->get('pagetitle');
    Алексей
    01 августа 2019, 10:45
    0
    Спасибо, не помогло, выводит просто название продукта
      ElenaLelo
      01 августа 2019, 11:36
      0
      Попробуйте вставить id категории вместо $product->get('parent') и посмотреть что произойдет. Вот такой небольшой сниппет у меня работает
      <?php
      $pdo = $modx->getService('pdoFetch');
      if ($products = $pdo->getCollection('modResource', array('class_key' => 'msProduct'))) {
      	foreach($products as $product)
          {
              $categories = $modx->getObject('modResource', $product['parent']);
              print_r ('
      название ресурса = '.$product['pagetitle'].', а название родителя = '.$categories->get('pagetitle')); 
          }
      }
        Алексей
        01 августа 2019, 11:43
        0
        Спасибо выводит, сейчас попробую добавить остальное
        Алексей
        01 августа 2019, 14:05
        0
        Спасибо ElenaLelo! Это немного другой вариант все выводит подсказал Павел Романов в оригинале выглядит так
        $products = $modx->getCollection('modResource', array('class_key' => 'msProduct'));    
        foreach($products as $product){
            $product->get('popular') == 1 ? $a = "да" : $a = "нет";
            $product->get('published') == 1 ? $b = "да" : $b = "нет";
            if($cat = $modx->getObject('modResource', $product->get('parent'))) $cattitle = $cat->get('pagetitle');
            $key = array(
                'categories' => iconv('CP1251', 'UTF-8', $cattitle),
                'pagetitle' => iconv('CP1251', 'UTF-8', $product->get('pagetitle')),
                'description' => iconv('CP1251', 'UTF-8', $product->get('description')),
                'price' => $product->get('price'),
                'image' => MODX_SITE_URL . $product->get('image'),
                'popular'=>$a,
                'published'=>$b
            );
            print_r ($key);
        }
        :
        но у меня проблемы с восприятием русской кирилицы, поэтому работает вот так, если вдруг где то понадобится:
        <?php
        $values[] = iconv('CP1251', 'UTF-8', $value);
        $products = $modx->getCollection('modResource', array('class_key' => 'msProduct'));    
        foreach($products as $product){
            $product->get('popular') == 1 ? $a = "да" : $a = "нет";
            $product->get('published') == 1 ? $b = "да" : $b = "нет";
            if($cat = $modx->getObject('modResource', $product->get('parent'))) $cattitle = $cat->get('pagetitle');
            $key = array(
                'categories' => $cattitle,
                'pagetitle' => $product->get('pagetitle'),
                'description' => $product->get('description'),
                'price' => $product->get('price'),
                'image' => MODX_SITE_URL . $product->get('image'),
                'popular'=>$a,
                'published'=>$b
            );
            print_r ($key);
        }
        еще раз огромное спасибо!!!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
8