zoukankan      html  css  js  c++  java
  • yii和wp做博客

    第一步,安装yii和wp:


    第二步,创建protected/components/ExceptionHandler.php文件

    <?php
    class ExceptionHandler
    {
        public function __construct()
        {
            define('YII_ENABLE_EXCEPTION_HANDLER',false);
            set_exception_handler(array($this,'handleException'));
        }
    
        public function handleException($exception)
        {
            // disable error capturing to avoid recursive errors
            restore_error_handler();
            restore_exception_handler();
    
            $event=new CExceptionEvent($this,$exception);
            if($exception instanceof CHttpException && $exception->statusCode == 404)
            {
                try
                {
                    Yii::app()->runController("blog/index");
                }
                catch(Exception $e) {}
                // if we throw an exception in WordPress on a 404, we can use
                // our main error handler to handle the error
            }
    
            if(!$event->handled)
            {
                Yii::app()->handleException($exception);
            }
        }
    }
    ?>

    第三步,把wp的目录移到yii中。。修改 yii 的入口文件 /xxx/website/index.php
    这一步使得 yii 程序启动时加载 wordpress 的程序

    <?php

    define('WP_USE_THEMES', true);
    $wp_did_header = true;
    require_once('wordpress/wp-load.php');
     
    require_once(dirname(__FILE__) . '/protected/components/ExceptionHandler.php');
    $router = new ExceptionHandler();

    // change the following paths if necessary
    $yii=dirname(__FILE__).'/../../framework/yii.php';
    $config=dirname(__FILE__).'/protected/config/main.php';

    // remove the following line when in production mode
    // defined('YII_DEBUG') or define('YII_DEBUG',true);

    require_once($yii);
    Yii::createWebApplication($config)->run();

    第四步,在 yii 中运行 wordpress:protected/controllers/SiteController.php
    修改里面的 actionIndex函数为

    $this->layout = false; // note that we disable the layout
    try {
        //spl_autoload_unregister(array('YiiBase', 'autoload'));
        wp();
        require_once( ABSPATH . WPINC . '/template-loader.php' );
        //spl_autoload_register(array('YiiBase', 'autoload'));
    
        Yii::app()->end();
    }
    // if we threw an exception in a WordPress functions.php
    // when we find a 404 header, we could use our main Yii
    // error handler to handle the error, log as desired
    // and then throw the exception on up the chain and
    // let Yii handle things from here
    
    // without the above, WordPress becomes our 404 error
    // handler for the entire Yii app
    catch (Exception $e) {
        throw $e;
    }

    好了,在浏览器中输入你的域名,一个整合在 yii 里的 wordpress 就呈现啦。


    第五步,让 yii 的页面使用 wordpress 的主题:

    如果希望你的网站统一用 wordpress 的主题,同时又想用 yii 来写页面,那么再做下面一个小修改就好了。
    打开/protected/views/layouts/main.php 将里面的内容替换为

    <?php get_header(); ?>
    <div id="primary" class="site-content">
        <div id="content" role="main">
            <?php
                 // echos Yii content
                 echo $content;
            ?>
        </div>
    </div>
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>

    OK,大功告成。当然如果你对 yii 熟悉,这些 controller、layout 什么都可以随便搞。

    转自http://www.shannap.com/yii-integrate-wordpress.html

  • 相关阅读:
    Moo.fx 超级轻量级的 javascript 特效库
    Oracle 异常错误处理
    变被动为主动
    数据结构定义
    Redis 一个keyvalue存储系统 简介
    使用Container.ItemIndex获取Repeater、Gridview行的序号的简单方法
    ORACLE SQL:经典查询练手第一篇
    MongoDB 一个基于分布式文件存储的数据库
    dojo Quick Start/dojo入门手册面向对象,定义Class
    面向过程分析与面向对象分析之间的区别
  • 原文地址:https://www.cnblogs.com/jami918/p/3913858.html
Copyright © 2011-2022 走看看