没事总倒腾主题,全是仅凭兴趣,现在越做越复杂了,突然觉得功能多了也没啥意思,还是内容比较重要。不想搞那么复杂了,把现在的结构整理一下,换一下简单的风格。下面把我现在折腾的主题结构拿出来晒晒太阳,以后估计换个风格,还是喜欢简洁的风格
(点击放大)
主题目录结构,现在用的跟上图差不多,主要是学习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; } }
喔喔,原來是 phina2 的主題架構,那真的很強大,該博主真的把那個主題寫得相當詳細,不過 php 不強的真的看了會很頭暈(譬如我),看來我得好好加強技術知識了~
phina2 主題的好處就是後續維護便利,因為都已經架構完善模組化了,真是很讚的一個主題,可以作為框架了。
这主题太有菜了。
等哪天不用了扔出来学习一下!
app目录,这样方便维护,我也用上你的代码了,把功能全放到APP里了
@Dianso ,嗯,其实这跟插件没啥区别了,不过自己维护自定义效果更好些
这软件是不是传说的思维导图?
@Fanr ,是的,freemind做的
原来主题是这样做的啊
目前还没有trackbacks.