ローカルナビゲーションの表示について

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

PHPについては全くの初心者です。
不足している情報等ございましたら、ご指摘ください。

さて、本題ですが、
ローカルナビゲーションの表示について、ご教示いただけないかと思い、トピックを作成させていただきました。

一定以上の階層からサイドナビゲーションでメニューとして表示されないという状況です。

/html/theme/(テーマ名)/Helperの「ThemeHelper.php」の下記コードにおいて、もう一つ深い階層まで表示をさせたいと考えております。
以下、現行本番環境でのソースです。

========以下、ソース(ThemeHelper.phpにおけるサイドナビ該当部分)========
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' && 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'] < 3){
				$this->localNavi($content['children'], $currentLevel, $current);
			}
			$current = false;

            echo "</li>\n";

        }

        echo "</ul>\n";
    }

}

}
========以上、ソース(ThemeHelper.phpにおけるサイドナビ該当部分)========

上記ソースの中で、

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

この部分の$content[‘Content’][‘level’] == '2’を「$content[‘Content’][‘level’] == ‘2’||’3’」とし、

            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'] < 3){
  			$this->localNavi($content['children'], $currentLevel, $current);
  		}
  		$current = false;

この部分の$content[‘Content’][‘level’] < 3を「$content[‘Content’][‘level’] < 4」とし、
表示する階層を増やしたところ、ほぼすべてのメニュー項目が表示されてしまいました。

本来やりたい表示としては
<h2>(親カテゴリ名)</h2>
<ul>
<li>子カテゴリ名①</li>
(孫カテゴリはあるが、ほかの子カテゴリを表示中は表示しない)
<li>子カテゴリ名②
<ul>孫カテゴリ名②-1</ul>
<ul>孫カテゴリ名②-2</ul>
<ul>孫カテゴリ名②-3</ul>
<li>ひ孫カテゴリ②-3-(1)</li>
</li>
</ul>

としたいのですが、表示させたくない子カテゴリ①の孫カテゴリまで表示されている状況です。

分かりにくい説明で申し訳ございませんが、どなたかお力を貸していただけたら幸いです。

全体の解決まではわかりませんが

$content['Content']['level'] == '2'|| '3'  && count($content['children'])

この書き方だと '3’は別の条件として独立してしまいますね。
最終的に階層2または3(常にtrue)かつ子要素が1以上って評価になってしまいますね。
なので階層2なら後ろは評価せずに全部通っちゃってると思われます。

比較するんであれば

if(($content['Content']['level'] == '2' || $content['Content']['level'] == '3' ) && count($content['children'])
もしくは
if(in_array($content['Content']['level'] ,['2','3'] ) && count($content['children'])

こうすれば結果が変わるんじゃないかと思います。

BigFly様

コメントありがとうございます。
無事に解決しました!本当にありがとうございました!
書き方もわからず本当に手詰まりだったので…。
教えていただいたことをしっかりと身に着け、今後も頑張っていきたいと思います。
本当に助かりました!ありがとうございました!