К содержанию

Помогите разобраться, как получить название родительской категории не как 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
2 392
Реклама

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

atrox
atrox Старожил
01 августа 2019, 07:22
$categories = $product->get('parent'),
$categories = $product->get('pagetitle'),
попробуй вот так
    Алексей
    Алексей Старожил
    01 августа 2019, 09:54
    Спасибо, не помогло… Сниппет выводит вместо названия категории — название продукта, а нужно чтобы выводило название родительской категории в которой он размещен, так как я написал сниппет выводится id родительской категории а нужно название (извините не знаю как она правильно называется, поле называется 'parent').
      Алексей
      Алексей Старожил
      01 августа 2019, 09:59
      вот
    ElenaLelo
    ElenaLelo Старожил
    01 августа 2019, 10:31
    В паренте хранится id рродительской категории, а не название. Наверное, вот так.
    $categories = $modx->getObject('modResource', $product->get('parent'));
    return $categories->get('pagetitle');
      Алексей
      Алексей Старожил
      01 августа 2019, 10:45
      Спасибо, не помогло, выводит просто название продукта
        ElenaLelo
        ElenaLelo Старожил
        01 августа 2019, 11:36
        Попробуйте вставить 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
          Спасибо выводит, сейчас попробую добавить остальное
            Алексей
            Алексей Старожил
            01 августа 2019, 14:05
            Спасибо 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