自由學習的風

幽夢影 張潮 少年讀書,如隙中窺月;中年讀書,如庭中望月;老年讀書,如臺上玩月。皆以閱歷之淺深,為所得之淺深耳。

[轉][CodeIgniter] 利用 hook 來處理全部的輸出

2017年9月17日 星期日

參考 http://lzzpnk.blogspot.tw/2012/06/codeigniter-hook-alt.html

1. 在 ./application/config/config.php
 $config['enable_hooks'] = TRUE;


2. ./application/config/hooks.php 設定執行的程式
$hook['display_override'][] = array(
        'class'    => '',
        'function' => 'images_auto_set_alt',
        'filename' => 'output.php',
        'filepath' => 'hooks',
        'params'   => array( 'output_display' => TRUE )
    );​ 
3. ./application/hook/output.php
/**
     * 將輸出的 圖片(<img>) 進行處理;自動配置 alt 屬性。
     *
     * @param array   $setting=array() 設定
     *                $setting['output_display'] => 是否直接輸出給瀏覽器。FALSE代表不直接輸出,僅回存至buffer。
     * @return NULL                    不會回傳東西。
     */
    function images_auto_set_alt( $setting=array() ) {
        $CI =& get_instance();
        $CI->load->library( 'simple_html_dom' ); // require_once APPPATH . 'libraries/simple_html_dom.php';
        $buffer = $CI->output->get_output();
        $DOM = str_get_html( $buffer );
        foreach ( $DOM->find( 'img' ) as $key => $img ) {
            if ( empty( $img->alt ) && ! strpos( $img->alt, $CI->config->item( 'site_name' ) ) ) {
                $img->alt = $CI->config->item( 'site_name' );
            }
            else {
                $img->alt .= ' - ' . $CI->config->item( 'site_name' );
            }
        }
        $CI->output->set_output( $DOM->save() );
        if ( $setting['output_display'] ) {
            $CI->output->_display();
        }
    } 

0 意見:

張貼留言