一直以来,emlog走的轻量级路线,没有集成模板后台设置,于是很多功能强大的模板不得不在需要的时候,修改文件以改变设置。那么,有了这个插件以后,就可以不用如此纠结了,只要模板按照开发规范来开发,就可以使用本插件在后台进行设置了。重点强调,本插件是辅助插件,所有设置依赖于模板的功能,而不是插件本身,因此不要问我为什么没有blabla功能,请去寻求模板作者。
2 Y. z6 b/ K- V) D4 Y* h& O" z( O( i$ h
插件名称:模板设置
' {1 h$ F4 C5 S1 P5 q# D插件作者:奇遇
# o* b0 Z* O6 q下载地址:https://tuyuanma.com/news-1124-1-1
5 R. @# z, }8 X7 |& y+ d* u2 [7 ^6 j% x# K* @, m( u
哪些模板支持? w; ~# a7 h) i0 Q; [8 q4 Y9 a. c
多模板,尤其是CMS模板,会有很多设置项,大多会有一个options.php文件,当你需要修改配置时,就得去修改文件,那么哪些模板才能用上插件的后台设置功能呢?3 P& E: f2 e9 @! b y
答案是:按照规范来开发的模板。模板开发者请看下面!
& _( _' r' \* `( x" W0 l$ q, K8 j: ], Y) w) B( x% P/ P
如何让模板能被插件识别?) Q/ n% B$ z8 o% u* @! k
在模板目录里放入options.php,内容格式如下即可,可以任意增加设置项,注意$options变量和注释:
4 o8 j+ G. @# Y8 u5 _- <?php" ^+ d! M6 K; m3 [8 |
- /*@support tpl_options*/1 q8 S0 |/ X. E8 x( Q. v
- !defined('EMLOG_ROOT') && exit('access deined!');$ h; }* ^: q/ }- o/ }
- $options = array(
3 g! p# X8 u8 s0 d - 'sidebar' => array(, V& v: z3 k/ `7 ~- k$ ]3 N: h
- 'type' => 'radio',4 x* U# r1 K+ U' N& }
- 'name' => '侧边栏位置',/ d1 E1 L+ N, _2 f8 |) R
- 'values' => array(
! }( I9 |4 U/ L8 b* V" \: \7 S, c - 'left' => '左边',
9 h: u% v/ @4 e5 h, G - 'right' => '右边'% M* H2 t+ L' r& e* n
- ),/ Y, t6 }+ w# A+ h
- 'default' => 'right',. G; j `. a# H" t, M
- ),7 ~4 Y1 V; [! h6 j
- 'sortIcon' => array(
. ^' i# _$ Y6 y" {: s" k1 Y: A - 'type' => 'image',
% _; F9 b- L# r - 'name' => '分类图标设置',, a7 [9 w3 S5 w6 X7 s, ~
- 'values' => array(
# ^7 M+ I1 A& o) |; K: v0 ~2 | - TEMPLATE_URL . 'images/star.png',
+ d$ ^. ]$ V7 X0 }# L5 H$ P- t - ),8 f3 a M: |: a9 T8 C9 c
- 'depend' => 'sort',
X* g! l# j* D. u - 'unsorted' => true,
4 x( S" `' C2 t/ H" n% ^/ u" q6 u - 'description' => '给不同的分类设置不一样的小icon,以20×20为宜',7 [ }/ \$ r% p; F) M
- ),
2 {. W3 s! W3 ~! o - );
复制代码 options.php里,每个元素都该写什么?
* [( |% M3 L: e9 T% n 如上所示,$options数组里,key为设置项的id,而value是一个数组,数组里包含若干个元素。其中type属性和name属性必选,name是设置项名字,而type用来指定设置项的类型,支持的类型如下:- radio: 单选按钮
( w8 D* k0 [/ @ - checkbox: 复选按钮% G4 P) J- P9 m8 U6 r+ f' d
- text: 文本
4 K$ v# F. e0 a' _9 I2 Y - image: 图片
) O' ^: e% T3 k; Z5 p8 h7 U - page: 页面
' t& ~; ]% t) w+ |( x - sort: 分类3 o* H4 K+ B$ f! h5 n& O( ?2 n9 q
- tag: 标签
复制代码
) X% U( u) A. Z8 T 对于所有类型,default属性用于指定默认值,当没有指定default时,使用values里第一个值,若都没有指定,则会使用奇怪的默认值。
9 I5 M# D5 `7 x+ Z 对于radio和chexkbox,values属性用来设置各个按钮的值和显示名称。
7 @8 @9 W% }$ x0 {7 D( c% X 除sort外,均可以指定depend为sort,表示该选项可以根据不同的分类设置不同的值,当指定depend为sort时,可选unsorted属性,为true时,表示包括未分类,为false不包括,默认为true。
$ h8 K) d* ]4 P+ q sort和page可设置multi属性为true,表示多选。
' K/ h0 v a3 E description属性可选,用以描述该选项。7 | H% p7 l2 d2 P! ~: [6 d- O
若type为text,可设置multi属性为true,表示多行文本,即input和textarea的区别,可选属性rich用以支持富文本,若设置该值,将加载编辑器。' N8 O' \4 h* Q# x& Y
若type为sort、page或者tag,且设置了多选,默认值将为空,否则将为第一个该类型的值。
6 p) `- [6 Z$ [! m7 f- A5 D0 g, |! d- v8 H- i. ?
模板里如何调用设置项" \2 R: H; Y& S" s+ e6 N
插件提供简单方法_g($key),如上示例,可以使用_g('sidebar')来获取侧边栏的设置,取到的值将为0或者1,使用_g('sortIcon')来获取分类icon的全部设置,以分类id为key的数组,使用_g('sortIcon.1')来获取分类id为1(如果存在)的sortIcon。需要注意的是,对于类型为page的,将取到页面id,类型为sort的,将取到分类id,类型为tag的,将取到标签名。 若不传递参数,即使用_g()方法将获取到所有设置项,对于老的模板迁移来的,可以用extract(_g());来代替原来的加载option文件。5 I/ N; p, a" m, E
|