icms如果实现仅会员浏览文章功能

发布时间: 访问量:189

之前做模板想过,只有会员才能浏览内容,但是icms没那个功能,索性没在考虑。最近在QQ群里又看到有人问提样的问题,那我也想个方法实现一下吧。要在不变动程序的前提下进行,因为怕以后升级覆盖。这样就交给模板中的各种判断实现。官方文档中已经写着提供 会员信息 调用的标签,那就方便多了。

首先,在后台中问文章添加个属性值,我这里就用“会员测试”为名称,值设置为“3”,这样在添加文章是就可以对文章添加属性。并且文章管理中也可以批量添加该属性。

icms如果实现仅会员浏览文章功能

icms如果实现仅会员浏览文章功能

这个属性怎么调用?用的标签是:<!--{$article.pid}-->,但是这样输出的是字符串,设置多个属性会全部显示出来,在模板中使用 <!--{$article|print_r}--> 看到 pid 输出的是“0,1,2,3”,这样怎么进行判断?

icms如果实现仅会员浏览文章功能

当然是将字符串分割为数组,使用 explode() 函数,分割符就是英文下的逗号“,”explode(",",$article.pid),这样,字符串就转换为数组了。

因为我们在后台的属性值中设置的值是”3“,如果判断这个数组中是否有这个值那?我们就使用 in_array() 函数,将两个函数写到一起就是: in_array("3",explode(",",$article.pid)) ,这样就完成了属性值的取出了。

如果文章中就使用了这一个属性值,没有其他的,这个写法就失效了。因为 <!--{$article.pid}--> 输出的就是一个字符串,没法分割。所以需要在加入一个判断: $article.pid =='3' 的时候。对于属性的获取判断完整说明就是:文章单独设定属性pid=3或者多个属性值时,是否存在pid值为3。

啰嗦了半天,就是为了给前台显示加个开关。

当然,只有开关没法判断是否会员登陆,官方文档中给出的标签:

<!--{iCMS:user:cookie}-->
<!--{$user_cookie}-->

可以判断会员信息,这样,组合到一起就完成了后台的设置,前台需要会员显示了。

icms如果实现仅会员浏览文章功能

将以下完整的代码替换模板中的<!--{$article.body}-->标签 :

<!--{iCMS:user:cookie}-->
<!--{if $article.pid =='3' || in_array("3",explode(",",$article.pid))}-->
<!--{if $user_cookie}-->
<!--{$article.body}-->
<!--{else}-->
<span style="padding: 5px 15px;margin: 0 auto;display: block;width: 280px;color: #ff0000;border: 1px solid #efeeee;box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);font-weight: bolder;">此内容需会员权限浏览,<a href="<!--{iCMS:router url='user:login'}-->" target="_blank">登陆</a> or <a href="<!--{iCMS:router url='user:register'}-->" target="_blank">注册</a></span>
<!--{/if}-->
<!--{else}-->
<!--{$article.body}-->
<!--{/if}-->


相关阅读