13

sf2アプリケーションを構築し、国際化(wpmlプラグイン)を使用してWordPressのすべてのコンテンツ(カテゴリ、記事、ページ、メディアなど)を維持したいと思います。アプリには独自の管理者がいて、コンテンツを管理するためにユーザーはWordPressバックエンドにログオンします。

私の計画は、ルーティングシステムによってバックアップされたsf2コントローラーを持ち、ルートを識別してその処理を実行する最初の機会を与えることです。そうでない場合は、WordPressにページのレンダリングを処理させる必要があります。

また、ホームページのようないくつかのsf2ページでWordPressコンテンツをプルする必要があると思います。そこでは、sf2コンテンツと一緒に最新の記事を配置したい場合があります。

誰かがこれまでにこれをしたことがありますか?長所と短所?これを実装する方法についての提案はありますか?ありがとう!

4

3 に答える 3

13

さまざまな角度からSymfonyとWordPressの統合に取り組んでいるこれら2つのプロジェクトを見てください。

于 2013-12-17T15:04:16.920 に答える
6

https://github.com/kayue/KayueWordpressBundleのように、ギャップを少し埋めるのに役立つSf2バンドルがいくつかあります。ここでは、Symfony2エンティティを使用してWordpressデータを取得したり、Wordpressに認証したり、TwigでWordpress関数を使用したりできます。多分あなたはそれで働くことができます。

私は最近のプロジェクトでこれを行いました、そしてそれは本当にうまくいきました。

これを機能させるには、2つの別個のデータベースと2つのエンティティマネージャー(1つはsf2アプリケーション用、もう1つはWordpress用)が必要です。動的ページを処理する側。

これが私の設定の例です:

//app/config.yml
doctrine:
dbal:
    default_connection:   default
    connections:
        default:
            driver:   "%database_driver%"
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   "%database_name%"
            user:     "%database_user%"
            password: "%database_password%"
            charset:  UTF8
        cms:
            driver:   "%database_driver_cms%"
            host:     "%database_host_cms%"
            port:     "%database_port_cms%"
            dbname:   "%database_name_cms%"
            user:     "%database_user_cms%"
            password: "%database_password_cms%"
            charset:  UTF8

orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager:   default
    entity_managers:
        default:
            connection:       default
            mappings:
                MyFirstBundle: ~
                MySecondBundle: ~ #if you have more than one bundle in your application
        cms:
            connection:       cms
            mappings:
                KayueWordpressBundle: ~

そして、KayueWordpressBundleの構成:

//app/config.yml
kayue_wordpress:
# Site URL must match *EXACTLY* with WordPress's setting. Can be found
# on the Settings > General screen, there are field named "WordPress Address"
site_url:       %blog_url% 

#Note : I put the site_url in my parameters.yml to get this working on all my environments (see comment below) 

# Logged in key and salt. Can be found in the wp-config.php file.
logged_in_key:  'samethingasinyourwpconfig'
logged_in_salt: 'samethingasinyourwpconfig'

# Optional: WordPress cookie path / domain settings.
cookie_path:    '/'
cookie_domain:  null

# Optional: Custom table prefix. Default is "wp_".
table_prefix:   'wp_'

# Optional: Entity manager configuration to use (cache etc). Default is 'default'.
entity_manager: 'cms' #here is where i put the name of my new entity manager defined above

KayueWordpressBundleを使用すると、「cms」エンティティマネージャーを使用してWordpressのすべての要素にアクセスできるようになります。Wordpressメニューを使用して、アプリケーションメニューに追加された新しいページを動的に統合することができました。また、curlを使用してWordpressで同じヘッダーとフッターを維持することができたため、全体が実質的にシームレスでした。

実用面:

プロジェクトのルートディレクトリにあるファイルにWordpressをインストールしました。これは、Gitを一緒に使用したり、Capifonyなどを使用してデプロイしたりできることを意味します。

デザイン、プラグインなどは、ローカル環境で追加/編集してから、Capifonyでデプロイする前にGitリポジトリにプッシュする必要があることに注意してください。ただし、ワードプレスの動的コンテンツ(ページ、記事)はデータベースに依存しているため、最終的なコンテンツは本番環境でのみ作成する必要があります。

于 2013-09-10T08:41:25.293 に答える
2

まず、WordpressをSymfony 2と統合するには、Wordpressが相互運用性標準に準拠していないため、「接着」計画を立てる必要があります。次に、Symfony2やその他のフレームワークを使用してこのレベルの簡単な統合を実現します。 。

第二に、 Symfony CMFをチェックしていただければ幸いです。これは、基本的に、Symfony2コンポーネントの上に独自のCMSを作成できるコンテンツ管理フレームワークの実装です。

3番目で最後のポイントは、達成しようとしているこの統合はあまり意味がないということです。着信リクエストを処理するためにWordpressの上に単純なレイヤーが必要な要件の最初の部分は、Wordpressのフロントコントローラーコードを簡単にハックすることで解決できます。

于 2013-01-18T13:23:41.337 に答える