• 保存到桌面加入收藏设为首页
技术教程

EYOUCMS标签调用大全-输出篇(一)

时间:2020-05-08 10:35:07   作者:dehua.site   来源:网络线报   阅读:96   评论:0
内容摘要:【查询】栏目查询名称:channel功能:易优常用标记,可以循环嵌套标签。通常用于网站导航以获取站点栏目信息,方便网站会员分类浏览整站信息语法演示(一级导航查询):{eyou:channel type='top' row='8' currentstyle='active'}<......

 【查询】 

栏目查询

名称:channel
功能:易优常用标记,可以循环嵌套标签。通常用于网站导航以获取站点栏目信息,方便网站会员分类浏览整站信息
语法演示(一级导航查询):
{eyou:channel type='top' row='8' currentstyle='active'}
<li class="{$field.currentstyle}"><a href='{$field.typeurl}'>{$field.typename}</a> </li>
{/eyou:channel}

1.更多示例:

1.调用栏目id为1的下级子栏目
{eyou:channel typeid='1' row="6" type ='son' currentstyle="on"}
<li class="{$field.currentstyle}"><a href="{$field.typeurl}" >{$field.typename}</a> </li>
{/eyou:channel}
2、嵌套查询三级栏目
{eyou:channel typeid='1' type='son' row='100' id='field1' currentstyle='active'} // 第一级栏目循环开始
<li>
    <a href="{$field1.typeurl}" title="{$field1.typename}" class="{$field1.currentstyle}">
        {$field1.typename}
        {eyou:notempty name='$field1.children'}
        有子栏目时才显示这里的html代码,比如:箭头、图标等
        {/eyou:notempty}
    </a>
    {eyou:notempty name='$field1.children'} // 判断是否有子栏目(第二级栏目)start
    <div>
        {eyou:channel name='$field1.children' id='field2' row='100'} //第二级栏目循环开始
        <div>
            <a href="{$field2.typeurl}" class="dropdown-item ">{$field2.typename}</a>
            {eyou:notempty name='$field2.children'} // 判断是否有子栏目(第三级栏目)start
            <div class="dropdown-menu animate">
                {eyou:channel name='$field2.children' id='field3' row='10'} //第三级栏目循环开始
                <a href="{$field3.typeurl}" class="dropdown-item ">{$field3.typename}</a>
                {/eyou:channel} //第三级栏目循环结束
            </div>
            {/eyou:notempty} // 判断是否有子栏目(第三级栏目)end
        </div>
        {/eyou:channel} // 第二级栏目循环结束
    </div>
    {/eyou:notempty} // 判断是否有子栏目(第二级栏目)end
</li>
{/eyou:channel} //第一级栏目循环结束
3、内置变量输出数据索引与记录顺序,key 表示索引,默认从0开始;i 表示顺序,默认从1开始。
{eyou:channel type='top'}
{$key} - {$i}
{/eyou:channel}
效果:
0 - 1
1 - 2
2 - 3
3 - 4
4 - 5

2.参数详解:

参数:
typeid='' 栏目ID,多个请用","分开
row='10' 返回文档列表总数(建议不要与limit属性同时存在,否则row无效)
limit='起始ID,记录数' (起始ID从0开始)表示限定的记录范围(如:limit='1,2' 表示从ID为1的记录开始,取2条记录) mod='' 用于处理每隔N行输出的内容 titlelen='30' 栏目名称长度
type='son' 表示下级栏目
type='self' 表示同级栏目
type='top' 表示顶级栏目
type='sonself' 表示当前下级栏目以及同级栏目
type='first' 表示当前栏目ID的最顶级栏目下的所有层级栏目集合
currentstyle='' 应用样式class类名
offset=‘0’ 记录的起始ID,默认从0开始,假如指定2,将过滤最前面的2条,从第三条显示
name='' 数组类型的变量名(三级导航时才用到)
empty='' 没有数据时显示的文案
id='' 可以任意指定循环里的变量名替代field,假设id='field1',模板调用如:{$field.title} 变成 {$field1.title}
底层字段:
请查阅易优Cms官方提供的数据字典,找到表名 ey_arctype
(注:在没有指定typeid的情况下,type标记与模板的环境有关,如:模板生成到栏目一,那么type='son'就表示栏目一的所有子栏目)

内容查询


[基础用法]
名称:arclist
功能:获取系统主从表模型(如:文章、软件、图集、产品等)的一列文档,也称自由列表块标记。
语法演示(查询某个栏目的内容,不含子栏目内容):
{eyou:arclist typeid='栏目ID' row='10' titlelen='30' infolen='160' orderby='add_time'}
    <a href='{$field.arcurl}'>{$field.title}</a>
    缩略图路径:{$field.litpic}
    点击数/人气:{$field.click}
    内容简介:{$field.seo_description|html_msubstr=###,0,60,true}
    日期(年月日):{$field.add_time|MyDate='Y-m-d',###}
    产品模型,价格:¥ {$field.users_price}
{/eyou:arclist}

1.更多示例:

-------------------------------示例1--------------------------------
描述:每隔3条输出文档记录,其余情况则不输出,{eyou:eq name='mod' value='0'}表示判断除以3的余数mod=0
{eyou:arclist typeid='文档ID' limit='0,10' mod='3'}
{eyou:eq name='mod' value='0'}
<a href='{$field.arcurl}'>{$field.title}</a>
{/eyou:eq}
{/eyou:arclist}
-------------------------------示例2--------------------------------
描述:mod属性还用于控制一定记录样式,每隔3条增加样式,比如:3、6、9……
{eyou:arclist typeid='文档ID' limit='0,10' mod='3'}
<li {eyou:eq name='mod' value='0'}class="样式名"{/eyou:eq}>
  <a href='{$field.arcurl}'>{$field.title}</a>
</li>
{/eyou:arclist}
-------------------------------示例3--------------------------------
描述:内置变量输出数据索引与记录顺序,key 表示索引,默认从0开始;i 表示顺序,默认从1开始。
{eyou:arclist typeid='文档ID' limit='0,5'}
{$key} - {$i}
{/eyou:arclist}
效果:
0 - 1
1 - 2
2 - 3
3 - 4
4 - 5
-------------------------------示例4--------------------------------
描述:没有记录时输出文案提示,属性empty支持直接传入html语法(html里只支持双引号,禁止单引号)
{eyou:arclist typeid='文档ID' limit='0,10' empty='暂时没有数据'}
<a href='{$field.arcurl}'>{$field.title}</a>
{/eyou:arclist}

2.参数详解:

参数:
typeid='' 栏目ID,在列表模板和内容页模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目,但必须是同一个模型下的多个栏目ID,比如:文章模型、产品模型、图集模型等;
notypeid='' 同typeid,但这里是表示不包含这些属性,与typeid不能同时存在; mod='' 用于处理每隔N行输出的内容 tagid='' 在所有的arclist标签中是唯一不可重复,对应arcpagelist标签的tagid名称,与arcpagelist配合使用可实现ajax瀑布流分页;
row='10' 返回文档列表总数(建议不要与limit属性同时存在,否则row无效)
limit='起始ID,记录数' (起始ID从0开始)表示限定的记录范围(如:limit='1,3' 表示在3条记录中,排除前面1条,也就是只取得剩余的后面所有记录)
titlelen='30' 标题长度
infolen='160' 表示内容简介长度
addfields='' 自定义字段名,多个字段之间用英文逗号隔开,比如:addfields='price,spce'
orderby='new' 文档排序方式
----orderby='hot' 或 orderby='click' 表示按点击数从高到低排序
----orderby='add_time' 按发布时间最新排序
----orderby='aid' 按ID从大到小排序
----orderby='sort_order' 按排序号从小到大排序
----orderby='rand' 随机排序
----orderby='is_recom desc, sort_order asc' 自定义多字段组合排序
orderWay='desc' 排序类型:desc表示从大到小,asc表示从小到大
channelid='' 频道ID,优先级高于栏目ID,仅次于文档ID
flag='t,c' 自定义属性值:推荐[c]跳转[j]
noflag='' 同flag,但这里是表示不包含这些属性
empty='' 没有数据时显示的文案
thumb='on' 默认使用缩略图,on为开启,off为关闭
id='' 可以任意指定循环里的变量名替代field,假设id='field1',模板调用如:{$field.title} 变成 {$field1.title}
底层字段:
请查阅易优Cms官方提供的数据字典,找到表名 ey_archives
列表分页



名称:list
功能:获取列表模板中的列表内容。
语法:
{eyou:list pagesize='10' titlelen='30' infolen='160' orderby='add_time'}
<a href='{$field.arcurl}'>{$field.title}</a>
{/eyou:list}
附pagelist,分页代码,联合使用:
---------分页代码------------
<div class="pagelist">
    <ul>
        {eyou:pagelist listitem='index,pre,pageno,next,end' listsize='2' /}
    </ul>
</div>

1.参数详解:

参数:
titlelen='30' 标题长度
infolen='160' 表示内容简介长度
pagesize='10' 分页大小
addfields='' 自定义字段名,多个字段之间用英文逗号隔开,比如:addfields='price,spce'
orderby='now' 文档排序方式
----orderby='hot' 或 orderby='click' 表示按点击数从高到低排序
----orderby='add_time' 按发布时间最新排序
----orderby='aid' 按ID从大到小排序
----orderby='sort_order' 按排序号从小到大排序
----orderby='is_recom desc, sort_order asc' 自定义多字段组合排序
orderWay='desc' 排序类型:desc表示从大到小,asc表示从小到大
channelid='' 频道ID,优先级高于栏目ID,仅次于文档ID
typeid='' 栏目ID,在列表模板和内容页模板中一般不需要指定,在首页模板中允许用","分开表示多个栏目,但必须是同一个模型下的多个栏目ID,比如:文章模型、产品模型、图集模型等;
notypeid='' 同typeid,但这里是表示不包含这些属性,与typeid不能同时存在;
flag='c' 自定义属性值:推荐[c]跳转[j]
noflag='' 同flag,但这里是表示不包含这些属性
empty='' 没有数据时显示的文案
mod='' 每隔N行输出的内容
thumb='on' 默认使用缩略图,on为开启,off为关闭
id='' 可以任意指定循环里的变量名替代field,假设id='field1',模板调用如:{$field.title} 变成 {$field1.title}
栏目套内容



名称:channelartlist
功能:获取当前频道的下级栏目及每个栏目的内容列表
语法:
{eyou:channelartlist typeid='栏目ID' type='son' row='20'}
	tips:输出栏目链接
	<a href='{eyou:field name='typeurl' /}'>{eyou:field name='typename' /}</a>
	{eyou:arclist limit='0,10' titlelen='30'}
		tips:输出该子栏目下的内容
		<a href='{$field.arcurl}'>{$field.title}</a>
	{/eyou:arclist}
{/eyou:channelartlist}
功能:获取当前频道及下级栏目的内容列表
语法:
{eyou:channelartlist typeid='栏目ID' type='sonself'}
	{eyou:arclist row='6' titlelen='30'}
		tips:输出内容链接
		<a href="{$field.arcurl}" title="{$field.title}">{$field.title}</a>
	{/eyou:arclist} 
{/eyou:channelartlist}
自定义字段赛选



名称:screening
功能:筛选文章
语法:
{eyou:screening id='field' currentstyle='active' alltxt='不限' }
    <div class="row">
        <div class="filter-box">
            <!-- 筛选项栏目循环 -->
             {eyou:volist name='$field.list' id='vo'}
                <div class="filter-boxs">
                    <!-- 筛选项标题 -->
                    <div class="filter-tit">
                        {$vo.title} : 
                    </div>
                     <!-- 筛选的可选值循环 -->
                    <div class="filter-cen">
                        {eyou:volist name='$vo.dfvalue' id='val'}
                            <a {$val.onClick} class="{$val.currentstyle}">{$val.name}</a>&nbsp;
                        {/eyou:volist}
                    </div>
                    <!-- 筛选的可选值循环结束 -->
                </div>
            {/eyou:volist}
            <!-- 筛选项栏目循环结束 -->
            <!-- 清除所有筛选条件按钮 -->
            <div class="filter-bt"><a href="{$field.resetUrl}">清除筛选条件</a></div>
        </div>
        <!-- 隐藏域 -->
        {$field.hidden}
    </div>
{/eyou:screening}

1.对应匹配的css代码:

.filter{border:1px solid #fff;padding:6px 20px;margin-top:30px;padding:15px;}
.filter dl{margin:0;}
.filter dl dd{float:left;width:70px;font-weight:bold;font-size:14px;margin:0;padding-top:5px;}
.filter dl dt{margin:0 0 0 80px;}
.filter dl dt a{font-weight:normal;margin:0 5px 5px 0;padding:5px 10px;color:#666;font-size:14px;display:inline-block;}
.filter dl dt a:hover{background:#3BB4F2;color:#fff;cursor: pointer;}
.filter dl dt .hover{background:#3BB4F2;color:#fff;}

2.参数详解:

参数:
id='' 可以任意指定循环里的变量名替代field,假设id='field1',模板调用如:{$field.title} 变成 {$field1.title}
typeid='' 专用于首页筛选,首页调用标签一定要指定栏目ID
currentstyle='' 应用样式class类名
addfields='' 自定义字段名,多个字段之间用英文逗号隔开,比如:addfields='price,spce'
alltxt='' 筛选数值中的第一个自定义选项,该选项是用于重置单条筛选条件,比如:alltxt='全部',alltxt='不限',alltxt='所有'
empty='' 没有数据时显示的文案
底层字段:
请查阅易优Cms官方提供的数据字典,找到表名 ey_channelfield  、ey_article_content
万能sql查询



1.演示代码:

{eyou:sql sql="select * from __PREFIX__arctype where id>0 limit 0,7" id="field" mod="3" empty="暂无内容"}
id:{$field.id}
name:{$field.typename}
	{eyou:eq name="mod" value="1"}
	--------------上面是第{$i} (N) 条记录,N:除以3余数为1
	{/eyou:eq}
{/eyou:sql}

2.输出效果:

id:1
name:关于我们
--------------上面是第1 (N) 条记录,N:除以3余数为1
id:2
name:新闻动态
id:3
name:产品展示
id:4
name:解决方案
--------------上面是第4 (N) 条记录,N:除以3余数为1
id:5
name:资料下载
id:6
name:在线应聘
id:8
name:公司简介
--------------上面是第7 (N) 条记录,N:除以3余数为1

3.解释:

通过sql:select * from __PREFIX__arctype where id>0 limit 0,7
__PREFIX__:表示数据表的前缀
查询数据表ey_arctype的前7条记录(从第一条记录开始),并通过余数判断,在除以3余数为1的时候,输出一段文字

4.使用前提:

1、修改\core\library\think\template\taglib\eyou.php文件, 去掉万能标签的注释;
2、了解各个数据表及字段的含义
注:鉴于eyoucms各个数据表较为混乱,不太建议使用本标签,仅在二次开发时可以使用;另外该标签不支持嵌套查询,实在遗憾。

5.拓展方法:嵌套的万能sql查询及嵌套传参查询

{eyou:sql sql="select * from __PREFIX__arctype where id>0 limit 0,7" id="field" mod="3" empty="暂无内容"}
id:{$field.id}
name:{$field.typename}
	{eyou:assign name="childid" value="$field.id" /}
	{eyou:sql sql="select * from __PREFIX__arctype where id='.$childid.' limit 0,7" id="field2" empty="--------------暂无内容"}
		--------------{$field2.id}
	{/eyou:sql}
{/eyou:sql}

6.拓展方法使用前提:

1、修改\core\library\think\template\taglib\eyou.php文件, 增加以下函数;
    /**
     * 解析字符串里的参数
     */
    private function getzprame($str)
    {
        $result = array();
        $oldstr = $str;
        preg_match_all("/(?:\'.)(.*)(?:\.')/i",$str,$result);
        $value = $this->autoBuildVar($result[1][0]);
        return str_replace("'.".$result[1][0].".'",$value,$oldstr);
    }
2、在万能的sql标签函数里,增加以下sql语句处理:
        $sql = $tag['sql']; // sql 语句
        $sql  = $this->varOrvalue($sql);
        $sql  = $this->getzprame($sql);   //这句话是要新增的处理





相关评论
广告联系:929967548     闽ICP备14005163号-3
Powered by OTCMS V5.20