没事总倒腾主题,全是仅凭兴趣,现在越做越复杂了,突然觉得功能多了也没啥意思,还是内容比较重要。不想搞那么复杂了,把现在的结构整理一下,换一下简单的风格。下面把我现在折腾的主题结构拿出来晒晒太阳,以后估计换个风格,还是喜欢简洁的风格

d

(点击放大)

主题目录结构,现在用的跟上图差不多,主要是学习K2主题和philna2的结构,模块化。

block里面放置主循环,loop都在这里。这样index里用:include_once(xxx)调用。最近发现最新的wp3.0默认主题里面也有这样一个theloop.php,这个优点就是不用在page、single、tag、archive等页面反复写同样的代码;当然,这样做代码本身的复杂程度增加了,多了许多if判断,两相比较难以取舍啊。

app目录里面的是一些折腾的代码,也就是那些所谓的“非插件”xx方法,这些函数全部被include进来,类似插件的形式,好处就是维护方便。随便整个新功能直接放app目录里就好,臃肿的function.php可以轻松下了。其实我觉得非插件也不见得咋样,差别其实不大。相关代码:

<?php

// app dir
define('winysky_app', TEMPLATEPATH.'/app');
IncludeAll( winysky_app );
/**
 * include all PHP script
 * @param string $dir
 * @return unknown_type
 */
function IncludeAll($dir){
	$dir = realpath($dir);
	if($dir){
		$files = scandir($dir);
		sort($files);
		foreach($files as $file){
			if($file == '.' || $file == '..'){
				continue;
			}elseif(preg_match('/\.php$/i', $file)){
				include_once $dir.'/'.$file;
			}
		}
	}
}

admin目录就是后台页面,都是收集整理的一些后台选项,现在觉得自己用完全没意义,还是直接写在主题里比较好。

js目录是所有js代码,都交给根目录下js_home.php和js_single.php两个文件输出,这样做是学philna的方法,头部先用上gzip,把js子目录下需要加载的js全部include成为一个php文件,压缩后在footer输出。合并js可以加快载入速度,但是合并后又不利于维护,所以这样做的好处显而易见,两者兼顾。例如:

<?php
//gizp
if ( extension_loaded('zlib') && !ini_get('zlib.output_compression') && ini_get('output_handler') != 'ob_gzhandler' && ((version_compare(phpversion(), '5.0', '>=') && ob_get_length() == false) || ob_get_length() === false) ) {
	ob_start('ob_gzhandler');
}
header("Cache-Control: max-age=3600, public");
header("Pragma: cache");
header( "Vary: Accept-Encoding" ); // Handle proxies
header('Content-Type: text/javascript; charset: UTF-8');

//include all js
$jsFiles = array('jQuery', 'easing','scrollTo','jquery.lazyload','home');

$jsDir = dirname(__FILE__) . '/js';

foreach ($jsFiles as $file){
	$devfile = $jsDir.'/dev/'.$file.'.js';
	$minfile = $jsDir.'/'.$file.'.js';
	if(file_exists($minfile)){
		include_once $minfile;
	}elseif(file_exists($devfile)){
		include_once $devfile;
	}
}
  1. Carrie (2010.08.06 at 16:34) 25楼

    喔喔,原來是 phina2 的主題架構,那真的很強大,該博主真的把那個主題寫得相當詳細,不過 php 不強的真的看了會很頭暈(譬如我),看來我得好好加強技術知識了~

    phina2 主題的好處就是後續維護便利,因為都已經架構完善模組化了,真是很讚的一個主題,可以作為框架了。

  2. 午夜客 (2010.08.09 at 15:20) 26楼

    这主题太有菜了。

    等哪天不用了扔出来学习一下! :grin:

  3. Dianso (2010.08.12 at 00:10) 27楼

    app目录,这样方便维护,我也用上你的代码了,把功能全放到APP里了 :mrgreen:

    • winy() (2010.08.12 at 00:13)

      @Dianso ,嗯,其实这跟插件没啥区别了,不过自己维护自定义效果更好些

  4. Fanr (2010.08.31 at 21:27) 28楼

    这软件是不是传说的思维导图?

  5. 严重浪漫 (2010.10.05 at 14:51) 29楼

    原来主题是这样做的啊

评论分页: 1 2 3 4

发布评论

邮箱(必填)

换个背景