ThinkCmfX模板常量

Posted 宠辱不惊,看庭前花开花落; 去留无意,望天空云卷云舒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkCmfX模板常量相关的知识,希望对你有一定的参考价值。

{$vo.post_title|msubstr=0,10}

截取标题,msubstr=0,10,数字表示截取的字符串长度,显示省略号,但无论长度是否超过截取的长度都会出现省略号;

例2:

{$vo.post_title|mb_substr=0,15,\'utf-8\'}
mb_substr=0,15,\'utf-8\',设置同上,超过部分截取,但不会显示省略号。

例3:

<php>
        $post_keywords=explode(\'|\',$vczfy[post_keywords]);
        echo mb_substr($post_keywords[2], 0, 2, \'utf-8\');
</php>

例4:

ThinkPHP有一个内置字符截取函数msubstr()如下:
msubstr($str, $start=0, $length, $charset=”utf-8″, $suffix=true) 
$str:要截取的字符串 
$start=0:开始位置,默认从0开始 
$length:截取长度 
$charset=”utf-8″:字符编码,默认UTF-8 
$suffix=true:是否在截取后的字符后面显示省略号,默认true显示,false为不显示 
调用如下:
{$vo.title|msubstr=5,5,’utf-8′,false} 
解释:截取字符串$vo.title,从第5个字符开始,截取5个,编码为UTF-8,不显示省略号

*{:sp_get_term(7)[\'name\']} //取分类栏目id为7的栏目名称

*设为首页:<a onclick="this.style.behavior=\'url(#default#homepage)\';this.setHomePage(\'www.baid.html\');">设为首页 </a>

*加入收藏:<a href="javascript:window.external.AddFavorite(\'www.czy.html\', \'官方网站名\')">加入收藏</a>

*打印:<a href="javascript:window.print(); ">打印</a>

一.public文件:

1、各种js文件,包括cookie.js、ajaxFrom.js等系统自带的js文件
2、simpleboot:bootstrap、图标font文件
View Code

二、themes:前端模板文件/simplebootx

1、comment:评论、回复
comment.html:评论区的一个样式
2、portal:门户页面
article.html:具体的某条新闻的页面
contact.html:练习我们页面(和page.html一样,属于单网页,既不属于新闻列表页,也不属于首页),它和page.html一样,之所以拿出来是在这个页面里做了练习我们的一些特别的内容
index.html:首页页面
list_masonry.html:瀑布流的一个模板文件
list.html:新闻列表页(基本上除去首页和page.html单网页,基本都属于新闻列表页)
search.html:关键字搜索显示的一个列表页
3、public文件夹:门户、评论用到的资源文件
footer.html、header.html、script.html、nav.html、user.html
4、user:在用户登录后所呈现的页面在此文件夹
5、config.html:配置页面
6、error.html:报错页面
7、success.html:操作成功后提示页面
View Code

三、例子

1、在主页读取分类栏目->子类栏目->文章信息

<div class="content">
        <php>
         $terms=sp_get_child_terms(6); /*读取id为6的分类栏目的子栏目信息*/
        </php>
        <foreach name="terms" item="vot" >
        <div class="classifyitem"> <a href="{:leuu(\'list/index\',array(\'id\'=>$vot[\'term_id\']))}">/*链接到分类子栏目*/
          <div class="classifytitle"> {$vot.name} </div>
          </a>
          <div class="classifycontent">
            <ul>
            <php>
             $listaa=sp_sql_posts_paged_bycatid($vot[\'term_id\'],"",6);    /*$vot[\'term_id\']为外层foreach查询到的各子类栏目的id,6为显示6条数据,$vot[\'term_id\']为分类子栏目的

id,通过循环,取到各分类下的文章信息*/
            </php>
            <foreach name="listaa[\'posts\']" item="vol" >            
              <li><a href="{:leuu(\'article/index\',array(\'id\'=>$vol[\'object_id\'],\'cid\'=>$vol[\'term_id\']))}">{$vol.post_title}</a></li>
            </foreach>
            </ul>
          </div>
          <div class="clear"></div>
        </div>          
      </foreach>
      </div>
    </div>
View Code

示意图:

2、分页:$termsb = sp_sql_posts_paged("cid:$cat_id;order:post_date DESC;",9);

    <div class="rightcontent">
    <ul>
        <php>
            $termsb = sp_sql_posts_paged("cid:$cat_id;order:post_date DESC;",2);//根据当前页面的$cat_id读取文章数据,排序方式为按发布的时间\'post_date\',默认降序,每页9条数据文章
        </php>
        <foreach name="termsb[\'posts\']" item="voa">
        <php>
            $smeta=json_decode($voa[\'smeta\'],true);  //取到图片数据放到<img />里面          
        </php>
          <li> <a href="{:leuu(\'article/index\',array(\'id\'=>$voa[\'object_id\'],\'cid\'=>$voa[\'term_id\']))}"> <img src="__ROOT__/data/upload/{$smeta.thumb}"/>
            <p>{$voa.post_title }</p>
            </a> </li>
        </foreach>
      </ul>
     </div>
  </div>
  <div class="clear"></div>
  <div>
  <div class="fyabc">{$termsb.page}</div>    //分页样式: 上一页 1 2 3 下一页
  </div>
View Code

li、div的css样式

.fyabc li
{
    float:left;
    margin-left:10px;    
}
.fyabc
{
    float:left;
    margin-left:550px;
}
View Code

3、$terms=sp_sql_posts_paged_bycatid($voxx[\'term_id\'],$tag,2); //\'2\'是指从每一个子类栏目下取两篇文章

 同sp_sql_posts_paged_bycatid($cid,$tag,$pagesize,$pagetpl):

sp_sql_posts_paged_bycatid($cid,$tag,$pagesize,$pagetpl)功能:

根据分类文章分类ID 获取该分类下所有文章(包含子分类中文章),已经分页,调用方式同sp_sql_posts_paged




参数:

$cid:分类id

$tag:查询标签,

以字符串方式传入,例:"order:post_date desc,listorder desc;"field:调用post指定字段,如(id,post_title...) 默认全部

;limit:数据条数,默认值为10,可以指定从第几条开始,如3,8(表示共调用8条,从第3条开始)

order:推荐方式(post_date) (desc/asc/rand())




$pagesize:每页显示文章数

$pagetpl:分页模板,{first}{prev}{list}{next}{last}
View Code

四、导航高亮显示方法(一级可用,二级以下不可用,)

1、themes/simplebootx/Public/nav.html

<div class="logoandnav">
  <div class="left">
    <div class="logo"> <img src="__TMPL__Public/assets/images/logo.png"> </div>
    <div class="sitetitle">
      <p>{$site_seo_title}</p>
      <php>
        $posts=sp_sql_posts(\'cid:7;field:post_keywords;order:listorder asc\');
      </php>
      <span>{$posts[0][\'post_keywords\']}</span> </div>
  </div>
  <div class="right">
  //生成导航的thinkcmf代码,导航开始
    <?php
$effected_id="main-nav";
$filetpl="<a href=\'\\$href\' target=\'\\$target\'>\\$label</a>";
$foldertpl="<a href=\'\\$href\' target=\'\\$target\' class=\'dropdown-toggle\' data-toggle=\'dropdown\'>\\$label <b class=\'caret\'></b></a>";
$dropdown=\'dropdown\';
$ul_class="dropdown-menu";
$li_class="" ;
$style="nav";
$showlevel=6;
echo sp_get_menu("main",$effected_id,$filetpl,$foldertpl,$ul_class,$li_class,$style,$showlevel,$dropdown);
?>
    //生成导航结束
  </div>
</div>
<div class="clear"></div>
</div>
<!--banner-->
//以下为thinkcmf大图轮播
<div class="banner" id="banner">
<php>
$home_slides=sp_getslide("portal_index");
</php>
<foreach name="home_slides" item="vo">
<div class="banner-item"> 
    <img src="{:sp_get_asset_upload_path($vo[\'slide_pic\'])}" alt=""> 
</div>
</foreach>
<div class="banner_dl_room">
  <div id="banner_dl"></div>
</div>        
View Code

2.themes/simplebootx/Public/scripts.html

/*导航效果开始*/
gl();
var num=0;
function gl()
{
    var myNav = $(".logoandnav .right li a"),i;
    for(i=0;i<myNav.length;i++)
    {
        var links =myNav.eq(i).attr("href"),myURL =document.URL;
        if(myURL.indexOf(links) != -1) 
        {
            myNav.eq(i).parent().addClass("cur");
        }
    }
}
$(".logoandnav .right").mouseenter(function(e) {
    $(this).children("ul").children("li").removeClass("cur");
}).mouseleave(function(){
    gl();
});
/*导航效果结束*/
View Code

五、添加视频

 1、把下载到的播放器放到__TMPL__/Public/assets底下

2、在head.html里面引入js文件

3、index.html

<div class="left">
       <div class="video" id="CuPlayer" ></div>    //给视频定一个外边框,且在js中也要用到class和id
        <php> 
        $video=sp_sql_posts(\'cid:18;field:post_source,smeta;order:listorder asc\'); 
        </php>     
        <foreach name="video" item="vodio"> 
            <php>$smeta=json_decode($vodio[\'smeta\'],true);</php>
        <script type="text/javascript">
            var so = new SWFObject("__TMPL__Public/assets/video/player/player.swf","ply","363","248","9","#000000");
            so.addParam("allowfullscreen","true");
            so.addParam("allowscriptaccess","always");
            so.addParam("wmode","opaque");
            so.addParam("quality","high");
            so.addParam("salign","lt");
            so.addVariable("JcScpAutoPlay","no");//是否自动播放,默认Yes 
            //播放器配置文件-----------------------------
            so.addVariable("JcScpFile","__TMPL__Public/assets/video/player/CuSunV3set.xml");//加载xml后辍的配置文件
            so.addVariable("JcScpVideoPath","__TMPL__Public/assets/video/<?php echo $vodio[\'post_source\'] ?>"); //视频地址,在后台来源里面(post_source)只写入视频的名称,如(aa.mp4),这种方法可以读到完整的视频路径
            so.addVariable("JcScpImg","{:sp_get_asset_upload_path($smeta[\'thumb\'])}");//视频图片、读取视频缩略图 
            so.write("CuPlayer");
        </script>
          </foreach>
      </div>
View Code

 

 

________

以上是关于ThinkCmfX模板常量的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段(vue主模板)

Eclipse 中的通用代码片段或模板

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段