バージョン選択

フォーラム

メニュー

オンライン状況

65 人のユーザが現在オンラインです。 (53 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 65
もっと...

サイト内検索

質問 > 管理機能 > カテゴリの一覧、レイアウト管理でのブロック追加と、直接includeの違い

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
miyamoto
投稿日時: 2017/2/4 8:01
対応状況: −−−
新米
登録日: 2017/2/4
居住地:
投稿: 9
カテゴリの一覧、レイアウト管理でのブロック追加と、直接includeの違い
お世話になります。

「EC-CUBE3でブロックを追加する方法」
http://spot-web.jp/blog/2735/

上記ページを参考に、カテゴリブロック(2)を作成いたしました。
しかし、そのブロックは、ページ管理 > レイアウト編集(管理)にて
挿入すると正常に表示されるのですが、ページ編集のblock mainの中で、

{% block main %}
  {{ include('Block/main_menu.twig') }}
{% endblock %}

と、直接 include すると、何も表示されなくなります。

レイアウトの編集でブロックをドラッグドロップでmain block以外の場所に置いた場合は期待通りの結果なのですが、どうしてもmain blockの中に設置したいので直接 main blockからインクルードする方法を選びました。

ご存じの方がおりましたら、ご教授のほどお願いいたします。
umebius
投稿日時: 2017/2/4 9:40
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: カテゴリの一覧、レイアウト管理でのブロック追加と、直接includeの違い
Block/main_menu.twigの中身はどうなっているのでしょうか?
Categoryブロックのコピペですか?

それだと{{ include('Block/main_menu.twig') }}ではCategoriesという変数が渡っていないので何も表示されません。

下記のように書けば良いですね。あまりブロック化する意味はないですが。。
{{ include('Block/main_menu.twig', { Categories : app['eccube.repository.category'].findBy( { Parent : null} , { rank : 'DESC' })}) }}



あるいは、includeせず、main内の表示したい部分に下記を直接書いても良いですね。ブロック登録自体が不要になります。

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

<nav id="category" class="drawer_block pc">
    <ul class="category-nav">
    {% set Categories = app['eccube.repository.category'].findBy( { Parent : null} , { rank : 'DESC' }) %}
    {% for Category in Categories %}
        {{ _self.tree(Category) }}
    {% endfor %}
    </ul> <!-- category-nav -->
</nav>


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

miyamoto
投稿日時: 2017/2/4 13:15
対応状況: −−−
新米
登録日: 2017/2/4
居住地:
投稿: 9
Re: カテゴリの一覧、レイアウト管理でのブロック追加と、直接includeの違い
umebiusさん、返信ありがとうございます。
main_menu.twigの中は、Categoryブロックをもとに、
コントローラー名とreturnするtwigファイル名を変更しただけで、
変数名などはいじっていません。

{{ include('Block/main_menu.twig', { Categories : app['eccube.repository.category'].findBy( { Parent : null} , { rank : 'DESC' })}) }}


どちらの方法でも無事表示できました。新規で作るページにカテゴリー商品情報を表示することが最終目的で、この方法からできそうな気がして取り組んでおります。ありがとうございました。

umebius
投稿日時: 2017/2/4 22:28
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: カテゴリの一覧、レイアウト管理でのブロック追加と、直接includeの違い
どこからincludeされるのか分からなかったので、説明の簡略化のため
app['eccube.repository.category'].findBy( { Parent : null} , { rank : 'DESC' }) と書きましたが、本来はこの部分はコントローラから渡してやり、twigはシンプルにするのが通常の書き方です。

{% include "Block/main_menu.twig" with { Categories : Categories } %}


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,307名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.