【问题标题】:Symfony 2 application with Wordpress as CMS使用 Wordpress 作为 CMS 的 Symfony 2 应用程序
【发布时间】:2013-01-18 08:34:53
【问题描述】:

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

我的计划是让路由系统支持一个 sf2 控制器,并让它第一次有机会识别路由并执行它的操作。如果不是,它应该让 WordPress 处理页面的呈现。

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

以前有人做过吗?优点和缺点?关于如何实施的建议? 谢谢!

【问题讨论】:

    标签: wordpress symfony


    【解决方案1】:

    看看这两个从不同角度接近 Symfony-WordPress 集成的项目:

    【讨论】:

      【解决方案2】:

      有一些 Sf2 包可以帮助缩小差距,例如 https://github.com/kayue/KayueWordpressBundle,您可以在其中使用 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: ~
      

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

      【讨论】:

      • 感谢分享!我希望将 WP 集成到我的 symfony 项目中。我喜欢 CMS 的 Wordpress,所以我讨厌使用不太成熟的捆绑包的想法。我一直在看 Kayue 的捆绑包,所以你在之前的项目中所做的这个大纲是对可能发生的事情的一个很好的预览。非常感谢分享!
      【解决方案3】:

      首先,为了将 Wordpress 与 Symfony 2 集成,你必须想出一个“胶水”计划,因为 Wordpress 不遵循 interoperability standards,其次是 Symfony 2 和其他框架来实现这一点易于集成。

      其次,如果您可以查看Symfony CMF,那就太好了,它基本上是一个内容管理框架的实现,让您可以在 Symfony 2 组件之上创建自己的 CMS。

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

      【讨论】:

      • Symfony cmf 不是生产级应用程序,我没有时间等待它。出现这整个问题是因为我使用了 Diem,这是一个很棒的 sf 1 cmf,只是在某个时候死了。这就是为什么我想用已经证明可以生存的东西来管理内容。不过,Drupal 开始听起来是个好主意。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 2011-12-12
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多