バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kemshim
投稿日時: 2018/5/3 14:38
対応状況: −−−
半人前
登録日: 2018/4/25
居住地:
投稿: 11
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
h_tanaka 様

返信が遅くなって申し訳ありません。

ご教示頂いた方法で実装できました!
懇切丁寧にご指導くださり、誠にありがとうございました。
h_tanaka
投稿日時: 2018/4/27 17:05
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
思うように機能してくれない、というとどのような現象になるのでしょうか?
ますはエラーログやデバッグなどでご自分でお調べくださいませ。


src/Eccube/Controller/TopController.php
の場合ですと、次のようになります。

【変更前】
    public function index(Application $app)
    {
        return $app->render('index.twig');
    }


【変更後】
    public function index(Application $app)
    {
        // WordPress
        require_once 'WordPress/wp-load.php';
        global $post;
        $my_posts = get_posts(array(
            'numberposts' => 5,
            'category' => 1,
        ));
        $ArticleList = array();
        foreach ($my_posts as $post) {
            setup_postdata($post);
            $Article['id'] = get_the_ID();
            $Article['date'] = get_the_date('Y/m/d');
            $Article['url'] = get_the_permalink();
            $Article['category'] = get_the_category();
            $Article['Tags'] = get_the_tags();
            $Article['cat_id'] = $category[0]->cat_ID;
            $Article['cat_name'] = $category[0]->cat_name;
            $Article['title'] = get_the_title();
            $Article['content'] = strip_tags(get_the_content());
            $Article['img'] = null;
            $thumbnail_id = get_post_thumbnail_id();
            if ($thumbnail_id) {
                $eye_img = wp_get_attachment_image_src( $thumbnail_id , 'medium' );
                if ($eye_img) {
                    $Article['img'] = $eye_img[0];
                }
            }
            $ArticleList[] = $Article;
        }

        return $app->render('index.twig', array(
            'ArticleList' => $ArticleList,
        ));
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

kemshim
投稿日時: 2018/4/27 17:01
対応状況: −−−
半人前
登録日: 2018/4/25
居住地:
投稿: 11
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
h_tanaka 様

ありがとうございます。

トップページのスライダー下部に頂いたコードを入れようと思い、

ECCUBE/src/Eccube/Controller/TopController.phpに

        return $app->render('xxxxx.twig', array(
            'ArticleList' => $ArticleList,
        ));


上記コードを入れて、

    {% for Article in ArticleList %}
        <li>
            <span>
                {{ Article.date }}
                {% for Tag in Article.Tags %}
                    <i>{{ Tag.name }}</i>
                {% endfor %}
            </span>
            {{ Article.title }}
        </li>
    {% endfor %}


を挿入しましたが、思うように機能してくれません…
どのような原因が考えられますでしょうか?
何度もすみません。
h_tanaka
投稿日時: 2018/4/27 16:39
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
index.php にはありません。
各 Controller.php にあります。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

kemshim
投稿日時: 2018/4/27 16:30
対応状況: −−−
半人前
登録日: 2018/4/25
居住地:
投稿: 11
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
h_tanaka 様

ご返信ありがとうございます。

すみません、以下のコードの記載場所が分からずどちらに記載すればいいのでしょうか?

        return $app->render('xxxxx.twig', array(
            'ArticleList' => $ArticleList,
        ));
h_tanaka
投稿日時: 2018/4/27 15:26
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
レンダリングエンジンとして、EC-CUBE2系ではSmartyが使用されていますが、3系ではTwigが使用されており、まったくの別物ですので、同じような記述では動作しません。

まずは index.php にて wp-load.php の読み込みがうまくいったのでしたら、 index.php ではWordPressと同じ関数がそのまま使用できます。

        // WordPress
        require_once 'WordPress/wp-load.php';
        global $post;
        $my_posts = get_posts(array(
            'numberposts' => 5,
            'category' => 1,
        ));
        $ArticleList = array();
        foreach ($my_posts as $post) {
            setup_postdata($post);
            $Article['id'] = get_the_ID();
            $Article['date'] = get_the_date('Y/m/d');
            $Article['url'] = get_the_permalink();
            $Article['category'] = get_the_category();
            $Article['Tags'] = get_the_tags();
            $Article['cat_id'] = $category[0]->cat_ID;
            $Article['cat_name'] = $category[0]->cat_name;
            $Article['title'] = get_the_title();
            $Article['content'] = strip_tags(get_the_content());
            $Article['img'] = null;
            $thumbnail_id = get_post_thumbnail_id();
            if ($thumbnail_id) {
                $eye_img = wp_get_attachment_image_src( $thumbnail_id , 'medium' );
                if ($eye_img) {
                    $Article['img'] = $eye_img[0];
                }
            }
            $ArticleList[] = $Article;
        }


これをレンダリングするtwigのパラメーターに渡してやり、
        return $app->render('xxxxx.twig', array(
            'ArticleList' => $ArticleList,
        ));


twig 側では次のような感じで出力できます。

    {% for Article in ArticleList %}
        <li>
            <span>
                {{ Article.date }}
                {% for Tag in Article.Tags %}
                    <i>{{ Tag.name }}</i>
                {% endfor %}
            </span>
            {{ Article.title }}
        </li>
    {% endfor %}


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

kemshim
投稿日時: 2018/4/27 14:55
対応状況: −−−
半人前
登録日: 2018/4/25
居住地:
投稿: 11
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
h_tanaka 様

ご返信ありがとうございます。
お忙しいところ本当に助かります。

ご教示頂いた方法で記述してみました。

今回、以下の記事を参照しております。

WordPressとEC-CUBE3のデータを連携する方法 : https://umebius.com/eccube/wordpress_with_ec-cube3/

参照したこちらの記事に「WPの関数やデータが使用可能になります。」という記載があったので、試しにEC-CUBE/app/template/default/index.twigの任意の場所に

<?php bloginfo('name'); ?>

を記載してみたのですが、動きがありません。

EC-CUBE2系ですが、WPのPHPタグを出力する場合、

<!-- {php} --> // 任意のコード <!-- {/php} -->


もしくは

{php} // 任意のコード {/php}


で囲むような方法が紹介されていましたが、もちろんうまくいきません。

WordPressの関数を利用したい場合は、どのように記載すればよろしいのでしょうか?

よろしくお願いいたします。
h_tanakaさんは書きました:
失礼、index.php からの呼び出しですね。
require_once __DIR__.'/WordPress/wp-load.php';
で、どうでしょうか。
h_tanaka
投稿日時: 2018/4/27 14:24
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
失礼、index.php からの呼び出しですね。
require_once __DIR__.'/WordPress/wp-load.php';
で、どうでしょうか。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2018/4/27 14:20
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
上記のディレクトリ構成でしたら、
require_once 'WordPress/wp-load.php';
でうまく取得できると思いますが、ダメでしょうか?


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

kemshim
投稿日時: 2018/4/27 13:28
対応状況: −−−
半人前
登録日: 2018/4/25
居住地:
投稿: 11
Re: EC-CUBE3系でのWordPressとの連携【EC−CUBEメイン】
468 様

ご返信いただきありがとうございます。
エックスサーバーの自動インストールで行ったのが原因かはわかりませんが、現状のディレクトリ構造は以下のようになっております。

EC-CUBE
┣ app
┣ html
┃ ┣ plugin
┃ ┣ template
┃ ┣ upload
┃ ┣ user_data
┃ ┗ web.config
┣ test
┣ vendor
┣ src
┃ ┗ Controller
┃   ┗ XxxxxController.php
┣ WordPress
┃ ┗ wp-load.php
┣ index.php
┣ index_dev.php
┗ autoload.php

EC-CUBE直下のindex.phpに記載する方法ではダメなのでしょうか?
稚拙な質問で申し訳ありません…。

アドバイスいただきありがとうございます。
WordPressの構築経験はあるので、PHPの知識は多少はあります。
symfony2に関しても入門書を読み進めている状況です。
出来る限りプラグインではない方法で構築したいと考えおります。

よろしくお願いいたします。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,301名です
総投稿数は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.