質問 > フロント機能 > トップページをランディングページとして使いたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yamatanien |
投稿日時: 2019/2/10 22:24
対応状況: −−−
|
新米 登録日: 2019/2/10 居住地: 投稿: 1 |
トップページをランディングページとして使いたい ▼テンプレート
[EC-CUBE] 4.0.0 トップページを、一つの商品を紹介するランディングページのような使い方をしたいと思っています。 試しに「detail.twig」のソースを「index.twig」にコピーしましたが「システムエラーが発生しました。」と表示されます。 それならばと、Aという商品の詳細ページのブラウザ上のソースを「default_frame.twig」にコピーして(index.twigはほぼ空)みましたが、デザインは移植できても、カートに入れるボタンを押すと「カートへの追加に失敗しました。」と表示されてしまいます。 いろいろと検索してはみたのですがトランザクションIDというものが関係してカートに入れるが失敗するのかな?? と思ったのですが、4系での解決策がわかりかねています…。 お手数ではございますが初心者のため、詳しく教えてくださいますと幸いです。 よろしくお願いいたします。 |
468 |
投稿日時: 2019/2/11 12:10
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: トップページをランディングページとして使いたい まず、ECCUBEの仕様として、
商品詳細ページのURLを見ていただくと https://******/products/detail/2 のように「/2」の部分で商品を特定して、DBから情報を取り出し 商品詳細ページを表示しております。 さらにセキュリティの関連でカート投入時に、 DBから取り出し→表示→表示を行ったページからのカート投入かどうかとチェックする仕組みが存在しています。 (<input type="hidden" id="_token" name="_token" value="ランダムな文字列" />の記述がポイントになります) 見知らぬ外部からの攻撃を防ぐ仕組みなのですが、 この仕組みが原因でtwigをコピーするだけでは、商品一覧や商品詳細ページ以外から、 カート投入を行う事が出来ません。 (PHP側の処理も追加する必要があります) /src/Eccube/Controller/ProductController.php 261行目以降の記述を参考に /src/Eccube/Controller/TopController.php function index() に移植されててみては如何でしょうか? ただ商品詳細ページでは商品情報をDBから取得する処理は、アノテーションで指定しているようですので、 トップページではリポジトリクラスを利用して商品情報を取得すれば良いかと思います。 $Product = $this->productRepository->findWithSortedClassCategories($productId←ここには対象の商品IDを指定); あと、TopController.phpにはコンストラクタが記述されていないので ProductController.phpのfunction __construct()を 参考に$this->productRepositoryにProductRepositoryクラスが格納されるように追記する必要があるかと思います。 弊社で、ECCUBE3用にその辺りを簡単に実現できるプラグインをリリースしているのですが、4系版は現在準備中です。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |