Ric*_*ing 5 php wordpress zend-framework wordpress-theming zend-layout
我编写了一个Zend应用程序,并将Wordpress用于博客.当我第一次安装Wordpress时,我将其主题化,以便它使用与主应用程序相同的标头等.我已经两次重做主题,不得不重做Wordpress主题来匹配.Wordpress有没有办法使用我的Zend布局?我的第一个想法是将我的布局分解为页眉/页脚文件,并使用完整路径从Wordpress中包含它们.虽然它可行,但它远非理想(我宁愿将布局文件保持为一个整体).
对于许多网站,您可能需要安装 Wordpress 来集成博客。当涉及到博客皮肤时,您几乎只能将 Zend_Layout 中的 html 复制到 Wordpress header.php 和 footer.php 文件中。这是重复,如果您对布局进行任何更改,您还需要更新博客主题。嗯,还有另一种方法!
改变您的 Zend 应用程序
为您的 Zend 应用程序创建一个单独的引导文件(例如,遵循本指南:从其他应用程序访问 Zend 应用程序资源)。
<?php
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
Run Code Online (Sandbox Code Playgroud)
在您的 index.php 文件中,运行您的应用程序:
include('bootstrap.php'); //where bootstrap.php is the file of the new bootstrap file
$application->run();
Run Code Online (Sandbox Code Playgroud)
WordPress 魔法
现在Wordpress 的魔力来了。
获取 Zend 布局
在新的 Wordpress 主题文件夹中,创建一个名为“Zend_Layout.php”的文件并将以下代码复制/粘贴到其中:
<?php
//load Zend_Layout
$layout = new Zend_Layout();
//add the blog's stylesheet to the header
$view = $layout->getView();
$view->headLink()->appendStylesheet(get_bloginfo( 'stylesheet_url' ));
// Set a layout script path:
$layout->setLayoutPath(APPLICATION_PATH . "/modules/default/views/scripts");
$layout = $layout->render();
Run Code Online (Sandbox Code Playgroud)
标头
将 header.php 文件更改为:
<?php
include('zend_layout.php');
echo substr($layout, 0, strpos($layout, '<div id="container">'));
?>
<div id="container">
Run Code Online (Sandbox Code Playgroud)
这将从之前的脚本加载 $layout 变量,并将所有内容回显到主容器 div。页脚
footer.php 类似:
</div><!-- #main -->
<?php
include('zend_layout.php');
echo substr($layout, strpos($layout, '<div id="footer">'));
Run Code Online (Sandbox Code Playgroud)