这篇文章上次修改于 2 个月前,可能其部分内容已经发生变化,如有疑问可询问作者。
许久没有写技术博文了,今天比较闲来记录一下最近在折腾的东西。
最近在编写一个 typecho 上的主题,也不能说是编写,因为前端是完全搬运的,只是前端实现后端接口,再加之编写一些实现。算是从别的 CMS 上移植了一套主题,其实开始觉得简单真正做起来并不简单。一是因为 typecho 的文档太少了,官方只提供了基本的 api,其他的你还要自己去深究。第二个是 typecho 功能有限,很多时候需要自己去用另一种方式去实现。
我移植的主题是保罗自行写的一个 CMS 的前端界面,与 typecho 不同,那套 CMS 是包括个人主页,日记页,追番页,音乐页,包括点赞,等等。而 typecho 是没有提供这些方法的。所以我是通过 typecho 的独立页面来实现的。
想法总是简单的,实现确实难的。在独立页面输出文章,不能用 $this->content() 进行输出,因为 $this->content() ,只能输出当前独立页面的内容,后来想到有个获取最近发布的文章的 api,但是可惜文档并没有说得很清楚,网上的 Demo 也只是用这个来获取标题和链接,并解析成 <a> 标签的形式。在一次偶然机会,我发现了这个 api 可以输入到一个变量中,然后进行迭代,就和在 index.php 中的 $this->next() 是一样的。首先你要搞清楚 $this 这个对象里面都什么,在首次开发中用的最多的就是 var_dump($this) 了,经常能在迷途中发现出路。
那么说了这么多,到底该这么用这个接口呢。
以上是把最近发文 10 篇输入到$posts 这个变量中,然后你可以迭代输出你需要的值。这是网上最多的用法,其他的需要自我挖掘。
首先,'pageSize=10' 是可以不要的,这个参数如果不传,这个变量就是在 index.php$this的一部分,迭代他 while ($posts->next()) :,用$posts->title() 就可以输出每篇文章标题,和在 index.php 中的 $this->title() 是一样的,比如 $posts->content();$posts->text();
然后是独立页面,为了做这个主题,我大概用了7 个独立页面,为了把他们联系起来,获取到每个页面用的模板是什么,在对使用哪个模板的独立页面的永久链接获取到,也是深挖了很久。这次是遍历 $this->widget('Widget_Contents_Page_List') ,放入一个变量进行遍历。
这样就可以拿到所有的链接了,随便提一下,stack是个好东西,几乎所有有关页面的信息都存在这个数组中。
最后附上主题链接:

亲亲留个评论再走呗

正在加载评论区...