Страница 1 из 1

Как разделить верхнее меню |

СообщениеДобавлено: 13 сен 2013, 09:46
lomuk
Подскажите как разделить верхнее меню
Изначально оно так:
Код: Выделить всё
Главная Новости Вопросы-Ответы Спец.предложения Дополнительно

Нужно так
Код: Выделить всё
Главная | Новости | Вопросы-Ответы | Спец.предложения | Дополнительно

Re: Как разделить верхнее меню |

СообщениеДобавлено: 13 сен 2013, 11:13
fisher
файл protected/modules/menumanager/models/Menu.php
в функции getMenuItems надо дописать строки.
было
Код: Выделить всё
if(!$menu){
            return array();
        }
        return 
$menu

должно быть
Код: Выделить всё
if(!$menu){
            return array();
        }
        
$t=0;
        
$newmenu = array();
        
$newmenu[0]=$menu[0];
        
$t++;
        for(
$i=1;$i<count($menu);$i++){
                
$newmenu[$t]=array('label' => '|');
                
$t++;
            
$newmenu[$t]=$menu[$i];
            
$t++;
        }
        if(
count($newmenu)>0){
            
$menu $newmenu;
        }
        return 
$menu

Re: Как разделить верхнее меню |

СообщениеДобавлено: 13 сен 2013, 11:47
lomuk
Спасибо

Re: Как разделить верхнее меню |

СообщениеДобавлено: 01 июн 2014, 22:51
lomuk
Подскажите как сделать тоже самое только в 1.8.1

Re: Как разделить верхнее меню |

СообщениеДобавлено: 02 июн 2014, 08:42
Xpycm
Файл protected/modules/menumanager/models/Menu.php метод normalizeMenuItems

после:
Код: Выделить всё
if ($node['is_blank'] && $node['type'] == self::LINK_NEW_MANUAL)
    
$menu[$i]['linkOptions'] = array('target' => '_blank');
if (
$children)
    
$menu[$i]['items'] = $children


вставить:
Код: Выделить всё
if($depth == 0) {
    
$i++;
    
$menu[$i] = array(
        
'label' => '|',
        
'url' => ''
    
);

Re: Как разделить верхнее меню |

СообщениеДобавлено: 02 июн 2014, 15:55
lomuk
Данных строк нет в движке

да и в файле menu есть только ф-ция

Код: Выделить всё
    public function normalize(){
        $pages=self::model()->findAll(array(
            'condition'=>'parentId=:parentId AND number>=:number AND id!=:id',
            'params'=>array(
                'id'=>$this->id,
                'parentId'=>$this->parentId,
                'number'=>$this->number,
            ),
        ));
        $num=$this->number;
        foreach($pages as $page){
            if($num==$page->number){
                $page->number++;
                $page->update();
            }else
                break;
            ++$num;
        }
    }
 

Re: Как разделить верхнее меню |

СообщениеДобавлено: 02 июн 2014, 16:00
lomuk
Нашел только такое, не знаю имеет ли значение но ORE 1.8.1 PRO

Код: Выделить всё
    public static function getMenuItems($parentId, $depth = 0){
        # не выводим более 3 уровней
        if ($depth > self::MAX_LEVEL) {
            return array();
        }

        $pages = self::model();
        $pages = $pages->findAll(array(
            //'select'=>'id, parentId, title_'.Yii::app()->language.' AS title, special, href_'.Yii::app()->language.' AS href, type',
            'condition'=>"parentId = :parentId AND active = :active",
            'params'=>array(
                'parentId' => $parentId,
                'active' => 1,
            ),
            'order'=>'t.number',
        ));

        if(!count($pages)) return array();

        $menu = array();
        foreach ($pages as $k => $v) {
            $menu[$k] = array();
            $children = self::getMenuItems($v->id, $depth + 1);

            $menu[$k]['label'] = $v->getTitle();
            $menu[$k]['url'] = $v->getUrl();

            if ($v->is_blank && $v->type == self::LINK_NEW_MANUAL) {
                $menu[$k]['linkOptions'] = array('target' => '_blank');
            }

            if ($children)
                $menu[$k]['items'] = $children; 


если добавляю тут, то выходит вот так
Код: Выделить всё
Главная Новости Вопросы-ответы Спец.предложения Отзывы Дополнительно | 

Re: Как разделить верхнее меню |

СообщениеДобавлено: 02 июн 2014, 16:13
Xpycm
Вместо:
Код: Выделить всё
$menu = array();
foreach (
$pages as $k => $v) {
    
$menu[$k] = array();
    
$children self::getMenuItems($v->id$depth 1);

    
$menu[$k]['label'] = $v->getTitle();
    
$menu[$k]['url'] = $v->getUrl();

    if (
$v->is_blank && $v->type == self::LINK_NEW_MANUAL) {
        
$menu[$k]['linkOptions'] = array('target' => '_blank');
    }

    if (
$children)
        
$menu[$k]['items'] = $children;
        


Вставить:
Код: Выделить всё
$menu = array();
$i 0;
foreach (
$pages as $k => $v) {
    
$menu[$i] = array();
    
$children self::getMenuItems($v->id$depth 1);

    
$menu[$i]['label'] = $v->getTitle();
    
$menu[$i]['url'] = $v->getUrl();

    if (
$v->is_blank && $v->type == self::LINK_NEW_MANUAL) {
        
$menu[$i]['linkOptions'] = array('target' => '_blank');
    }

    if (
$children)
        
$menu[$i]['items'] = $children;
        
    if(
$depth == 0) {
        
$i++;
        
$menu[$i] = array(
            
'label' => '|',
            
'url' => ''
        
);
    } 
    
    
$i++;

Re: Как разделить верхнее меню |

СообщениеДобавлено: 02 июн 2014, 17:35
lomuk
Все выводится, спасибо.

Но подскажите как убрать последний |

Сейчас
Код: Выделить всё
Главная | Новости | Вопросы-ответы | Спец.предложения | Отзывы | Дополнительно | 


Надо
Код: Выделить всё
Главная | Новости | Вопросы-ответы | Спец.предложения | Отзывы | Дополнительно

Re: Как разделить верхнее меню |

СообщениеДобавлено: 03 июн 2014, 06:48
Xpycm
lomuk писал(а):Но подскажите как убрать последний |


Пусть это будет "домашним заданием"