从 Typecho 自定义字段的调用代码看去
千呼万唤,Typecho 的“自定义字段”功能终于在 0.9 中出来了。然而,多数人还蒙在这样一个鼓里——该怎么在模板调用已经设置好的自定义字段呢?让我们从这里开始说下去:
Typecho 文档真残缺
在这里我必须吐槽 Typecho 文档的残缺。当我想得到在模板中调用自定义字段的代码时,我在文档中搜索“自定义字段”,果然得到了一个页面——“自定义字段使用”!然而当我点击去时,什么也没有,源代码里也看不到什么东西。这是让我们自己从 Typecho 程序源代码里查看调用方式的节奏么?
看起来我们不应该把 Typecho 的文档看得那么重要。
代码是多么简洁
还好,除了上面一个方法外,我还可以从一些已经用到这功能的模板中寻找相关代码。等等,为什么不在论坛里搜搜看呢?即便那论坛的搜索也很烂!最终,我成功得到了以下内容(在这儿)
首先,你得在写文章的时候输入创建一个自定义字段,然后在模板里像以下这样输出该字段。
<?php if (isset($this->fields->fieldName)): ?><?php $this->fields->fieldName(); ?><?php endif; ?>
让我们抛弃刚刚的情绪,看看这如诗的代码吧。一个对 PHP 有点基础、会揣摩的人都会读得懂这是什么意思:当某个自定义字段被定义好时,就输出它!但我们能不能更深入地去了解一下这行代码呢?当然能!
首先我们看到,这里在条件语句中运用了一个 isset 函数。没错,这增加了代码的容错性,使其更严谨。但是你若是对这个函数有进一步的思考的话,你会发现 isset() 是用于且只能用于变量的,而变量就是用那个括号括起来的;由此我们可以得到结论,$this->fields->fieldName 是可以看作变量的,也就是说它可以用来赋值给别的变量的。而后面接着带括弧的那个 $this->fields->fieldName(); 则用来直接输出自定义字段的值,相当于 echo $this->fields->fieldName;。
那整行代码真的没什么能挑剔的地方,还显得优美。唯一的不足可能是,有同学不知道该在哪儿对应上自定义字段的名称;但是英语好或者大胆的同学用字段名替换 fieldName 试试后,就会享受到成功的喜悦了。
带括弧与不带括弧
有没有发现一个问题?像 $this->fields->fieldName() 这样一行直接输出内容的“函数”,去掉括弧后,就成了一个“变量”!我们可以假设其他具有相同形式的代码也遵循这个结论。当我们用 $this->options->title()、$this->author->permalink() 等代码测试后,发现结果和我们的假设符合得很好。
于是我们得到 Typecho 模板制作中的一个新技巧了!
结束语
正文内容就这样结束啦,这篇文章主要面向的是初学者,我希望能借以促进他们探索精神、观察能力和举一反三思维的培养(虽然我不一定也具有),所以高手们勿喷啦。
原文地址:http://shansing.com/read/331/
从 Typecho 自定义字段的调用代码看去的更多相关文章
- 帝国cms栏目自定义字段首页调用
例如:增加栏目自定义字段:chushi_bpic 用下面的灵动标签和调用: [e:loop={"select C.classid,C.classname,C.classimg,D.chush ...
- dedecms搜索模板,使用{dede:list}标签调用自定义字段不显示(空白)
前几天使用织梦做一个搜索功能,正常使用{dede:list}调用自定义内容模型中的自定义字段,代码如下:(自定义字段的调用可以参考:http://www.dede58.com/a/dedejq/523 ...
- phpcms v9调用自定义字段的方法步骤
代码如下:{loop $shigongtu $r}<img src="{$r[url]} " title="测试"/>{/loop} 2 首页,分页 ...
- [v9] 列表页 调用 正文内容 或 自定义 字段(moreinfo的调用方法)
"才能使用的字段) id content readpoint groupids_view paginationtype maxcharperpage template paytype all ...
- phpcms如何使用推荐位调用自定义字段
默认phpcms是无法使用推荐位调用自定义字段的 一般自定义字段默认添加在附表里(也可以添加在主表里),调用自定义字段时 加上moreinfo="1" 直接写{pc:content ...
- advancedsearch.php织梦高级自定义模型字段无法调用解决方案
advancedsearch.php织梦dedecms 高级自定义模型字段无法调用解决方案 ,具体步骤如下: 1 打开修改puls/advancedsearch.php文件,找到复制代码(不同版本可 ...
- 帝国cms调用栏目自定义字段(栏目简介)如何操作
开源的cms就像一个操作系统,可以满足大部分人的需求,如果你想增加一些特殊的功能,那就二次开发呗,就像APP一样.帝国cms默认的栏目是没有调用栏目自定义字段的,我们可以增加一些概述类的文字,让读者对 ...
- DedeCMS搜索结果页面调用自定义字段的方法
有时候在我们需要在dedecms的搜索结果页面调用自定义字段,尤其是在做下载站的时候,需要在搜索结果页调用软件大小以及软件等级等等,但是我们发现在搜索结果页模板中使用“[field:字段名]”标签无法 ...
- phpcms_v9 多图字段 内容页,首页,分页自定义字段调用
phpcms_v9 多图字段 内容页,首页,分页自定义字段调用 说明:自定义多图字段名 shigongtu 1 内容页调用 {loop $shigongtu $r} <img src= ...
随机推荐
- 安卓Design包之TabLayout控件的使用
转自: 安卓Design包之TabLayout控件的简单使用 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的Android ...
- coherence配置说明
经过上篇 coherence初识 ,最近算是和coherence杠上了,针对coherence3.5.3这个版本,把学到的东西整理下 1. 这个jar包有点大,4M多,首先打开coherence.ja ...
- MySQL多实例配置
实验环境:RHEL6.4为最小化安装,mysql安装包为通用二进制安装包,版本为mysql-5.6.26 创建mysql用户 #useradd –M –s /sbin/nologin mysql #y ...
- 【模拟】UVa 12108 - Extraordinarily Tired Students
When a student is too tired, he can't help sleeping in class, even if his favorite teacher is right ...
- freeCodeCamp:GO BYBY GO!
千里之行,始于足下. 今天是2016年10月26日, 写前端代码有一年多了, 渐渐找到了一些方向, 知道该往哪里努力, 也慢慢开始总结自己的工作和学习. 希望在这里记录下的点点滴滴, 成为我日后学习的 ...
- JSP之初识
JSP是“java server pages”的缩写,java是一种编程语言,jsp只是相当于java里面的servlet部分,所以JSP技术是以Java语言作为脚本语言的. JSP这门技术的最大的特 ...
- OpenMP多线程linux下的使用,简单化
http://hi.baidu.com/diwulechao/item/bc6d865c411b813c32e0a932 http://www.cnblogs.com/yangyangcv/archi ...
- javascript 实现图片预览(未上传到服务器端)
1,图片预览 越来越多的浏览器为了安全,都不能获得文件的,全路径,实现图片预览实现起来有点麻烦.有人选择复制图片到服务器的某个路径下,然后从服务器端找到路径,实现预览.但这不是最佳实现方案,如果用户一 ...
- javascript笔记——点击按钮(或超链接)如何跳转到另外一个页面并执行目标页面的js函数
页面跳转同时执行js代码$(function(){});url参数传递 标题的前半部分其实不必赘述,按钮也可以换成超链接.. 假设是需要在A页面上的一个按钮,点击后跳转到B页面,传一些参数后且并B页面 ...
- CodeForces 679B(Bear and Tower of Cubes)
题意:Limak要垒一座由立方体垒成的塔.现有无穷多个不同棱长(a>=1)的立方体.要求:1.塔的体积为X(X<=m).2.在小于X的前提下,每次都选体积最大的砖块.3.在砖块数最多的前提 ...