一直以来,emlog走的轻量级路线,没有集成模板后台设置,于是很多功能强大的模板不得不在需要的时候,修改文件以改变设置。那么,有了这个插件以后,就可以不用如此纠结了,只要模板按照开发规范来开发,就可以使用本插件在后台进行设置了。重点强调,本插件是辅助插件,所有设置依赖于模板的功能,而不是插件本身,因此不要问我为什么没有blabla功能,请去寻求模板作者。' T+ W' D; ~- Y- L8 z
G. n7 @) x" \# [4 l) o. c5 T _' g插件名称:模板设置& D5 z/ d7 A. }0 \! D% w* s' Y
插件作者:奇遇
% v' U- g8 _; _6 s& i2 D下载地址:https://tuyuanma.com/news-1124-1-1
' [. I/ G D; ^) Y) s# P k' N6 t$ b* t* W; @& `* r
哪些模板支持?
/ _6 x! [2 m1 A4 p 多模板,尤其是CMS模板,会有很多设置项,大多会有一个options.php文件,当你需要修改配置时,就得去修改文件,那么哪些模板才能用上插件的后台设置功能呢?
0 m( S2 Q* ]% ?$ O. t& r答案是:按照规范来开发的模板。模板开发者请看下面!
{3 ~. R7 Y4 t' i: D, |6 |# V& f |" q" a
如何让模板能被插件识别?6 u( R k- A; y/ t9 J, P/ O0 \
在模板目录里放入options.php,内容格式如下即可,可以任意增加设置项,注意$options变量和注释:
, m( z! X9 B4 S- <?php
+ a1 P( G0 g1 J. \ - /*@support tpl_options*/
# u8 d- O& Q; V# h/ q0 m - !defined('EMLOG_ROOT') && exit('access deined!');
9 C2 q5 v0 T1 e7 V - $options = array(
3 \ G [! j- b7 G& ]0 V9 t - 'sidebar' => array(# D. f; P) z5 d
- 'type' => 'radio',
; u4 K) e2 m0 z( [ - 'name' => '侧边栏位置',) y: F' B. w7 o! M% @& @, S
- 'values' => array(- G1 w9 f! Q! t, E. K+ f" U
- 'left' => '左边',
! k8 p& ]. F8 o3 u: z& V9 l- ?5 H - 'right' => '右边'! y3 ~" K+ P. {: a
- ),8 x& E- ?" q f d5 K* ]9 [
- 'default' => 'right',
3 o9 Y- E u4 B- l& g1 W - ),9 z. x. t1 A; Q. k# r3 l) Y; A
- 'sortIcon' => array(0 \5 K, D+ M# e0 L1 ]
- 'type' => 'image',( u3 Q3 w$ T6 u0 I% S# b4 V6 x
- 'name' => '分类图标设置',
5 q) J" y' T. T# Z- {2 N - 'values' => array(
: Q1 Y2 @+ [2 V2 f/ q& F$ b - TEMPLATE_URL . 'images/star.png',- I7 |9 z4 m- Y! s. ]' Z6 x
- ),: |7 n! z( e- P2 \( ?# Y/ G7 z
- 'depend' => 'sort',
' f" x3 L5 O/ F' S7 P - 'unsorted' => true,- n3 e2 s$ y% T( L# h( _. m2 E6 n
- 'description' => '给不同的分类设置不一样的小icon,以20×20为宜',
& `) F& z6 O$ `: i2 f - ),8 b5 v& g: J6 D! R
- );
复制代码 options.php里,每个元素都该写什么?
8 \( K0 }" I( I4 y( Q3 ` 如上所示,$options数组里,key为设置项的id,而value是一个数组,数组里包含若干个元素。其中type属性和name属性必选,name是设置项名字,而type用来指定设置项的类型,支持的类型如下:- radio: 单选按钮
$ {# N. G Z5 a6 j- ^/ G - checkbox: 复选按钮
- @* U, Q2 n' C# K3 ]+ a2 [ - text: 文本$ |% {5 f4 z! y: E" J
- image: 图片2 J* Q" u' S- Q$ D6 c1 A
- page: 页面
% r* U# @# m- `* w8 e - sort: 分类, }! V( s$ U4 {7 x
- tag: 标签
复制代码 / V; T1 S' F7 ~4 v) ~! ]/ m& _
对于所有类型,default属性用于指定默认值,当没有指定default时,使用values里第一个值,若都没有指定,则会使用奇怪的默认值。3 g3 ]' g2 {: w* ~8 B' m5 i
对于radio和chexkbox,values属性用来设置各个按钮的值和显示名称。, w. D, b6 @0 V$ O5 C. o
除sort外,均可以指定depend为sort,表示该选项可以根据不同的分类设置不同的值,当指定depend为sort时,可选unsorted属性,为true时,表示包括未分类,为false不包括,默认为true。 Y" m5 w3 f& A% i: T; x
sort和page可设置multi属性为true,表示多选。
3 O2 W. B! D/ M8 e9 B( {" f* A description属性可选,用以描述该选项。
2 C, p- Q& E1 H$ q* g* V$ g( { 若type为text,可设置multi属性为true,表示多行文本,即input和textarea的区别,可选属性rich用以支持富文本,若设置该值,将加载编辑器。
/ C" E a! l R3 Y4 t% U+ _6 l 若type为sort、page或者tag,且设置了多选,默认值将为空,否则将为第一个该类型的值。$ ]$ @4 |' }/ A m+ M d3 c
/ T$ m& e, U. Q7 r7 o模板里如何调用设置项$ {) |7 t7 B+ m7 U
插件提供简单方法_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文件。
2 Y' @$ V) {$ ^$ U3 q# |9 C5 m |