回复 8uu8 的,
正则表达式只是coding过程中的一点小插曲,大家可以忽略不计。
如果所有的homereplace都是像做login page一样的话,工作的确轻松很多,
但是我觉得导入原有的theme风格的东西才是完美的~
比如原来的theme是这样的
<div id="header"><h1>title</h1><h2>about</h2></div>
<div id="content">content</div>
<div id="sidebar">sidebar</div>
<div id="footer">copyright information here</div>
但是我只是想保留header和footer,但是要除掉content和sidebar两个div.
然后在原来header和footer之间加入一个只有在homepage的时候才会显示的内容,
比如一个google的搜索引擎,比如一个flash的过场动画,比如loginpage(这里的login是嵌入原来模版中的login,而非上面所显示的独立存在的loginpage)
所以这不可避免的就要对原有的theme的index.php进行分析,把html和php的混合的index.php进行xml化以便进行数据和代码的提取。
当然if(have_post())和endif会给我们带来不小的麻烦~(这个已经解决了 -,- 是用echo和eval实现的)
现在是html2xml在处理html里面譬如<a href="<?PHP the_link(); ?>" title="<?PHP the_title();?>">text</a>之类的code时候发生的问题。
html2xml会把这句话转变为 <a href="<?PHP" the_link="" tile="<?PHP" the_title="">text</a> 显然这是我们所不希望的,看了下html2xml的源码,应该要稍稍改动一下regexp就可以修正这个问题。
既然写了这么多,再谈谈php下面的skin问题。
skin就是theme.以前自己写了一个小小的论坛
http://www.feudum.com/feudum/ 未完工
所以对skin方面做了点研究,看了一篇的达人的文章,
他是这么说的,按编写skin的人来分。skin分2两种
一种是给php的程序员看的,一种是给html的美工看的。
wordpress在这里比较偏向于前者,tattertools比较偏向于后者
(
我自己曾经写了一个function去导入tattertools的skin,做了上面的那个论坛,当然skin本身做了一些改动来适应论坛需要
想看一下我论坛skin结构的人可以看这里
http://www.feudum.com/feudum/skin/ ,
也可以参看我以前的老blog
http://www.feudum.com/blog/
老blog所调用的skin
http://www.feudum.com/blog/skin/blogger/
tattertools方面的经验容后详述
)
如果按数据和表现层的关系可以分为这么2种,
一种是由skin去城里里面拉(pull)数据过来,(没有具体研究过wordpress的skin,猜测可能这种)
一种是程序把数据推(push)进skin里面去。(tattertools就是这种)
2种分法,2种形势,各有各的好处。
wordpress源自欧美,标榜自由的php程序员应该不在少数,写一些php的theme应该不在话下。
wordpress的模版大开大合,多为欧美之风。当然近期精美模版蜂蛹而出,不另作详述。
tattertools来自韩国,他们的美工比程序员多很多,所以tattertools的模版多有韩国轻灵之美,这也是为什么我使用tattertools有长达一年多的经验(很不好意思的说,我还有tattertools.com.cn的米)
似乎跑题了~~回到插件和模版的关系上面来吧
wp是用的拉数据的形势,所以理论上来说替换掉整个div的难度非常大,因为程序在收到客户的request以后,include需要的php文件之后实际上是把主导权交给了theme的php文件,而插件是以add_action的模式来工作的,也就是说他是隶属于theme里面php文件的一个function,理论上说theme可以决定他是不是执行插件,但是插件想要替换skin里面的html,甚至php代码,可能性是不存在的。这也是为什么我用die的原因~。
当然不是die就什么事情都解决了,我们还是需要theme里面的一些东西的,比如header的div,比如footer的div。所以我们在die之前,先用php code去读取theme里面的index.php,分析他,利用他。(就是上面的echo和eval的过程)。
(今天就说到这里

~~下课~~)
[
本帖最后由 zhuzhe1983 于 2006-11-23 05:12 PM 编辑 ]