以Wordpress作为CMS的Symfony 2应用程序

以Wordpress作为CMS的Symfony 2应用程序,wordpress,symfony,Wordpress,Symfony,我想用国际化(wpml插件)在WordPress中构建一个sf2应用程序并维护所有内容(类别、文章、页面、媒体等)。该应用程序将有自己的管理员和管理的内容,用户将登录到WordPress后端 我的计划是让路由系统备份一个sf2控制器,让它第一次有机会识别路由并完成它的任务。如果没有,那么应该让WordPress处理页面的呈现 我还认为我需要在一些sf2页面(如主页)中提取WordPress内容,在那里我可能希望将最新文章与sf2内容放在一起 以前有人这样做过吗?利与弊?关于如何实施的建议? 谢谢

我想用国际化(wpml插件)在WordPress中构建一个sf2应用程序并维护所有内容(类别、文章、页面、媒体等)。该应用程序将有自己的管理员和管理的内容,用户将登录到WordPress后端

我的计划是让路由系统备份一个sf2控制器,让它第一次有机会识别路由并完成它的任务。如果没有,那么应该让WordPress处理页面的呈现

我还认为我需要在一些sf2页面(如主页)中提取WordPress内容,在那里我可能希望将最新文章与sf2内容放在一起

以前有人这样做过吗?利与弊?关于如何实施的建议?
谢谢

首先,为了将Wordpress与Symfony 2集成,您必须提出一个“粘合”计划,因为Wordpress不遵循,其次是Symfony 2和其他框架,以实现此级别的轻松集成

其次,如果您可以查看,这将非常棒,它基本上是一个内容管理框架的实现,允许您在Symfony 2组件的基础上创建自己的CMS


第三点也是最后一点是,您试图实现的这种集成没有多大意义。您需求的第一部分,即您需要在Wordpress之上有一个简单的层来处理传入的请求,可以通过对Wordpress前端控制器代码的简单破解来解决。

有一些Sf2捆绑包可以帮助缩小差距,比如您可以使用Symfony2实体来获取Wordpress数据,在Wordpress中进行身份验证,在Twig中使用Wordpress函数之类的东西。也许你可以这样做

我在最近的一个项目中做到了这一点,效果非常好

为了实现这一点,您需要有两个独立的数据库和两个实体管理器(一个用于sf2应用程序,一个用于Wordpress)——至少这是我最擅长的工作方式,一边是一个真正的sf2应用程序,一边是使用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: ~
//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配置:

//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: ~
//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存储库。但是,wordpress(页面、文章)的动态内容取决于您的数据库,因此最终内容应仅在您的生产环境中编写。

请从不同角度查看这两个正在接近Symfony wordpress集成的项目:

  • 提供在WordPress中使用Symfony组件和服务的方法
  • 提供将WordPress core加载到Symfony应用程序的方法(披露:我是主要作者)

Symfony cmf不是生产级应用程序,我没有时间等待。整个问题之所以出现,是因为我使用了Diem,一种伟大的sf 1 cmf,它在某个时候刚刚死亡。这就是为什么我想用已经证明可以生存的东西来管理内容。Drupal开始听起来是个不错的主意。谢谢分享!我希望将WP集成到我的symfony项目中。我喜欢Wordpress的CMS,所以我讨厌使用不太成熟的捆绑包。我一直在看Kayue的捆绑包,所以这个关于你在上一个项目中所做工作的概要是一个很好的预览。非常感谢分享!