baserCMSサイドナビで、特定の配置において下の階層までの表示が開いたままになる

【環境情報】
・baserCMSのバージョン:4.1.5
・レンタルサーバー名:KDDI ACE01
・使用テーマ:独自のもの
・PHPスキル(自己評価):E

言葉でうまく説明ができないため、画像にて理想形と現状を表示いたします。

常に一番上にある中項目中にある小項目が、常に表示されてしまう状態です。
どこから調べていけばよいか、検討がついていない状態です。
いろいろ情報が足りてないかと思いますが、どこから検討をつければよいのかわかりかねています。
申し訳ありませんが、助けてください。

こんにちは。
画像で示されている内容が、何について書かれているのかがわからないので、コメントつきにくいと思います。
例えば、ブログ機能を使ったブログページのウィジェット欄で表示するカテゴリー一覧の類でしょうか?
画面キャプチャーなどを添付されると、わかりやすいと思います。

GUSSAN様

ご指摘いただきまして、ありがとうございます。

表示をしようとしているのは、HPの固定ページ内で表示するサイドメニューです。
企業HPのため一部固有名詞を隠しておりますが、キャプチャを張り付けさせていただきます。
※現状の表示状況については、一回の投稿につき一枚しか画像を載せられないようですので、下にぶら下げます。

【①現状カテゴリ一覧】

メニューの構成に問題があるのか、はたまたどこかしらコーディングを触る必要があるのか、わかりかねている状況です。
メニューの項目を触っているのが、/html/theme/(テーマ名)/Helperの「ThemeHelper.php」当たりくらいしか思い当たる節がなく、躓いている状況です。

念のため、メニューの表示(どの階層まで表示するかを司っている処理だと認識しています)の該当箇所のソースも併せて載せておきます。

/**

  • ブログカテゴリ、記事データを取得する
  • @param int $blogContentId
  • @return array
    */
    public function getBlogCategories($blogContentId) {
    if (ClassRegistry::isKeySet(‘Blog.BlogCategory’)) {
    $BlogCategoryModel = ClassRegistry::getObject(‘Blog.BlogCategory’);
    } else {
    $BlogCategoryModel = ClassRegistry::init(‘Blog.BlogCategory’);
    }
    $data = $BlogCategoryModel->find(‘all’, array(
    ‘conditions’ => array(
    ‘BlogCategory.blog_content_id’ => $blogContentId,
    ),
    ‘recursive’ => 1,
    ‘order’ => array(
    ‘BlogCategory.blog_content_id’ => ‘ASC’,
    ),
    ));
    return $data;
    }
public function localNavi($contents, $currentLevel, $current = false){
    if ($contents){

        if ($contents[0]['Content']['id'] == '3'){
            foreach ($contents as $key => $content){
                if (preg_match('/^' . str_replace('/', '\/', $content['Content']['url']) . '(.*?)/', $this->request->here)){
                    $contents = $content['children'];
                    echo "<h2><a href=\"{$content['Content']['url']}\">" . $content['Content']['title'] . "</a></h2>\n";
                }
            }

            echo "<ul class=\"c-nav-local__list\">\n";
        } else {
            echo "<ul>";
        }

        foreach ($contents as $key => $content){
            if ($content['Content']['name'] == 'index'){
                continue;
            }

  		$dataParent = '';
  		if(($content['Content']['level'] == '2' || $content['Content']['level'] == '3' ) && count($content['children']) > 1 && preg_match('/^' . str_replace('/', '\/', $content['Content']['url']) . '(.*?)/', $this->request->here)){
  			$dataParent = ' data-parent="true"';
  			$current = true;
            }

  		$dataCurrent = '';
  		if (preg_match('/^' . str_replace('/', '\/', $content['Content']['url']) . '(.*?)/', $this->request->here)){
  			$dataCurrent = ' data-current="true"';

  		}

            echo "<li{$dataParent}{$dataCurrent}>\n";
            echo "<a href=\"{$content['Content']['url']}\">{$content['Content']['title']}</a>\n";

            if ($current && $content['children'] && count($content['children']) > 1 && $content['Content']['level'] < 4){
  			$this->localNavi($content['children'], $currentLevel, $current);
  		}
  		$current = false;
  		
            echo "</li>\n";

        }

        echo "</ul>\n";
    }

}

}

見当違いだったら申し訳ございません。何卒宜しくお願い致します。

【現状表示状況キャプチャ1】

【現状表示状況キャプチャ2】

これは、サイト全体のグローバルメニューのことですね?
環境情報に、テーマ:「独自のもの」とありますが、全くスクラッチでテーマを作成されたのであれば、このようなご質疑にはならないと思いますので、
サンプルにされたテーマ(改修を加える前の元のテーマ)があると思うのですが、テーマ名はわかりますか?

この辺りを参考にされてはいかがでしょうか?

ありがとうございます。

元ネタになっているテーマについては、大変申し訳ございませんがサイトの制作会社が別だったため、今現在製作会社さんに問い合わせております。

また、参考ページをご提示いただき、ありがとうございます。
いただいたリンク先の内容を参考に、もうちょっと頑張ってみます。

テーマの元ネタがわかったら、スレッドに追記いたします。

申し訳ありません、思い込みでお話ししてしまいましたが、WEB制作会社にご依頼されて製作された独自テーマというケースですか。。。
nagataさんは、発注者側のご担当者という位置づけでのご質問ということでしょうか?
その場合は、独自テーマを制作された制作会社様にご対応いただくべきなのでしょうが、こちらで質問されておられるということは、ご事情あってそうもいかないということですよね。
だとすると、実際のコードをみて修正箇所を判断できる新たな制作会社に依頼されるか、コードを読める方にご相談されるかいずれかかと。
ある程度、HTML、CSS、Javascriptあたりが読める方がご覧になれば、そう難しくなくご意向に沿った形にはできるのではないかと思いますので、社内であたってみてはいかがでしょうか?