UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: muldy от 15 Января 2014, 16:13:02

Название: Группировка item в выборке?
Отправлено: muldy от 15 Января 2014, 16:13:02
Здравствуйте!

Не могу разобраться сижу над задачей втрой день!

Есть выборка с помощью selector, в результате которой получаю следующее(часть выборки):

<item title="Рукоделие и Хэнд - Мэйд">Рисование и живопись, акварель, акрил</item>
<item>Шкатулки и коробочки</item>
<item>Скрапбукинг</item>
<item>Наборы и модели для поделок</item>

Соотвественно item должны группироваться по наличию в них атрибута title, те если есть title у item то группируются все элементы до следующего title.

В результате должно получиться нечто подобное:

<group name="Рукоделие и Хэнд - Мэйд">

  <item>Рисование и живопись, акварель, акрил</item>
  <item>Шкатулки и коробочки</item>
  <item>Скрапбукинг</item>
  <item>Наборы и модели для поделок</item>

</group>

И так далее, как можно реализовать данную задачу?
Название: Re:Группировка item в выборке?
Отправлено: e.ioffe от 15 Января 2014, 22:55:26
Выложите код, который возвращает такой xml
Название: Re:Группировка item в выборке?
Отправлено: muldy от 16 Января 2014, 00:42:42
  $sel_3 = new selector('pages');
                $sel_3->types('hierarchy-type')->name('catalog', 'category');
                $sel_3->where('podmenyu_tip_tovarov')->equals('18955');
                $sel_3->order('podmenyu_tip_tovarov')->asc();


                foreach ($sel_3 as $item_3) {
                    
                        $get_tip = $item_3->getValue('zagolovok_pod_menyu');

                        $get_id = $item_3->getValue('podmenyu_tip_tovarov');

                        $arr_2['node:value'] = $item_3->getName();
                          
                         $arr_2['attribute:title'] = $get_tip;
            
                        $lines_2['nodes:items'][0]['nodes:item'][] = $arr_2;  
                    

                }


             return def_module::parseTemplate('',$lines_2);

        }

Категориях прописан непосредственно сам title, создано доп поле и туда вводиться  Заголовок.
Заранее спасибо
Название: Re:Группировка item в выборке?
Отправлено: e.ioffe от 16 Января 2014, 11:10:58
Категориях прописан непосредственно сам title, создано доп поле и туда вводиться  Заголовок.
Заранее спасибо

На скорую руку набросал:

$sel_3 = new selector('pages');
$sel_3->types('hierarchy-type')->name('catalog', 'category');
$sel_3->where('podmenyu_tip_tovarov')->equals('18955');
$sel_3->order('podmenyu_tip_tovarov')->asc();

$tips = array();
$groups = array();


foreach ($sel_3 as $item_3) {

    $get_tip = $item_3->getValue('zagolovok_pod_menyu');

    $get_id = $item_3->getValue('podmenyu_tip_tovarov');

    $arr_2['node:value'] = $item_3->getName();

    $arr_2['attribute:title'] = $get_tip;

    $lines_2['nodes:items'][0]['nodes:item'][] = $arr_2;

    if(!isset($tips[$get_tip])) {
        $tips[$get_tip] = count($groups);
        $groups[] = array("attribute:name" => $get_tip, "items" => array('nodes:item' => array()));
    }

    $groups[$tips[$get_tip]]['items']['nodes:item'][] = $arr_2;
}


return def_module::parseTemplate('',array('groups' => array('nodes:group' => $groups)));
Название: Re:Группировка item в выборке?
Отправлено: muldy от 16 Января 2014, 11:42:46
Спасибо за помощь, но не совсем корректно работает, получается вывод следующий, тк заголовок задан только в одном элементе!


<group name="Рукоделие и Хэнд - Мэйд">
<items>
<item title="Рукоделие и Хэнд - Мэйд">Рисование и живопись, акварель, акрил</item>
</items>
</group>

<group>
<items>
<item>Шкатулки и коробочки</item>
<item>Хэнд мэйд</item>
<item>Скрапбукинг</item>
<item>Вышивка, шитьё и вязание</item>
<item>Плетение, лепка, декупаж</item>
<item>Наборы и модели для поделок</item>
</items>
</group>
</groups>

Те берется заголовок и группируется, а потом выводится не в этой группе, те не объединяется в нее!