首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化菜单导航

如何优化菜单导航
EN

Stack Overflow用户
提问于 2011-12-08 03:39:18
回答 1查看 84关注 0票数 0

我正在建立一个菜单选项,有问题在最后一个选项,锚定方法不作为一个链接弹出一个新窗口的工作。此外,在选项1和2中,我重复了那些看起来不太好的代码。

有没有更好的方法来优化这些代码?让它变得更干净。

在我的控制器中:

代码语言:javascript
复制
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);
}

在我的视图中:

代码语言:javascript
复制
<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 -->
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-08 03:56:22

我建议您通过创建一个辅助方法来清理视图,该方法为您的导航生成一个列表项。

将以下代码放入application/helpers/中名为navigation_helper.php的文件中。

代码语言:javascript
复制
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>';
    }
}

确保在控制器中加载辅助对象,或者如果您经常使用它,则自动加载它。

代码语言:javascript
复制
$this->load->helper('navigation_helper');

然后在您的视图中,您可以这样做:

代码语言:javascript
复制
<div id="menu">
    <ul>
        <?php foreach ($tabMenu as $item): ?>
            <?php echo build_list_item($item); ?>
        <?php endforeach; ?>    
    </ul>
</div>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8421438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档