一直以来,emlog走的轻量级路线,没有集成模板后台设置,于是很多功能强大的模板不得不在需要的时候,修改文件以改变设置。那么,有了这个插件以后,就可以不用如此纠结了,只要模板按照开发规范来开发,就可以使用本插件在后台进行设置了。重点强调,本插件是辅助插件,所有设置依赖于模板的功能,而不是插件本身,因此不要问我为什么没有blabla功能,请去寻求模板作者。
/ D7 a4 d; }$ H+ E$ I0 d
' P) p* z/ x& K9 u7 t插件名称:模板设置
( k8 N% @" v1 a3 Q3 n$ l插件作者:奇遇
7 X, F; O6 M9 E: I下载地址:https://tuyuanma.com/news-1124-1-1
5 W6 z2 e7 d: ~9 B0 P9 @ |9 E o* Z9 v, m/ U
哪些模板支持?
; X4 w. E3 G0 q) c. v 多模板,尤其是CMS模板,会有很多设置项,大多会有一个options.php文件,当你需要修改配置时,就得去修改文件,那么哪些模板才能用上插件的后台设置功能呢?$ w' i! [. ^) p
答案是:按照规范来开发的模板。模板开发者请看下面!
/ D4 f( j& u x6 S* F, d8 |5 {( t" e: w+ {! G2 T5 L" `/ H5 ~8 H' k6 k
如何让模板能被插件识别?" m/ s% C4 a; X3 Q! G$ o
在模板目录里放入options.php,内容格式如下即可,可以任意增加设置项,注意$options变量和注释:- 0 J; m% t9 {6 q# p* P1 r) N& n, ?: g
- <?php
/ G1 U3 p/ p1 b1 w$ z; o* v - /*@support tpl_options*/
& Y. G* @: N2 ^1 O: j - !defined('EMLOG_ROOT') && exit('access deined!');) B c) F; a; l- Z7 _0 r5 z9 r
- $options = array(
/ f7 v6 v B! Y' |3 M! d1 l7 [ - 'sidebar' => array(* ]. g8 T) p3 d
- 'type' => 'radio',) v0 K0 j) N; L3 K
- 'name' => '侧边栏位置',
) G+ ?! H/ Z+ |4 `8 [5 c& b8 x - 'values' => array(
% I5 {. k& E; `2 o4 J - 'left' => '左边',
5 o; P! N$ k. J0 z7 _' {1 r, c" { - 'right' => '右边'# {, l0 n0 s: A5 E
- ),
7 |0 F N3 G: ~! r, S3 u9 I! W - 'default' => 'right',
; p \, z$ ]: \" N' I( t4 C7 N - ),( N% @+ G* W" g* @
- 'sortIcon' => array(
* v0 v+ @: |+ K& M8 J" D& m1 S - 'type' => 'image',/ I* K, h' ^& Q. e; W
- 'name' => '分类图标设置',
) t" r% _* x8 C - 'values' => array(* q. Y; e5 V! b5 ^
- TEMPLATE_URL . 'images/star.png',$ ]4 B! q$ s C
- ),
6 Q# y9 N% w R! g" @ - 'depend' => 'sort',
2 r; Z, K$ C6 \" h' l - 'unsorted' => true,
) N o [- o5 A2 z' Y3 V4 _ - 'description' => '给不同的分类设置不一样的小icon,以20×20为宜',
& P+ n. ^6 p+ q- T - ),% d6 l, F/ h( w$ r7 s- |& c
- );
复制代码 options.php里,每个元素都该写什么?
# A- `2 s- g! | 如上所示,$options数组里,key为设置项的id,而value是一个数组,数组里包含若干个元素。其中type属性和name属性必选,name是设置项名字,而type用来指定设置项的类型,支持的类型如下:- radio: 单选按钮# g3 S( `. V" }) Z
- checkbox: 复选按钮
# Q4 ?4 U3 q$ O3 U; x2 x1 V - text: 文本
7 x) a5 Y" S# R" i; O3 P! J1 A6 q - image: 图片& g0 x& ~/ ?3 O) r2 W' ~( ?
- page: 页面+ s: L4 C( k: m, C" m% K
- sort: 分类# s( E" `& I% C
- tag: 标签
复制代码
3 t e" S2 a: ]8 h- ~. p; j 对于所有类型,default属性用于指定默认值,当没有指定default时,使用values里第一个值,若都没有指定,则会使用奇怪的默认值。! A+ o8 Y" m4 O+ ?" i7 m
对于radio和chexkbox,values属性用来设置各个按钮的值和显示名称。, c' H+ _+ X5 ?5 D9 D9 k7 t. w5 E
除sort外,均可以指定depend为sort,表示该选项可以根据不同的分类设置不同的值,当指定depend为sort时,可选unsorted属性,为true时,表示包括未分类,为false不包括,默认为true。, W6 N" x" ~" J' \" N( D# I7 P! e# x
sort和page可设置multi属性为true,表示多选。
/ l: H- E/ N' j description属性可选,用以描述该选项。( z* ]7 B$ k3 g# {+ Y
若type为text,可设置multi属性为true,表示多行文本,即input和textarea的区别,可选属性rich用以支持富文本,若设置该值,将加载编辑器。2 `5 o2 e/ M2 s) E; D
若type为sort、page或者tag,且设置了多选,默认值将为空,否则将为第一个该类型的值。
* t3 P' ^6 C3 K
3 O% Z0 @; U ]: r1 x模板里如何调用设置项% S) O* ^5 T; r& z* G& O
插件提供简单方法_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文件。
1 B( }4 v, U2 r! u# b( ?) ? |