質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.97%

商品一覧をindex.twigに表示する方法を教えてください。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 2,295

sabamiso

score 12

 やりたいこと

EC-CUBEのトップページで、登録している商品の一覧を表示したい。

 試したこと

デフォルト(app/template/default/Product)にあるlist.twigの{% javascript %},{% block main %}の中身をindex.twigに転記↓

{% extends 'default_frame.twig' %}

{% set body_class = 'front_page' %}

{% block javascript %}
<script>
// 並び順を変更
function fnChangeOrderBy(orderby) {
    eccube.setValue('orderby', orderby);
    eccube.setValue('pageno', 1);
    eccube.submitForm();
}

// 表示件数を変更
function fnChangeDispNumber(dispNumber) {
    eccube.setValue('disp_number', dispNumber);
    eccube.setValue('pageno', 1);
    eccube.submitForm();
}
// 商品表示BOXの高さを揃える
$(window).load(function() {
    $('.product_item').matchHeight();
});

$(function(){
    $('.main_visual').slick({
        dots: true,
        arrows: false,
        autoplay: true,
        speed: 300
    });
});
</script>
{% endblock %}

{% block main %}
 {% if search_form.category_id.vars.errors|length == 0 %}
    <form name="form1" id="form1" method="get" action="?">
        {{ form_widget(search_form) }}
    </form>
    <!-- ▼topicpath▼ -->
    <div id="topicpath" class="row">
        <ol id="list_header_menu">
            <li><a href="{{ url('product_list') }}">全商品</a></li>
            {% if Category is not null %}
                {% for Path in Category.path %}
                    <li><a href="{{ url('product_list') }}?category_id={{ Path.id }}">{{ Path.name }}</a></li>
                {% endfor %}
            {% endif %}
            {% if search_form.vars.value.name %}
            <li>{{ search_form.vars.value.name }}」の検索結果</li>
            {% endif %}
        </ol>
    </div>
    <!-- ▲topicpath▲ -->
    <div id="result_info_box" class="row">
        <form name="page_navi_top" id="page_navi_top" action="?">
            {% if pagination.totalItemCount > 0 %}
                <p id="result_info_box__item_count" class="intro col-sm-6"><strong><span id="productscount">{{ pagination.totalItemCount }}</span></strong>の商品がみつかりました。
                </p>

                <div id="result_info_box__menu_box" class="col-sm-6 no-padding">
                    <ul id="result_info_box__menu" class="pagenumberarea clearfix">
                        <li id="result_info_box__disp_menu">
                            {{ form_widget(disp_number_form, {'id': '', 'attr': {'onchange': "javascript:fnChangeDispNumber(this.value);"}}) }}
                        </li>
                        <li id="result_info_box__order_menu">
                            {{ form_widget(order_by_form, {'id': '', 'attr': {'onchange': "javascript:fnChangeOrderBy(this.value);"}}) }}
                        </li>
                    </ul>
                </div>

                {% for f in disp_number_form.getIterator %}
                    {% if f.vars.name matches '[^plg*]' %}
                        {{ form_label(f) }}
                        {{ form_widget(f) }}
                        {{ form_errors(f) }}
                    {% endif %}
                {% endfor %}

                {% for f in order_by_form.getIterator %}
                    {% if f.vars.name matches '[^plg*]' %}
                        {{ form_label(f) }}
                        {{ form_widget(f) }}
                        {{ form_errors(f) }}
                    {% endif %}
                {% endfor %}
            {% else %}
                <p id="result_info_box__item_count" class="intro col-sm-6"><strong style="display: none;"><span id="productscount">{{ pagination.totalItemCount }}</span></strong>お探しの商品は見つかりませんでした。</p>
            {% endif %}
        </form>
    </div>

    <!-- ▼item_list▼ -->
    <div id="item_list">
        <div class="row no-padding">
            {% for Product in pagination %}
                <div id="result_list_box--{{ Product.id }}" class="col-sm-3 col-xs-6">
                    <div id="result_list__item--{{ Product.id }}" class="product_item">
                        <a href="{{ url('product_detail', {'id': Product.id}) }}">
                            <div id="result_list__image--{{ Product.id }}" class="item_photo">
                                <img src="{{ app.config.image_save_urlpath }}/{{ Product.main_list_image|no_image_product }}">
                            </div>
                            <dl id="result_list__detail--{{ Product.id }}">
                                <dt id="result_list__name--{{ Product.id }}" class="item_name">{{ Product.name }}</dt>
                                {% if Product.description_list %}
                                    <dd id="result_list__description_list--{{ Product.id }}" class="item_comment">{{ Product.description_list|raw|nl2br }}</dd>
                                {% endif %}
                                {% if Product.hasProductClass %}
                                    {% if Product.getPrice02Min == Product.getPrice02Max %}
                                    <dd id="result_list__price02_inc_tax--{{ Product.id }}" class="item_price">
                                        {{ Product.getPrice02IncTaxMin|price }}
                                    </dd>
                                    {% else %}
                                    <dd id="result_list__price02_inc_tax--{{ Product.id }}" class="item_price">
                                        {{ Product.getPrice02IncTaxMin|price }}{{ Product.getPrice02IncTaxMax|price }}
                                    </dd>
                                    {% endif %}
                                {% else %}
                                    <dd id="result_list__price02_inc_tax--{{ Product.id }}" class="item_price">{{ Product.getPrice02IncTaxMin|price }}</dd>
                                {% endif %}
                            </dl>
                        </a>
                    </div>
                </div>
            {% endfor %}
        </div>

    </div>
    <!-- ▲item_list▲ -->
    {% if pagination.totalItemCount > 0 %}
        {% include "pagination.twig" with { 'pages' : pagination.paginationData } %}
    {% endif %}
    {% else %}
        <p class="errormsg text-danger">ご指定のカテゴリは存在しません。</p>
    {% endif %}
{% endblock %}

 結果

トップページにアクセスした際に、システムにエラーが出ました。と表示されました。

商品一覧を表示する方法は、なんでもよいのですが、有識者の方、良ければ教えていただきたいです

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

list.twigのコピーとともに、src/eccube/controller/prodouctcontrollerをtopcontlloerへコピペすると、簡易だが、index.twigに表示される

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

(ページレイアウト)ブロックの機能を使うか、イベントリスナーを使いましょう。

ブロックの利用
イベント

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/28 00:22

    ブロックの利用ということは、独自のブロックを作成→登録して、使うという認識でよろしいでしょうか。
    また、全件の商品情報は「search_form.category_id.vars.errors」で呼び出しいると思っているのですが、認識はあってますでしょうか。

    キャンセル

  • 2018/02/28 00:34

    なんでもいいんじゃないのかい?

    キャンセル

  • 2018/02/28 00:36

    あなたが行ったPHPソース側のカスタマイズもしらんしな

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.97%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る