Как оптимизировать навигацию по меню - PullRequest
0 голосов
/ 07 декабря 2011

Я строю пункты меню, у меня проблема с последней опцией. Метод Anchor не работает, так как ссылка всплывает в новом окне. Кроме того, в варианте 1 и 2 я повторяю те коды, которые выглядят не очень хорошо.

Есть ли лучший способ оптимизировать эти коды? сделать его чище.

В моем контроллере:

public function loadPage($name, $pageID) {
    $data['title'] = $this->tabPageData;
    $data['tabMenu'] = $this->model->getAllMenuItems(); 

    if ($name == 'portfolio-1') {
        // load portfolio 1, get the page content (photos) and its name
        $data['tabPageContent'] = $this->model->getPageContentByPageID($pageID);
        $data['pageName'] = $this->model->getPageNameByID($pageID);
    } elseif ($name == 'portfolio-2') {
        $data['tabPageContent'] = $this->model->getPageContentByPageID($pageID);
        $data['pageName'] = $this->model->getPageNameByID($pageID);
    } elseif ($name == 'contact') {
        // load Contact page
        $data['tabContact'] = $this->model->getContactByPageID($pageID);
    } else {
        // load a Blog site
        echo anchor('http://mysite.tumblr.com', 'target=_blank');
    } 
    $this->load->view('content', $data);
}

На мой взгляд:

<div id="menu">
         <ul>
            <?php foreach ($tabMenu as $item) : ?>
                <?php
                    $url = "<li><a href='" . base_url(); 
                    $url .= str_replace("+", "-", urlencode(strtolower($item->name))) . "/". ($item->cat_id) . "'>";
                    $url .= strtoupper($item->name) . "</a></li>";
                    echo $url;
                ?>
            <?php endforeach; ?>    
        </ul>
    </div> <!-- end of Menu -->

1 Ответ

2 голосов
/ 07 декабря 2011

Я бы посоветовал вам очистить вид, создав вспомогательный метод, который генерирует элемент списка для вашей навигации.

Поместите следующий код в файл с именем navigation_helper.php в application/helpers/.

if (!defined('BASEPATH')) exit('No direct script access allowed');

if (!function_exists('build_list_item'))
{
    function build_list_item ($item) {
        $url_item_name = str_replace('+', '-', urlencode(strtolower($item->name)));
        $url = base_url() . $url_item_name . "/". $item->cat_id;
        return '<li><a href="' . $url . '">' . strtoupper($item->name) . '</a></li>';
    }
}

Убедитесь, что вы загружаете помощник в свой контроллер или автоматически загружаете его, если используете его часто.

$this->load->helper('navigation_helper');

Тогда, на ваш взгляд, вы можете сделать это:

<div id="menu">
    <ul>
        <?php foreach ($tabMenu as $item): ?>
            <?php echo build_list_item($item); ?>
        <?php endforeach; ?>    
    </ul>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...