0

Concrete5 のドロップダウン メニューで 2 つのことを組み合わせようとしていますが、うまく機能しないようで、誰かが私を助けてくれるかどうか疑問に思っています。

メニュー用のこのコードがあります

    <?
    defined('C5_EXECUTE') or die(_("Access Denied."));
    $aBlocks = $controller->generateNav();
    global $c;

    if ($c->isEditMode()) {
            echo("<div class=\"menu\" style=\"position:inherit!important;\"><ul>");
    }
    else {
            echo("<div class=\"menu\"><ul>");
    }

    $nh = Loader::helper('navigation');

    foreach($aBlocks as $ni) {
            $_c = $ni->getCollectionObject();
            if (!$_c->getCollectionAttributeValue('exclude_nav')) {

                    $thisLevel = $ni->getLevel();

                    if ($thisLevel > $lastLevel) {
                            echo("<!--[if IE 7]><!--></a><!--<![endif]-->\n<!--[if lte IE 6]><table><tr><td><![endif]-->\n<ul>\n");
                    } else if ($thisLevel < $lastLevel) {
                            for ($j = $thisLevel; $j < $lastLevel; $j++) {
                                    echo("</a></li>\n</ul>\n<!--[if lte IE 6]></td></tr></table></a><![endif]--></li>\n");
                            }
                    }

                    if ($thisLevel == $lastLevel && $i >0) {
                       echo "</a></li>\n";
                    }

                    $pageLink = false;

                    if ($_c->getCollectionAttributeValue('replace_link_with_first_in_nav')) {
                            $subPage = $_c->getFirstChild();
                            if ($subPage instanceof Page) {
                                    $pageLink = $nh->getLinkToCollection($subPage);
                            }

                    }

                    if (!$pageLink) {
                            $pageLink = $ni->getURL();
                    }

                      if ($_c->getCollectionAttributeValue('placeholder')) {
                             $pageLink="javascript:void(0)";
                     }


                    echo '<li><a href="'.$pageLink.'">' . $ni->getName();

                    $lastLevel = $thisLevel;
                    $i++;
            }
    }

    $thisLevel = 0;
    for ($i = $thisLevel; $i <= $lastLevel; $i++) {
            echo("</a></li></ul>");
    }
    echo '</div>';
    ?>        

しかし、nav-selected をスタイリングする運がなかったので、foreach で始まる行の下に追加したいと思いました。

    $classes = array();

    if ($ni->isCurrent) {
            //class for the page currently being viewed
            $classes[] = 'nav-selected';
    }

    if ($ni->inPath) {
            //class for parent items of the page currently being viewed
            $classes[] = 'nav-path-selected';
    }

nav-selectedのスタイルを設定できる別のメニューからですが、違いはありません。誰かが私が間違っていることを見ていますか、または誰かがこれを機能させる方法のヒントを教えてくれますか? 本当に助かります。ありがとう!

4

1 に答える 1

0

2つの異なる場所からコードを取得し、それらを一緒に貼り付けたように見えます(これはめったに機能しません)。最初のコードサンプルは古いテンプレートからのものであり、2番目のコードサンプルは新しいテンプレートからのものだと思います。

ここでの最善の策は、新しい、よりクリーンなautonavテンプレートを最初から作成することです: https ://raw.github.com/concrete5/concrete5/master/web/concrete/blocks/autonav/view.php

あなたが望むことをするためにそれを修正することはそれほど難しいことではないはずです。これで問題が発生した場合は、ここまたはconcrete5フォーラム(http://concrete5.org/community/forums)に新しい質問として投稿してみてください。

于 2013-02-26T16:12:40.503 に答える