バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > トップページに商品一覧を出したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nic
投稿日時: 2019/2/6 0:06
対応状況: 確認中
半人前
登録日: 2017/4/17
居住地:
投稿: 17
トップページに商品一覧を出したい
▼テンプレート
[EC-CUBE] 3.0.17
[レンタルサーバ] Xサーバー
[OS] Linux
[PHP] 7.1.18
[データベース] MySQL 5.7.16
[WEBサーバ] Apache
[現象]

・やりたいこと
トップページに商品一覧を出す。ただそれだけ

-------------------------

・試したこと
①「FrontControllerProvider.php」に以下を追加

$c->match('/', '\Eccube\Controller\ProductController::index')->bind('product_list');

商品一覧ページのコントローラをパスを変えて設置

②「TopController.php」を編集
トップコントローラーに、
商品系のコントローラ「ProductController.php」の中身をコピペ
detailメソッドは使わないと思って削除

③「index.twig」を編集
「Product/list.twig」の中身をコピペ

・結果
エラーが発生し、管理者に連絡せよとのこと・・・。
ログを見るもアクセスログだけで、それらしいものは見当たらず

「index.twig」の方を少しいじって、
上部のページナビや検索部分や
下部の「{% if pagination.totalItemCount > 0 %}」部分を消して、
商品出力の「{% for Product in pagination %}」のループ部分だけにしたら
表示だけはできました・・・が
商品がありませんと出ました。

-------------------------

・試したこと その②

だったらと、ブロックを追加

①管理画面からブロックを作成「Block/item_list.twig」
アドミンからDBのフラグもびんびんに立てました

②先ほどと同様に
「FrontControllerProvider.php」に以下を追加

$c->match('/block/item_list', '\Eccube\Controller\Block\Item_ListController::index')->bind('block_item_list');

③今度は新規でコントローラを作成
名称は「Item_ListController.php」
中身は「ProductController.php」を丸コピペ

④ブロックの中身はまたまた
「Product/list.twig」の中身をコピペ

⑤管理画面のレイアウトからブロックを挿入

・結果
今度は何もでない

-------------------------

コントロールの設定に不備があるのでしょうか?
御教授いただければ幸いです。


468
投稿日時: 2019/2/6 13:40
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: トップページに商品一覧を出したい
大まかな流れですが、作業に問題は無いように思えます。
元の記述をコピーされていますので、クラス名が重複していたりするのではないでしょうか?
エラーの原因を調べるのに、
デバッグモードで動かして、エラーを確認されるのが確実かと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

nic
投稿日時: 2019/2/7 19:49
対応状況: −−−
半人前
登録日: 2017/4/17
居住地:
投稿: 17
Re: トップページに商品一覧を出したい
御教授ありがとうございます。
デバックモードで確認したところ、以下のような表示が出ました。

An exception has been thrown during the rendering of a template ("The autoloader expected class "Eccube\Controller\Block\Item_ListController" to be defined in file "/home/XXX/●●.com/public_html/shop/vendor/composer/../../src/Eccube/Controller/Block/Item_ListController.php". The file was found but the class was not in it, the class name or namespace probably has a typo.").


おそらく、「ファイルとの紐づけはされてるけど、クラスがない。クラス名や名前空間が間違ってない?」とのこと。

プロバイダ「FrontControllerProvider.php」で
$c->match('/block/item_list', '\Eccube\Controller\Block\Item_ListController::index')->bind('block_item_list');

指摘された「Item_ListController.php」では、「ProductController.php」に習って
ファイル冒頭の名前空間とクラス名を以下のようにしています。
----------------------------------------------------
namespace Eccube\Controller;

use Eccube\Application;
use Eccube\Common\Constant;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Eccube\Exception\CartException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class Item_ListController
{
private $title;
public function __construct()
{
$this->title = '';
}
public function index(Application $app, Request $request)
{
----------------------------------------------------

クラス名や名前空間はあってるとは思うのですが?
プロバイダ「FrontControllerProvider.php」部分で何か間違いでもあるのでしょうか?


468
投稿日時: 2019/2/7 21:18
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: トップページに商品一覧を出したい
Controller/Blockディレクトリにコントローラークラスを配置されているのであれば、
namespace Eccube\Controller\Block;
という記述になるのではないかと思います。

多分、そこがエラーの原因ではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

nic
投稿日時: 2019/2/8 14:13
対応状況: 解決済
半人前
登録日: 2017/4/17
居住地:
投稿: 17
Re: トップページに商品一覧を出したい
ありがとうございました。
無事、解決しました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.