博客文章增加代码语法加亮的简单方法

在Wordpress官方网站的插件列表中搜索一下,可以发现为Wordpress博客增加代码的语法加亮功能的插件可以说是很多很多,大都是基于一些开源的提供语法加亮功能的JS库(如谷歌代码站点使用的Google prettify和 SyntaxHighlighter等等),不过使用插件的话又会在页面中增加一些CSS和Javascript的加载和Wordpress函数的Hook,会减慢页面的加载速度。其实如果只是偶尔的需要代码加亮功能而且代码长度也不是很长的话,最简单而且又不影响性能的方法就是直接使用加亮后代码的Html源代码复制粘贴到文章中就好了,也不用考虑使用pre或者code标签的问题。

很多开源文本编辑器(如Notepad++和Geany)就都可以支持导出语法加亮的代码为Html格式的功能,而且也可以自己自由的修改不同语言格式加亮的主题(颜色、字体和背景等等),导出后是通过Span标签加入的高亮样式,如果有需要修改的地方也可以自行修改CSS代码。具体的Notepad++是通过“插件”菜单中的NppExport插件就可以直接导出代码成Html文件或者到剪贴板,而Geany也类似是从“工具”菜单->“插件管理器”中的导出插件即可,还可以连行号一起导出成Html文件。

以下是一段导出的加亮代码例子:

  1. <?php
  2. /*
  3.  * load-cron.php
  4.  *
  5.  * Author :admin <[email protected]>
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  20.  * MA 02110-1301, USA.
  21.  *
  22.  *
  23.  */
  24.  
  25. # function to check log directory and create it if necessary
  26. function checkLogDir($path) {
  27.  
  28.     global $log_path;
  29.      
  30.     $log_path = $path . ‘/logs’;
  31.     $htaccess = “Options -Indexes\n . “Deny from all\n;
  32.  
  33.     if ( file_exists($log_path) ) {
  34.    
  35.         # Return true if folder is writable
  36.         if ( is_writable($log_path) ) {
  37.        
  38.             # if not a .htaccess, protect the dir with a .htaccess file
  39.             if ( ! file_exists($log_path . ‘/.htaccess’) ) {
  40.                 file_put_contents($log_path . ‘/.htaccess’, $htaccess);
  41.             }
  42.  
  43.             return true;
  44.         }
  45.        
  46.         # If dir exists but not writable,then nothing else we can do.
  47.         echo ‘Log dir already exists but is NOT writable! Please chmod it to 755!<br />’;
  48.         return false;
  49.    
  50.     } else {
  51.    
  52.           #if no log dir,create it
  53.           if ( is_writable($path) && mkdir($log_path, 0755, true) ) {
  54.            
  55.             # protect the dir with a .htaccess file
  56.             file_put_contents($log_path . ‘/.htaccess’, $htaccess);
  57.            
  58.             # Return true
  59.             return true;
  60.            
  61.         }  else {  
  62.                # mkdir error or upper dir not writable,then return false
  63.                echo ‘Upper dir NOT writable or creating log dir returns error!<br />’;             
  64.                return false;
  65.         }          
  66.    
  67.     }
  68.    
  69. }
  70.  
  71. # set time zone to GMT+8.
  72. date_default_timezone_set(‘Asia/Taipei’);
  73.  
  74. # get current dir location
  75. if ( checkLogDir(dirname(__FILE__)) ) {
  76.  
  77.       # Filename to save as
  78.       $file = $log_path . ‘/’ . date(‘Y-m-d’) . ‘.log’;
  79.    
  80.       if ( false !== ($str = @file_get_contents(‘/proc/loadavg’))) {
  81.        
  82.          $load_array = array_slice(explode(” “, $str), 0 , 4);
  83.          $load_avg = implode(” “, $load_array);
  84.      
  85.         # Line to write    
  86.         if ((intval($load_array[0])) >= 5) {
  87.            $write = $load_avg . ‘ at ‘ . date(‘d/M/Y  H:i:s O’) . ‘ –> High Load!! ‘ . \r\n;
  88.          } else {
  89.            $write = $load_avg . ‘ at ‘ . date(‘d/M/Y  H:i:s O’) . \r\n;
  90.          }
  91.          
  92.          # write to file
  93.         file_put_contents($file, $write, FILE_APPEND);
  94.         echo ‘Successfully write to log file!<br />’;
  95.          
  96.     }
  97.     else {
  98.      echo ‘System file /proc/loadavg is NOT readable, script halt!<br />’;
  99.     }
  100. }
  101.  
  102. ?>     

发表回复

邮箱地址不会被公开。 必填项已用*标注