2012年3月

勾选list.var支持程序代码

list.var模板内容:

$ztr=explode('|',$r[ztid]);

$ztid=$ztr[1];

$ztname=$class_zr[$ztid][ztname];

$zturl='/'.$class_zr[$ztid][ztpath];

$listtemp='[<a href="'.$zturl.'">'.$ztname.'</a> ] <a href="[!--titleurl--]" target="_blank">[!--title--]</a><span>[!--newstime--]</span>';

<!--上一篇-->

[e:loop={'selfinfo',1,0,0,'id<'.$navinfor[id].'','id desc'}]

<a href="<?php

echo $bqsr[titleurl];

$pre='true';

?>">上一篇:<?=$bqr[title]?>

</a>

[/e:loop]

<?php

if(empty($pre)){

echo "上一篇:很抱歉没有了";

}

?>

 

<!--下一篇-->

[e:loop={'selfinfo',1,0,0,'id>'.$navinfor[id].'','id asc'}]

<a href="<?php

echo $bqsr[titleurl];

$next='true';

?>">下一篇:<?=$bqr[title]?>

</a>

[/e:loop]

<?php

if(empty($next)){

echo "下一篇:很抱歉没有了";

}

?>

 

四: 控制上一篇下一篇标题字数截取30个字符为例

 

运用:<?=esub($bqr[title],30)?>

 

<!--上一篇-->

[e:loop={'selfinfo',1,0,0,'id<'.$navinfor[id].'','id desc'}]

<a href="<?php

echo $bqsr[titleurl];

$pre='true';

?>">上一篇: <?=esub($bqr[title],30)?></a>

[/e:loop]

<?php

if(empty($pre)){

echo "上一篇:很抱歉没有了";

}

?>

 

<!--下一篇-->

[e:loop={'selfinfo',1,0,0,'id>'.$navinfor[id].'','id asc'}]

<a href="<?php

echo $bqsr[titleurl];

$next='true';

?>">下一篇:<?=esub($bqr[title],30)?>

</a>

[/e:loop]

<?php

if(empty($next)){

echo "下一篇:很抱歉没有了";

}

?>

A.首先要说明,目前排行调用实现的是:一周(一月,一年)内新增的信息,按点击排行的调用.

目前的排行调用方式,比较适合新闻网站,缺点是,如果本周无更新,就什么也调不出来了。例如一天没更新,后台的24小时排行常常是无内容。具体方法:

 

问:帝国是否可以实现类似本月热点排行之类的功能

 

前提是开启标签支持SQL语句。

SQL标签的应用

已带模版的标签为例:

[ecmsinfo]"select * from phome_ecms_news where newstime > UNIX_TIMESTAMP()-86400*30 order by onclick desc limit 10",10,30,0,24,7,0[/ecmsinfo]

 

30 是天,当然你也可以修改为7,365,1000,自己修改合适的时间。

10 是调用多少条,自己修改为合适。

24 是SQL标签的类型,必须为24系统才会执行前面的SQL。

 

问:能否指定栏目调用呢?

[ecmsinfo]"select * from phome_ecms_news where newstime > UNIX_TIMESTAMP()-86400*30 AND classid in('2','3') order by onclick desc limit 10",10,30,0,24,7,0[/ecmsinfo]

 

注意红色部分:可以填写你需要调用的栏目ID(注意:必须为终极类)

 

问:那调用当前栏目呢?这样模就更自动化了。

 

首先要使模版支持程序代码:

具体操作:后台—系统设置—参数设置—信息设置—模板是否支持程序代码:选择(是)

标签如下:

global $navclassid;

?>

[ecmsinfo]"select * from phome_ecms_news where newstime > UNIX_TIMESTAMP()-86400*30 and classid=$navclassid order by onclick desc limit 10",10,30,0,24,7,0[/ecmsinfo]

 

注意红色部分:

global $navclassid;,是使列表模版支持$navclassid变量($navclassid为当前栏目ID的变量)。

classid=$navclassid,条件语句,只调用栏目ID=当前栏目ID的文章。

 

问:我要在内容页调用当前内容页所属栏目的分时热门新闻呢?

 

[ecmsinfo]"select * from phome_ecms_news where newstime > UNIX_TIMESTAMP()-86400*30 and classid='".$navinfor[classid]."' order by onclick desc limit 10",10,30,0,24,7,0[/ecmsinfo]

实现在文章前台排序,一直是我的个人愿望,其中一个原因是,我早期做的大都是教学网站,很多东西与课本同步,把一册的内容按课本顺序排列好,方便用户查看,还可以随时修改它们的顺序,这对网站的人性化很重要。可惜一直没有机会在帝国cms中作此尝试。下了点功夫还真搞定了,为了方便其他同仁偷懒,特备忘如下:

首先,在需要排序的信息模型中增加一个自定义字段用来排序,比如在新闻数据表增加一个newsnumber字段,字段名为newsnumber,字段类型选择INT(大型数值),输入表单显示元素使用单行文本框,其他的东西默认就好。然后修改系统模板,让这个字段可以录入、修改和增加,并能在列表模板和内容模板中使用。

接下来,用灵动标签通过sql查询的方式调用,代码样式如下:

[e:loop={'select * from phome_ecms_news where classid=6 order by newsnumber asc limit 5',5,24,0}]<LI><A title='<?=$bqr[title]?>' href="<?=$bqsr[titleurl]?>"><?=esub($bqr[title],32,'…')?></A></LI>[/e:loop]

看看以上代码大家应该明白了,classid=你要调用的栏目id,by空格之后的newsnumber其实就是使用newsnumber这个我们在后台增加的排序字段来排序,这里的排序方式是asc 是英文单词ascend 的缩写,是升序的意思,这样可以升序方式排列数据,你也可以把它改为desc,desc是英文单词descend 的缩写,这样可以降序排列数据。很简单吧?

网上用得比较多的是按照后台添加的先后顺序排序:

<!-- 文字链接 -->

[e:loop={'select * from [!db.pre!]enewslink where checked=1 and lpic="" order by lid',20,24,0}]

<li><a href="<?=$bqr[lurl]?>"><?=$bqr[lname]?></a></li>

[/e:loop]

 

区别在于是按lid还是按myorder排序。

 

 

这是按照后台设置的大小顺序排序:

<!-- 文字链接 -->

[e:loop={'select * from [!db.pre!]enewslink where checked=1 and lpic="" order by myorder',20,24,0}]

<li><a href="<?=$bqr[lurl]?>"><?=$bqr[lname]?></a></li>

[/e:loop]

 

这是友情连接的下拉形式:

<form id="form1" name="form1" method="post" action="">

<label for="FRIEND LINK ">友情链接:</label>

<select name="FRIEND LINK" size="1" id="FRIEND LINK">

[e:loop={'select * from [!db.pre!]enewslink where checked=1 order by lid',20,24,0}]

<option value="<?=$bqr[lurl]?>">

<?=$bqr[lname]?>

</option>

[/e:loop]

</select>

</form>