5

私はZendアプリケーションを作成し、ブログ用にWordpressを含めました。Wordpressを最初にインストールしたとき、メインアプリケーションと同じヘッダーなどを使用するようにテーマを設定しました。それ以来、メインテーマを2回やり直し、それに合わせてWordpressテーマをやり直さなければなりませんでした。Wordpressが私のZendレイアウトを使用する方法はありますか?私の最初の考えは、レイアウトをヘッダー/フッターファイルに分割し、フルパスを使用してWordpressからそれらを含めることです。それは機能しますが、理想からはほど遠いです(レイアウトファイルを1つにまとめたいと思います)。

4

4 に答える 4

0

多くの Web サイトでは、ブログ統合のために 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();

index.php ファイルで、アプリケーションを実行するには:

include('bootstrap.php'); //where bootstrap.php is the file of the new bootstrap file
$application->run();

ワードプレスマジック

次に、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();

ヘッダ

header.php ファイルを次のように変更します。

<?php
include('zend_layout.php');
echo substr($layout, 0, strpos($layout, '<div id="container">'));
?>
    <div id="container">

これにより、前のスクリプトから $layout 変数が読み込まれ、メイン コンテナーの div まですべてがエコーされます。フッター

footer.php も同様です。

    </div><!-- #main -->
<?php

include('zend_layout.php');
echo substr($layout, strpos($layout, '<div id="footer">'));
于 2011-09-08T14:06:47.873 に答える
0

layout.phtml ファイルをヘッダーとフッターのパーシャルに分割しました。

私のWordpressテーマファイルには、パーシャルが含まれています。

より洗練された解決策は、これらのパーシャルを含む独自の get_header/footer 関数を作成することでしょうか? これはテーマの function.php ファイルに入ると思いますか?

于 2011-06-01T11:18:32.443 に答える
0

レイアウト/ビュー スクリプトが使用するページ クラスなどがある場合は、wordpress テーマ ファイルで次のようなことを行うことができます。

$page = new Page;
$page->setTitle(get_the_title());

$content = '';

if (have_posts())
{
   while (have_posts())
   {
       ob_start();
       the_post();
       $content .= ob_get_clean();
   }
}

$page->setContent($content);
...

$view = new Zend_View();
$view->page = $page;
...

Wordpress は、返す代わりに出力する関数を使用することを容易にしないため、ob_start() が使用されます。

これが最善の方法かどうかはわかりませんが、より良い方法があるかどうかを確認したいと思います。

于 2011-05-31T13:09:29.367 に答える