如何使用Zend Layout作为Wordpress主题?

Ric*_*ing 5 php wordpress zend-framework wordpress-theming zend-layout

我编写了一个Zend应用程序,并将Wordpress用于博客.当我第一次安装Wordpress时,我将其主题化,以便它使用与主应用程序相同的标头等.我已经两次重做主题,不得不重做Wordpress主题来匹配.Wordpress有没有办法使用我的Zend布局?我的第一个想法是将我的布局分解为页眉/页脚文件,并使用完整路径从Wordpress中包含它们.虽然它可行,但它远非理想(我宁愿将布局文件保持为一个整体).

Ric*_*ing 0

对于许多网站,您可能需要安装 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)