顯示具有 php 標籤的文章。 顯示所有文章
顯示具有 php 標籤的文章。 顯示所有文章

2012年8月13日 星期一

解決 Codeigniter-Smarty 與 Discuz X 2.5 相衝突的問題.


origin: https://github.com/QueenbyeR/blog-text/blob/master/%E8%A7%A3%E6%B1%BA%20Codeigniter-Smarty%20%E8%88%87%20Discuz%20X%202.5%20%E7%9B%B8%E8%A1%9D%E7%AA%81%E7%9A%84%E5%95%8F%E9%A1%8C/page-001.md


目錄環境

  • PHP 5.4
  • Apache 2.2
  • CodeIgniter 2.1.2
  • CodeIgniter-Smarty
  • Discuz X2.5 (2012年4月7日繁體中文UTF8)
  • CodeIgniter 在 /
  • Discuz 在 /bbs/ (程式碼會因路徑而稍微有所不同)

問題

使用 Smarty 時,在各別樣版首次執行時,\smarty_compile_dir 內若無已存在的樣版的話,會造成以下錯誤:
Discuz! System Error
Oops! System file lost: class/smarty/smarty_internal_templatecompilerbase.php

解決

打開 \www\bbs\source\class\class_core.php
找到 throw new Exception('Oops! System file lost: '.$filename);
在前一行加入
    if ( ! strpos($_SERVER['REQUEST_URI'], 'bbs') ) return true;

2012年6月22日 星期五

為 CodeIgniter 掛載 hook 將網頁所有 img tag 自動補足 alt 屬性

此操作引用了 simple_html_dom 類庫。

本 hook 將可以為 CI 中,所有輸出的網頁裡的 <img> 自動作補足 alt 屬性的操作,提升 SEO 效果。例如原始 view 中的程式碼為:
    <div class="img_slide">
        <img src="a1.png" alt="第一章">
        <img src="a2.png" alt="">
        <img src="a3.png" alt="呵呵">
        <img src="a4.png" alt="第四章 - 你的網站名稱">
    </div>
透過此 hook 後,用戶及搜尋引擎將會在瀏覽器中見到如下:
    <div class="img_slide">
        <img src="a1.png" alt="第一章 - 你的網站名稱">
        <img src="a2.png" alt="你的網站名稱">
        <img src="a3.png" alt="呵呵 - 你的網站名稱">
        <img src="a4.png" alt="第四章 - 你的網站名稱">
    </div>

1.
打開檔案:
    \application\config\config.php
搜尋:
    $config['enable_hooks']
確保它為:
    $config['enable_hooks'TRUE;


2.
打開檔案:
    \application\config\hooks.php
任意空白處插入程式碼:
    // 處理<img>缺省alt=""
    $hook['display_override'][array(
        'class'    => '',
        'function' => 'images_auto_set_alt',
        'filename' => 'output.php',
        'filepath' => 'hooks',
        'params'   => array'output_display' => TRUE )
    );


3.
新增檔案: \application\hooks\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();
        }
    }


4.
完成!

2012年5月2日 星期三

使用 sublime text 2 來即時驗證 php 與 javascript 的語法正確性

安裝 SublimeLinter
https://github.com/Kronuz/SublimeLinter


安裝完成後
開啟 Setting - User

加入
"sublimelinter_executable_map":
{
    "php""F:\\xampp\\php\\php.exe",
    "javascript""C:\\Program Files (x86)\\nodejs\\node.exe"
},
"sublimelinter_popup_errors_on_save"true

註: 不知為何我在環境變數下加了path,仍無法使用相對路徑



存檔

開個 js 檔來亂打一通,馬上就會看到效果。

註: 如無效果,重開 sublime text 2 試試看...