EC-CUBE4のデフォルトPCメニューでは、多階層のカテゴリーがすべてアコーディオン表示されるので、指定の階層までしか表示させない方法です。

※対象のソースブロック「カテゴリナビ(PC)」

変更前のソース

{% set Categories = repository('Eccube\\Entity\\Category').getList() %}

{% macro tree(Category) %}
    {% from _self import tree %}
    <a href="{{ url('product_list') }}?category_id={{ Category.id }}">
        {{ Category.name }}
    </a>
    {% if Category.children|length > 0 %}
        <ul>
            {% for ChildCategory in Category.children %}
                <li>
                    {{ tree(ChildCategory) }}
                </li>
            {% endfor %}
        </ul>
    {% endif %}
{% endmacro %}

{# @see https://github.com/bolt/bolt/pull/2388 #}
{% from _self import tree %}

<div class="ec-categoryNaviRole">
    <div class="ec-itemNav">
        <ul class="ec-itemNav__nav">
            {% for Category in Categories %}
                <li>
                    {{ tree(Category) }}
                </li>
            {% endfor %}
        </ul>
    </div>
</div>

変更後のソース

{% set Categories = repository('Eccube\\Entity\\Category').getList() %}

{% macro tree(Category) %}
    {% from _self import tree %}
    <a href="{{ url('product_list') }}?category_id={{ Category.id }}">
        {{ Category.name }}
    </a>
    {% if Category.children|length > 0 and Category.hierarchy < 2 %}
        <ul>
            {% for ChildCategory in Category.children %}
                <li>
                    {{ tree(ChildCategory) }}
                </li>
            {% endfor %}
        </ul>
    {% endif %}
{% endmacro %}

{# @see https://github.com/bolt/bolt/pull/2388 #}
{% from _self import tree %}

<div class="ec-categoryNaviRole">
    <div class="ec-itemNav">
        <ul class="ec-itemNav__nav">
            {% for Category in Categories %}
                <li>
                    {{ tree(Category) }}
                </li>
            {% endfor %}
        </ul>
    </div>
</div>

説明8行目のところに「and Category.hierarchy < 2」を追加するだけです。
2の部分を3にすることで3階層目まで表示されます。
ちなみに2階層だけだと再帰する必要が無いので、下記のように書くことができます。

2階層のシンプルなコード

{% set Categories = repository('Eccube\\Entity\\Category').getList() %}

<div class="ec-categoryNaviRole">
	<div class="ec-itemNav">
		<ul class="ec-itemNav__nav">
			{% for Category in Categories %}
				<li>
					<a href="{{ url('product_list') }}?category_id={{ Category.id }}">
						{{ Category.name }}
					</a>
					{% if Category.children|length > 0 %}
						<ul>
							{% for ChildCategory in Category.children %}
								<li>
									<a href="{{ url('product_list') }}?category_id={{ ChildCategory.id }}">
										{{ ChildCategory.name }}
									</a>
								</li>
							{% endfor %}
						</ul>
					{% endif %}
				</li>
			{% endfor %}
		</ul>
	</div>
</div>