从Yii应用程序中重用header.php

时间:2013-01-07 作者:Pavel Nikolov

我正在建立一个网站,使用Wordpress作为CMS,并使用Yii框架构建。所有业务逻辑都工作正常。大多数可见页面都充满了Wordpress admin的内容,只有用户配置文件部分是用Yii构建的。

我的问题是,我想在Yii应用程序中重用wordpress页面的布局。最初,我尝试在一个空白的PHP文件中执行此操作,使用此代码一切正常:

<?php
require( \'/var/www/wordpress/wp-load.php\' );

get_header();
?>

<div>
some content here
</div>

<?php
get_footer();
?>
问题是,当我在Yii中创建新布局以便重用页眉和页脚时,它会崩溃并显示空白页面。我都试过了require(\'/var/www/wordpress/wp-blog-header.php\');require( \'/var/www/wordpress/wp-load.php\' );.这是我用来在Yii中加载wordpress功能的代码,但不幸的是它不起作用。

<?php /* @var $this Controller */
spl_autoload_unregister(array(\'YiiBase\',\'autoload\'));
require( \'/var/www/wordpress/wp-load.php\' );
get_header();

spl_autoload_register(array(\'YiiBase\', \'autoload\'));

 ?>
我看到的只是一个完全空白的页面(没有标记)。

任何帮助都将不胜感激。理想情况下,我想使用get_header()get_footer() Yii布局/视图中的wordpress功能。

谢谢

UPDATE

我检查了Apache日志,当我尝试在浏览器中打开页面时,似乎记录了以下错误:PHP Fatal error: Call to a member function get() on a non-object in /var/www/wordpress/wp-includes/query.php on line 27当我评论出get_header(); 行页面打开时没有任何错误(也没有任何样式)。所以有些东西阻止了Yii中的get\\u header()to work属性。

2 个回复
SO网友:fuxia

在您的header.php 您可能正在使用wp_title(). 这至少需要两个全局变量:$wpdb (theget_query_var() 电话)和$wp_locale, 论全球的奇异观$post 对象也是。

所以你必须创建这些变量,或者设置wp_title() 在条件中,如下所示:

if ( ! empty ( $GLOBALS[\'wpdb\'] ) )
    wp_title();

SO网友:Pavel Nikolov

我最后添加了require( \'/var/www/wordpress/wp-load.php\' ); 在Yii指数中。初始化代码之前的php文件。然后我就可以在我的项目中使用所有WordPress函数了。这帮助我使用get_header()get_footer() 功能。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register