thinkphp自定义模板标签(二)

上篇文章已经把自定义标签的准备工作讲完了;那么接下来就是见证...的时候了;没看如何配置的请先移步thinkphp自定义模板标签(一)

    闭合标签就是单标签;比如a标签、img标签等等;

    非闭合标签就是对标签;比如div、p标签等等;

    这里以自定义的ueditor和recommend标签为例;

    自定义的闭合标签比较适合用来引文件;

    自定义的对标签比较适合调取数据库的数据并前台页面遍历显示;

<?php  

namespace Common\Tag;
use Think\Template\TagLib;

class My extends TagLib {
    // 定义标签
    protected $tags=array(
         // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
        'ueditor'=> array('attr'=>'name,content','close'=>0),
        'recommend'=>array('attr'=>'limit','level'=>1)
        );

    /**
    *引入ueidter编辑器
    *@param string $tag  name:表单name content:编辑器初始化后 默认内容
    */
    public function _ueditor($tag){
        $name=$tag['name'];
        $content=$tag['content'];
        $link=<<<php
<script id="container" name="$name" type="text/plain">
    $content
</script>
<script type="text/javascript" src="__PUBLIC__/static/ueditor1_4_3/ueditor.config.js"></script>
<script type="text/javascript" src="__PUBLIC__/static/ueditor1_4_3/ueditor.all.js"></script>
<script type="text/javascript">
    var ue = UE.getEditor('container');
</script>
php;
        return $link;
    }

    // 置顶推荐文章标签 cid为空时则抓取全部分类下的推荐文章
     public function _recommend($tag,$content){
         if(empty($tag['cid'])){
             $where="is_show=1 and is_delete=0 and is_top=1";
         }else{
             $where='is_show=1 and is_delete=0 and is_top=1 and cid='.$tag['cid'];
         }
         $limit=$tag['limit'];
         // p($recommend);
         $php=<<<php
<?php         
            \$recommend=M('Article')->field('aid,title')->where("$where")->limit($limit)->select();
            foreach (\$recommend as \$k => \$field) {
                \$url=U('Home/Index/article',array('aid'=>\$field['aid']));
?>
php;
        $php.=$content;    //拼字符串的过程。。。
        $php.='<?php } ?>';//foreach的回扩;
        return $php;
     }
}
?>

定义完成后在html页面中就可以直接使用<ueditor />即可引入ueditor编辑器;

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<ueditor />
</head>
<body>
<!-- 引入ueditor编辑器开始 -->
<ueditor />
<!-- 进入ueditor编辑器结束 -->

<!-- 置顶推荐开始 -->
<recommend cid="" limit="10">
   <a class="recommend-a" href="{:U('Home/Index/article',array('aid'=>$field['aid']))}" target="_blank">{$k+1}:{$field['title']}</a>
</recommend>
<!-- 置顶推荐结束 -->
</body>
</html>

而如下图本站的热门推荐就是使用recommend遍历的;

白俊遥博客

/*************************************追加说明用的分割线*******************************

bjyadmin中有大量的标签可以参考:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin/blob/master/Application/Common/Tag/My.class.php


bjyblog项目已经改写;原有的标签形式的代码可以查看git:http://git.oschina.net/shuaibai123/thinkbjy/commit/961874d2c12630792390ed26c0a135640e65722d

白俊遥博客
请先登陆后发表评论
  • 最新评论
  • 总共8条评论
白俊遥博客

怯凡:啊。博主我clone了下你的代码,在你的一个html文件中你用了自定义的<bootstrapcss />便签,理论山是应该加载了bootstrapcss相关的文件了吧,但是我在cchrome 的network下并没有看大加载了相应的文件,请问下这是神马情况?我自己在项目中按你的配置,发现也相应文件也没有引入,一脸懵逼中。。。

2016-11-25 13:58:00 回复

白俊遥博客
  • 云淡风晴 回复 怯凡:右键查看源代码;看是否有;
  • 2016-12-05 23:10:39 回复
白俊遥博客

搬砖工.:顺便问下.$php=<<<php  这一段是什么意思啊麻烦了

2016-11-10 17:38:19 回复

白俊遥博客
  • 云淡风晴 回复 搬砖工.:定界符;在定界符内的代码;将原样执行;
  • 2016-11-10 22:55:10 回复
白俊遥博客

搬砖工.:大神,我看了你的博客,满满都是干活,我想问下,Thinkphp自定义标签.怎么打印...

2016-11-10 17:19:56 回复

白俊遥博客
  • 云淡风晴 回复 搬砖工.:和正常操作一样;
  • 2016-11-10 22:54:37 回复
白俊遥博客

玄阳明白俊遥博客找到地方了,哈哈

2016-10-24 15:40:16 回复

白俊遥博客

玄阳明:ueditor怎么更改图片保存路径啊?

2016-10-24 15:11:50 回复

白俊遥博客

孤城浪子:变量名前面的反斜杠是什么鬼

2016-09-10 18:05:56 回复

白俊遥博客
  • 云淡风晴 回复 孤城浪子:转义;
  • 2016-09-11 00:31:19 回复
白俊遥博客
  • Raul Gonzale 回复 云淡风晴:大神,请教一下,这个地方为什么需要转义,不转义的话会发生什么情况?
  • 2016-10-21 14:37:26 回复
白俊遥博客
  • Raul Gonzale 回复 Raul Gonzale:另外能加下您的QQ不,我的是240023810
  • 2016-10-21 14:38:03 回复
白俊遥博客
  • 云淡风晴 回复 Raul Gonzale:不转义会被当做变量解析;后果;我说没感觉;试试就知道了;
  • 2016-10-22 00:35:39 回复
白俊遥博客

蓝天:感谢!

2016-08-18 11:03:13 回复

白俊遥博客

木祁:分享图片

2015-07-17 11:32:22 回复