系统函数
最后更新于:2022-04-01 02:04:29
[TOC]
##获取栏目相关信息:getCategory
| 参数 | 说明 |
| -- | -- |
| $catid | 栏目id,只支持单个,数值类型,必填 |
| $field | 需要返回的栏目字段,例如;catname,如果为空,将以数组的形式返回全部参数。 |
| $newCache | 是否使用缓存,默认false,布尔值 |
##获取模型数据:getModel
| 参数 | 说明 |
| -- | -- |
| $modelid | 模型ID,必填项|
| $field | 需要返回的模型字段,例如:tablename,如果为空,将以数组的形式返回全部参数。 |
##生成缩略图:thumb
| 参数 | 说明 |
| -- | -- |
| $imgurl | 图片地址 |
| $width | 缩略图宽度,默认100 |
| $height | 缩略图高度,默认100 |
| $thumbType | 缩略图生成方式 1 按设置大小截取 0 按原图等比例缩略,默认0 |
| $smallpic | 图片不存在时显示默认图片,默认nopic.gif |
`注意:图片路径要正确,必须是站内图片! `
> 模板中用法: {:thumb('/statics/images/rss.png')}
##字符截取:str_cut
| 参数 | 说明 |
| -- | -- |
| $string | 需要截取的字符串 |
| $length | 长度 |
| $dot | 当长度超出时显示的字符,默认 ... |
> 模板中用法: {$vo.title|str_cut=###,100} 或者 {:str_cut($vo['title'],100)}
##获取点击数:hits
| 参数 | 说明 |
| -- | -- |
| $catid | 栏目ID |
| $id | 信息ID |
> 模板中用法:{:hits($catid,$id)} 或者 {:hits(2,255)}
##标题链接获取:titleurl
| 参数 | 说明 |
| -- | -- |
| $catid | 栏目ID |
| $id | 信息ID |
##获取文章评论总数:commcount
| 参数 | 说明 |
| -- | -- |
| $catid | 栏目ID |
| $id | 信息ID |
> 模板中用法:{:commcount($catid,$id)} 或者 {:commcount(2,255)}
##生成标题样式:title_style
| 参数 | 说明 |
| -- | -- |
| $style | 样式,通常时字段style,以“;”隔开,第一个是文字颜色,第二个是否加粗 |
| $html | 是否显示完整的STYLE样式代码 |
> 模板中用法:{:title_style($style)} 或者 {:title_style("#ff0000;bold")}
附录
最后更新于:2022-04-01 02:04:26
blockcache区块缓存标签
最后更新于:2022-04-01 02:04:24
**blockcache区块缓存标签**
区块缓存标签
标签:`<blockcache></blockcache>`
作用:把一个区域(区块)的数据缓存。
用法示例:`<blockcache cache="3600"></blockcache>`
##参数说明
| 参数 | 说明 |
| -- | -- |
| @cache | 缓存时间,单位秒,默认300秒 |
##使用示例
> 场景:有时我们需要使用很复杂的SQL查询,比较费时,为了达到效果,又不得不这样做的时候。
~~~
<blockcache cache="3600">
这里执行了一些比较耗时的查询操作。放在blockcache标签里,对结果进行全部缓存。
</blockcache>
~~~
> 提示:`该标签适合动态访问时使用,静态页面无需使用该标签!`
next下一篇标签
最后更新于:2022-04-01 02:04:22
**next下一篇标签**
使用方法:`<next catid="$catid" id="$id" target="1" msg="已经没有了" />`
##参数说明
| 参数 | 说明 |
| -- | -- |
| @catid | 栏目id,可以传入数字,在内容页可以不传 |
|@id|信息id,可以传入数字,在内容页可以不传|
|@target|是否新窗口打开,1 是 0否|
|@msg|当没有上一篇时的提示语|
|@field|返回指定字段内容,只支持 id,title,url|
##使用示例
~~~
<next catid="$catid" id="$id" field="url" />
~~~
pre上一篇标签
最后更新于:2022-04-01 02:04:19
**pre上一篇标签**
获取上一篇标签:
使用方法:`<pre catid="$catid" id="$id" target="1" msg="已经没有了" />`
##参数说明
| 参数 | 说明 |
| -- | -- |
| @catid | 栏目id,可以传入数字,在内容页可以不传 |
|@id|信息id,可以传入数字,在内容页可以不传|
|@target|是否新窗口打开,1 是 0否|
|@msg|当没有上一篇时的提示语|
|@field|返回指定字段内容,只支持 id,title,url|
##使用示例
~~~
<pre catid="$catid" id="$id" field="url" />
~~~
navigate导航标签
最后更新于:2022-04-01 02:04:17
**navigate导航标签**
标签:`<navigate/>`
作用:获取内容模型当前位置
用法示例:`<navigate catid="$catid" space=" > " />`
##参数说明
| 参数 | 说明 |
| -- | -- |
| @catid | 栏目id,可以传入数字,也可以传递变量 $catid |
|@space|分隔符,支持html代码(不支持“`>`”,“`<`”等特殊符号)|
|@blank|是否新窗口打开|
|@cache|缓存时间|
导航标签用法很简单,唯一需要注意的就是,在space参数传递过程中,不能出现“`<`”,“`>`”这样的字符,不然会导致出问题!
> 可以使用html实体代替!
##用法示例
~~~
在内容页,栏目页可以直接这样使用:
<navigate catid="$catid" space=" > " />
在没有$catid参数的页面,需要手动传入栏目ID
<navigate catid="8" space=" > " />
~~~
template模板引入标签
最后更新于:2022-04-01 02:04:15
**template模板引入标签**
标签:`<template/>`
作用:引入其他模板
用法示例:`<template file="Member/footer.php"/>`
[TOC]
##参数说明
| 参数 | 说明 |
| -- | -- |
| @file | 表示需要应用的模板路径。(这里需要说明的是,只能引入当前主题下的模板文件)(`必填`) |
##用法示例
~~~
假设主题:Default
<template file="Content/header.php"/>
~~~
> 这个示例是最简单的,引入header.php这个模板!
##注意事项
> 首先,ShuipFCMS前台模板结构是 主题/各个模块目录/具体的模板页面 这种结构!template标签只能`当前主题`下的任何模板。所以Content/header.php 表示的就是 `Default`主题下`Content`目录下的`header.php`模板!
`如果你真的很想很想引入其他主题下模板,可以使用下面的方法:`
include 标签,该标签可以引入任何模板文件
具体用法:`<include file="完整模板文件名" />`
用法示例:
~~~
<include file="./shuipf/Template/Default/Content/header.php" />
~~~
> 需要注意的地方是,file中的地址是以网站根目录下开始的,不要搞错拉!
get数据获取标签
最后更新于:2022-04-01 02:04:13
**get标签**
标签:`<get></get>`
作用:特殊标签,SQL查询标签
用法示例A:`<get sql="SELECT * FROM shuipfcms_article WHERE status=99 ORDER BY inputtime DESC" page="$page" num="5"> .. HTML ..</get>`
用法示例B:`<get table="article" status="99" order="inputtime DESC" where="其它where部分条件" page="$page" num="5">.. HTML ..</get>`
[TOC]
##参数说明
| 参数 | 说明 |
| -- | -- |
| @sql | SQL语句,强烈建议只用于`select`类型语句,其他SQL有严重安全威胁,同时不建议直接在SQL语句中使用外部变量,如`:$_GET`,`$_POST`等。出现“`>`”,“`<`”这类,建议使用`{gt}`代替`>`,`{lt}`代替`<`,`{neq}`代替`<>`,`{elt}`代替`<=`,`{egt}`代替`>=` |
|@page|当前分页号,默认$page,当传入该参数表示启用分页,一个页面只允许有一个page,多个标签使用多个page会造成不可预知的问题|
|@num|每次返回数据量|
|@cache|数据缓存时间,单位秒|
|@return|返回值变量名称,默认data|
|@pagefun|分页函数,默认page()|
|@pagetp|分页模板|
|@table|表名,不用填写表前缀,当存在`@table`参数时,忽略`@sql`参数|
|@order|排序参数,只有配合`@table`参数有效|
|@where|SQL的where部分条件,只有配合`@table`参数有效|
##普通SQL查询示例
~~~
<get sql="SELECT * FROM shuipfcms_article WHERE status=99 ORDER BY inputtime DESC" page="$page" num="5">
表前缀可以使用shuipfcms代替,系统会自动替换为你安装时所设置的表前缀!
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
分页:{$pages}
</get>
~~~
##使用@table参数的查询示例
~~~
<get table="article" status="99" order="inputtime DESC" page="$page" num="5">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
分页:{$pages}
</get>
~~~
##比较复杂的示例
~~~
<?php
$sql = 'SELECT * FROM shuipfcms_article WHERE status=99 ';
//接受外部数据
$_catid = I('get.classid',0,'intval');
if($_catid){
$sql .= " `catid` = '{$_catid}' ";
}
$sql .= ' ORDER BY inputtime DESC';
?>
<get sql="$sql" page="$page" num="5">
表前缀可以使用shuipfcms代替,系统会自动替换为你安装时所设置的表前缀!
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
分页:{$pages}
</get>
~~~
##注意事项
>1.sql最好避免直接接受外部数据,会存在SQL注入风险!
2.请不要使用此标签处理非SELECT类型的查询语句!
3.page="$page" 存在,同样是开启分页,一个页面只允许一个标签开启使用,否则会出现不可预知的问题!
4.由于历史原因,如果采用第一种直接传入SQL,出现“`>`”,“`<`”这类,建议使用`{gt}`代替`>`,`{lt}`代替`<`,`{neq}`代替`<>`,`{elt}`代替`<=`,`{egt}`代替`>=`。
position推荐位标签
最后更新于:2022-04-01 02:04:10
**position推荐位标签**
标签:`<position></position>`
作用:推荐位标签
用法示例:`<position action="position" posid="1"> .. HTML ..</position>`
[TOC]
##公用参数
| 参数 | 说明 |
| -- | -- |
| @cache | 数据缓存时间,单位秒 |
|@return|返回值变量名称,默认data|
|@where|sql语句的where部分|
##获取推荐位数据
| 参数 | 说明 |
| -- | -- |
|@posid|推荐位ID(`必填`)|
|@catid|调用栏目ID|
|@thumb|是否仅必须缩略图,1是,0不是|
|@order|排序|
|@num|每次返回数据量|
用法示例:
~~~
<position action="position" posid="1">
循环推荐位里的数据,默认返回值是 data,默认情况下有以下基本数据
<volist name="data" id="vo">
标题:{$vo.data.title}
链接:{$vo.data.url}
其他的字段,需要在模型里面设置字段的“在推荐位标签中调用”设置为是,就可以调用拉。
</volist>
</position>
~~~
comment评论标签
最后更新于:2022-04-01 02:04:08
**comment评论标签**
标签:`<comment></comment>`
作用:评论标签
用法示例:`<comment action="get_comment" catid="$catid" id="$id"> .. HTML ..</comment>`
[TOC]
##基本参数
| 参数 | 说明 |
| -- | -- |
| @action | 调用方法(`必填`) |
|@catid|栏目id(`必填`),列表页,内容页可以使用 $catid 获取当前栏目。|
##公用参数
| 参数 | 说明 |
| -- | -- |
|@cache | 数据缓存时间,单位秒 |
|@return|返回值变量名称,默认data|
##获取评论总数
当`@action`为`get_comment`时,获取评论总数
| 参数 | 说明 |
| -- | -- |
| @action | 调用方法(`必填`) |
|@catid|栏目id(`必填`),列表页,内容页可以使用 $catid 获取当前栏目。|
> 获取评论总数建议直接用:{:commcount($catid,$id)} 代替!
##获取评论数据
当`@action`为`lists`时,获取评论数据列表
| 参数 | 说明 |
| -- | -- |
| @action | 调用方法(`必填`) |
|@catid|栏目id(`必填`),列表页,内容页可以使用 $catid 获取当前栏目。|
|@hot|排序方式{0:最新}|
|@date|时间格式 Y-m-d H:i:s A|
|@where|sql语句的where部分|
用法示例:
~~~
<comment action="lists" catid="10" id="30">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>评论用户:{$vo.author},评论内容:{$vo.content}</li>
</volist>
</ul>
</comment>
~~~
##获取评论排行榜
| 参数 | 说明 |
| -- | -- |
|@num |返回信息数|
用法示例:
~~~
<comment action="bang" num="10">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
</comment>
~~~
tags标签
最后更新于:2022-04-01 02:04:06
**Tags标签**
标签:`<tags></tags>`
作用:进行相关Tags数据调用
用法示例:`<tags action="lists" tag="$tag" num="4" page="$page" order="updatetime DESC"> .. HTML ..</tags>`
格式:`<tags action="方法名" 参数="内容"> .. HTML ..</tags>`
[TOC]
## 基本参数
| 参数 | 说明 |
| -- | -- |
| @action | 调用方法(`必填`) |
|@page|当前分页号,默认$page,当传入该参数表示启用分页,一个页面只允许有一个page,多个标签使用多个page会造成不可预知的问题。|
|@num|每次返回数据量。|
##公用参数
| 参数 | 说明 |
| -- | -- |
| @cache | 数据缓存时间,单位秒。 |
|@return|返回值变量名称,默认data|
|@pagefun|分页函数,默认page()|
|@pagetp|分页模板|
|@where|sql语句的where部分 例如:child = 0|
##获取tag标签列表
当`@action`为`lists`时,获取tag标签列表
| 参数 | 说明 |
| -- | -- |
| @tag | 标签名,例如:厦门 支持多个,多个用空格或者英文逗号 |
|@tagid|标签id 多个使用英文逗号隔开|
|@order|排序|
|@num|每次返回数据量|
用法示例:
~~~
<tags action="lists" tag="厦门" num="4" order="updatetime DESC">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>tag标签:{$vo.tag},文章标题:{$vo.title},文章地址:{$vo.url}</li>
</volist>
</ul>
</tags>
~~~
##获取tag点击排行榜
当`@action`为`top`时,获取tag点击排行榜
| 参数 | 说明 |
| -- | -- |
| @num | 每次返回数据量 |
用法示例:
~~~
<tags action="top" num="4" order="tagid DESC">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>tag标签:{$vo.tag},tag地址:{$vo.url},点击:{$vo.hits}</li>
</volist>
</ul>
</tags>
~~~
spf标签
最后更新于:2022-04-01 02:04:03
**spf模块扩展标签**
标签:`<spf></spf>`
作用:调用非系统内置标签,例如安装新模块后,例如新模块(Demo)目录下TagLib/DemoTagLib.class.php(类名为DemoTagLib)
用法示例:`<spf module="Demo" action="lists"> .. HTML ..</spf>(lists表示类DemoTagLib中一个public方法。)`
**特别说明:**
> 除了标注是必填参数外,其它参数要看对应标签处理程序是否支持!
参数说明:
| 参数 | 说明 |
| -- | -- |
| @module | 对应模块(`必填`) |
|@action|调用方法(`必填`)|
|@page|当前分页号,默认$page,当传入该参数表示启用分页,一个页面只允许有一个page,多个标签使用多个page会造成不可预知的问题。|
|@num|每次返回数据量|
|@cache|数据缓存时间,单位秒。|
|@pagefun|分页函数,默认page。|
|@pagetp|分页模板,必须是变量传递。|
|@return|返回值变量名称,默认data。|
content内容标签
最后更新于:2022-04-01 02:04:01
**content内容标签**
标签:`<content></content>`
作用:内容模型相关标签,可调用栏目,列表等常用信息
用法示例:`<content action="lists" catid="$catid" order="id DESC" num="4" page="$page"> .. HTML ..</content>`
格式:`<content action="方法名" 参数="内容"> .. HTML ..</content>`
`特别说明:`
> `$catid` 变量在列表页,和内容页都表示当前栏目ID。
`page="$page"` 表示开启分页,每个页面,只允许出现`一`个,多个会出现未知错误!
content 标签返回的是`数组`,所以要配合`volist标签`使用,具体看手册基本语法!
[TOC]
##基本参数
| 参数名称 | 说明 |
| -- | -- |
| @action | 调用方法(必填) |
| @page | 当前分页号,默认$page,当传入该参数表示启用分页,一个页面只允许有一个page,多个标签使用多个page会造成不可预知的问题。 |
| @num | 每次返回数据量。 |
| @catid| 栏目id(必填),列表页,内容页可以使用 $catid 获取当前栏目。|
##公用参数
| 参数名称 | 说明 |
| -- | -- |
| @cache | 数据缓存时间,单位秒 |
|@return|返回值变量名称,默认data|
|@pagefun|分页函数,默认page()|
|@pagetp|分页模板|
|@where|设置SQL where 部分。<br/>说明:出现“`>`”,“`<`”这类,建议使用`{gt}`代替`>`,`{lt}`代替`<`,`{neq}`代替`<>`,`{elt}`代替`<=`,`{egt}`代替`>=`。<br/> 建议直接`传入变量`。|
**`下面的参数,是根据@action参数不同,而独有的`**
* * * * *
##调用栏目信息列表
当`@action`为`lists`时,调用栏目信息列表
用法示例:`<content action="lists" catid="$catid" order="id DESC" num="4" page="$page"> .. HTML ..</content>`
| 参数名称 | 说明 |
| -- | -- |
|@order|排序,例如“id DESC”|
|@where|sql语句的where部分 例如:` thumb != '' AND status = 99 `|
|@thumb|是否仅必须缩略图,1为调用带缩略图的|
|@moreinfo|是否调用副表数据 1为是|
|@output|是否经过ContentOutput处理,例如时间,在除了内容页其他调用,是一串数字,开启这个后就是直接输出日期了。同时,如果开启这个参数后,会增加一个_original参数,可以访问数据库存储的原始内容,例如 `$vo['_original']['id']`|
用法示例:
~~~
<content action="lists" catid="$catid" order="id DESC" num="4" page="$page">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
</content>
~~~
##调用点击排行榜
当`@action`为`hits`时,调用点击排行榜
用法格式:`<content action="hits" catid="$catid" order="weekviews DESC" num="10"> .. HTML ..</content>`
| 参数名称 | 说明 |
| -- | -- |
|@order|排序,例如“weekviews DESC”|
|@day|调用多少天内的排行|
|@where|sql语句的where部分。<br/>`views` 点击总数<br/>`yesterdayviews` 昨日点击<br/>`dayviews` 今日点击<br/>`weekviews` 本周点击<br/>`monthviews` 本月点击|
用法示例:
~~~
<content action="hits" catid="$catid" order="weekviews DESC" num="10">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
</content>
~~~
##调用相关文章
当`@action`为`relation`时,调用相关文章
用法格式:`<content action="relation" relation="$relation" catid="$catid" order="id DESC" num="5" keywords="$keywords"> .. HTML ..</content>`
| 参数名称 | 说明 |
| -- | -- |
|@nid|排除id 一般是 $id,排除当前文章|
|@keywords|内容页面取值:$keywords,也就是关键字|
|@relation|内容页取值$relation,当有$relation时keywords参数失效|
|@where|sql语句的where部分|
用法示例:
~~~
<content action="relation" relation="$relation" catid="$catid" order="id DESC" num="5" keywords="$keywords">
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>标题:{$vo.title},地址:{$vo.url}</li>
</volist>
</ul>
</content>
~~~
##调用栏目列表
当`@action`为`category`时,调用栏目列表
用法格式:`<content action="category" catid="$catid" order="listorder ASC" > .. HTML ..</content>`
| 参数名称 | 说明 |
| -- | -- |
|@order|排序,例如“listorder DESC”|
|@where|sql语句的where部分 例如:` child = 0`|
用法示例:
~~~
<content action="category" catid="$catid" order="listorder ASC" >
循环列表,默认返回数据是$data
<ul>
<volist name="data" id="vo">
<li>栏目标题:{$vo.catname},地址:{$vo.url}</li>
</volist>
</ul>
</content>
~~~
##其他一些小技巧
1. 如果要添加where条件,可以这样使用 `where="field='8'"`,如果想在where里调用变量,要使用`<?php $sql = "field = '{$id}'"; ?> where="$sql"` 这种方式,不可以直接在where里使用变量!(`注意:为了你的网站安全,不建议直接接受$_GET,$_POST等不可信数据!`)
2. 如果为了性能考虑,可以添加 `cache="3600"` 参数,标识缓存3600秒。这样在动态访问的时候,可以加快!推荐网站开启Memcached缓存。
模板标签
最后更新于:2022-04-01 02:03:59
##寄语
了解模板标签能很好的帮助站长自作各种模板~~
常用的标签有:`content`标签、`get`标签
get标签可以调用`任何数据`,只有你想不到的,没有做不到的~~~
常用变量
最后更新于:2022-04-01 02:03:56
[TOC]
## 网站配置
网站配置信息,例如网站地址:{$Config.siteurl}
> **$Config.siteurl** 站点http地址
**$Config.sitename** 站点名称
**$Config.sitefileurl** 附近访问地址前缀
**$Config.siteemail** 站点邮箱
**$Config.siteinfo** 网站简介
**$Config.sitekeywords** 网站关键字
**$Config.theme** 网站主题风格名称
`注意:在模板中可以 {$Config.xx} 方式,在php代码中可以用 $Config['xx'] 方式`
## 模块静态资源目录
> 这是一个模块的静态资源存放目录地址,例如Members模块,那么它的静态资源目录则是 http://您的网站地址/statics/extres/members/,也就等于{$model_extresdir}标签了
## 栏目相关信息获取
7是指栏目ID,可以用使用变量$catid
> 栏目名称:**{:getCategory(7,'catname')}**
栏目类型:**{:getCategory(7,'type')}**
栏目所属模型ID:**{:getCategory(7,'modelid')}**
父栏目ID:**{:getCategory(7,'parentid')}**
所有父栏目ID列表:**{:getCategory(7,'arrparentid')}**
是否存在子栏目:**{:getCategory(7,'child')}**
所有子栏目列表:**{:getCategory(7,'arrchildid')}**
栏目图片:**{:getCategory(7,'image')}**
栏目描述:**{:getCategory(7,'description')}**
栏目目录:**{:getCategory(7,'catdir')}**
栏目父目录:**{:getCategory(7,'parentdir')}**
栏目地址:**{:getCategory(7,'url')}**
栏目是否显示:**{:getCategory(7,'ismenu')}**
栏目拼音:**{:getCategory(7,'letter')}**
## 在栏目页中常用的变量
> 栏目ID:**{$catid}**
## 在内容页面常用的变量
> 信息ID:**{$id}**
> 栏目ID:**{$catid}**
## JS全局变量
~~~
<script type="text/javascript">
var GV = {
DIMAUB: "{$Config.siteurl}",
JS_ROOT: "{$Config.siteurl}statics/js/"
};
</script>
~~~
## 在内容页,进行点击数更新
~~~
$(function(){
//点击
$.get("{$Config.siteurl}api.php?m=Hits&catid={$catid}&id={$id}", function (data) {
$("#hits").html(data.views);
}, "json");
});
~~~
## 在内容页调用评论
~~~
//评论,页面中,必须有包含id="ds-reset"的HTML节点,例如: <div id="ds-reset"></div>
var commentsQuery = {
'catid': '{$catid}',
'id': '{$id}',
'size': 10
};
(function () {
var ds = document.createElement('script');
ds.type = 'text/javascript';
ds.async = true;
ds.src = GV.DIMAUB+'statics/js/comment/embed.js';
ds.charset = 'UTF-8';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds);
})();
~~~
模板制作
最后更新于:2022-04-01 02:03:54
**模板结构目录**
ShuipFCMS的模板存放目录是在“shuipf/Template” 这个文件夹下!
![2015-08-05/55c22bf1ca18c](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-08-05_55c22bf1ca18c.png)
目录结构就像上面的!
`注意:Template目录下,每一个文件夹都算一个主题!`
> Default是默认主题,Default/Content 这个就是前台内容模板啦!
![2015-08-05/55c22c1577672](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-08-05_55c22c1577672.png)
结构是这样的!
> **Category **这个目录是存放栏目频道页的模板(就是有子栏目,非终极栏目的栏目首页模板)。
**Index **这个目录是网站首页模板。
**List **这个目录是栏目列表模板(指终极栏目)。
**Public **是一些公共模板。
**Rss **是Rss显示模板。
**Show **是内容页模板。
**Tags **是Tags显示的相关模板。
**Page **是单页栏目模板。
插件开发
最后更新于:2022-04-01 02:03:52
插件的开发,首选是基于 `插件模块` 这个模块进行,所以,需要支持插件,还需要在线安装`插件模块`。
卸载程序制作
最后更新于:2022-04-01 02:03:50
这里介绍的是模块的卸载程序。
基本结构目录:
![2015-08-05/55c1984460230](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-08-05_55c1984460230.png)
比安装模块简单多拉~
`Special.sql`这个是数据库变更脚本,明明规范是和模块目录名相同。这个不是必要的,可以没有。
同样的,卸载也支持卸载脚本的方式,例如:`Uninstall/Uninstall.class.php` 创建这个文件后,卸载时,会自动调用。
Uninstall.class.php 主要代码如下:
~~~
namespace Search\Uninstall;//这里的Search也是和目录名一样
use Libs\System\UninstallBase;
class Uninstall extends UninstallBase {
//卸载开始执行
public function run() {
return true;
}
//卸载完回调
public function end() {
return true;
}
}
~~~
到此就介绍完拉~
安装程序制作
最后更新于:2022-04-01 02:03:47
这里介绍的是模块开发好后的安装程序(通俗的讲,就是把你开发的程序,加入ShuipFCMS的模块管理,支持安装/卸载)。
基本的安装程序结构如下:
![2015-08-05/55c1976658f3d](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-08-05_55c1976658f3d.png)
解释:
> Install 模块下的安装目录(注意大小写)
Template 前台模板目录(注意:该目录下需要创建一个和当前模块一样的文件夹,然后才在下面放相应模板。)例如:Special模块,我们就要创建“Special\Install\Template\Special\”这个目录,然后才在里面放各个控制对应的模板。
Menu.php 这个后台菜单项,也是权限控制项。
Special.sql 这个数据库安装脚本,命名是当前模块名。如果没有数据库相关,可以不需要。
* * * * *
这就是最基本的安装程序。可以实现模块的安装。
这里我们介绍下Menu.php文件:
~~~
return array(
array(
//父菜单ID,NULL或者不写系统默认,0为顶级菜单
"parentid" => NULL,
//地址,[模块/]控制器/方法
"route" => "Search/Search/index",
//类型,1:权限认证+菜单,0:只作为菜单
"type" => 0,
//状态,1是显示,0不显示(需要参数的,建议不显示,例如编辑,删除等操作)
"status" => 1,
//名称
"name" => "搜索配置",
//备注
"remark" => "搜索配置!",
//子菜单列表
"child" => array(
array(
"route" => "Search/Search/create",
"type" => 1,
"status" => 1,
"name" => "重建索引",
"child" => array(
//这里是其它的子菜单
)
),
array(
"route" => "Search/Search/searchot",
"type" => 1,
"status" => 1,
"name" => "热门搜索",
),
),
),
);
~~~
`如果您能开发模块,我相信您对上面的代码很了解它是干什么的吧~`
> 同时系统还提供一个 D('Admin/Access')->isCompetence 方法,用于判断是否有权限!
> 例如:D('Admin/Access')->isCompetence('Special/Index/index') 这个就是判断 Special模块下SpecialAction.class.php里的index方法是否有权限执行。
* * * * *
如果上面的安装方法已经满足你了,下面的更高级的用法,就可以不用看拉~
模块安装是支持安装脚本的,也就是“`Special\Install\Install.class.php`”
Install.class.php 文件,就是由开发者,自己来决定,要如何安装这个模块的一些流程,需要处理的东西。
安装脚本,必须实现两个方法,run 执行安装方法 end 安装完成回调方法。
一个例子:
~~~
namespace Search\Install;//这里的Search是你模块的目录名称,这点很重要
use Libs\System\InstallBase;
class Install extends InstallBase {
//安装前进行处理
public function run() {
return true;
}
//基本安装结束后的回调
public function end() {
return true;
}
}
~~~
配置文件
最后更新于:2022-04-01 02:03:45
每个模块目录里,都有一个Config.inc.php配置文件,这里讲解下这个配置文件如何使用:
~~~
return array(
//模块名称
'modulename' => '搜索',
//图标
'icon' => '模块图标http地址',
//模块简介
'introduce' => '模块简介',
//模块介绍地址
'address' => '',
//模块作者
'author' => '',
//作者地址
'authorsite' => '',
//作者邮箱
'authoremail' => '',
//版本号,请不要带除数字外的其他字符
'version' => '1.0.0',
//适配最低ShuipFCMS版本,
'adaptation' => '2.0.0',
//签名
'sign' => '模块签名,需要shuipfcms扩展中心唯一',
//依赖模块
'depend' => array(),
//行为注册
'tags' => array(
'行为标识' => array(
'title' => '行为名称',
'type' => 1,//行为类型,1控制器,2视图行为
'行为规则',
),
),
//缓存,格式:缓存key=>array('module','model','action')
'cache' => array(
'缓存KEY' => array(
'name' => '全站搜索配置',
'model' => '自定义模型',
'action' => '方法',
),
),
);
~~~
上面的就是模块配置文件的基本格式了。