TP框架---模板变量使用汇总

一般情况下使用TP框架加载css样式或者js脚本时,需要先定义路径常量
在配置文件中定义加载路径常量

    /* 模板相关配置 */
    'TMPL_PARSE_STRING' => array(
        '__STATIC__' => __ROOT__ . '/Public/static',
        '__ADDONS__' => __ROOT__ . '/Public/' . MODULE_NAME . '/Addons',
        '__IMG__'    => __ROOT__ . '/Public/' . MODULE_NAME . '/images',
        '__CSS__'    => __ROOT__ . '/Public/' . MODULE_NAME . '/css',
        '__JS__'     => __ROOT__ . '/Public/' . MODULE_NAME . '/js',
    ),

1、在模板中使用函数

系统自带的函数,一般在functions.php中

// C函数,获取配置名称
<title>{:C('WEB_SITE_TITLE')}title>
// U函数,获取URL地址
<a class="brand" href="{:U('index/index')}">OneThinka>

自定义函数,一般定义在模块下common下的function.php或者公共模块common下的function.php中

//使用hook函数
{:hook('pageHeader')}

{:ini_get('upload_max_filesize')}===> echo ini_get('upload_max_filesize');?>

{:get_username()}===> echo get_username();?>

{:session('user_auth.username')}===> echo session('user_auth.username');?>

{
    $Think.config.COLOR_STYLE}===> echo (C("COLOR_STYLE")); ?>

{
    $Think.const.PHP_OS}===》 echo (PHP_OS); ?>

// 如果加const,则会默认加上THINK_前缀
{
    $Think.VERSION} ===》 echo (THINK_VERSION); ?>

{
    $_SERVER['SERVER_SOFTWARE']} ===》 echo ($_SERVER['SERVER_SOFTWARE']); ?>

// 如何在模板里获取mysql版本
MYSQL版本
                       $system_info_mysql = M()->query("select version() as v;");
                  {
    $system_info_mysql.0.v}
// 解析后
 $system_info_mysql = M()->query("select version() as v;"); ?>
 echo ($system_info_mysql["0"]["v"]); ?>


// 数组的某个字段使用函数,调用function.php中的get_nav_url方法,并把$nav.url当做参数
"{$nav.url|get_nav_url}" 
// 本函数定义位置 \Application\Home\Common\function.php中
/**
 * 获取导航URL
 * @param  string $url 导航URL
 * @return string      解析或的url
 */
function get_nav_url($url){
     
    switch ($url) {
        case 'http://' === substr($url, 0, 7):
        case '#' === substr($url, 0, 1):
            break;        
        default:
            $url = U($url);
            break;
    }
    return $url;
}

2、自定义标签库
①首先在配置文件config.php中添加

// 预先加载的标签库,库文件定义在\ThinkPHP\Library\OT\TagLib下
    'TAGLIB_PRE_LOAD'     =>    'OT\\TagLib\\Article,OT\\TagLib\\Think',
// 这里使用的nav标签,会调用ThinkPHP\Library\OT\TagLib\Think.class.php里的_nav方法(为什么调用_nav方法,请自行参考Template.class.php)
"nav">
    "nav.pid" value="0">
        
  • "{$nav.url|get_nav_url}" target="_blank_self">{ $nav.title}
  • // _nav方法定义如下 /* 导航列表 */ public function _nav($tag, $content){ $field = empty($tag['field']) ? 'true' : $tag['field']; $tree = empty($tag['tree'])? false : true; $parse = $parse = '; $parse .= '$__NAV__ = M(\'Channel\')->field('.$field.')->where("status=1")->order("sort")->select();'; if($tree){ $parse .= '$__NAV__ = list_to_tree($__NAV__, "id", "pid", "_");'; } $parse .= '?>$tag['name'] .'">'; $parse .= $content; $parse .= ''; return $parse; }

    3、eq标签

    <a href="{$nav.url|get_nav_url}" target="_blank_self">{$nav.title}a>
    // 读取session中的update变量
    <eq name="Think.session.update" value="1">升级<else/>安装eq>a>li>
    
    <eq name="Think.ACTION_NAME" value="mydocument">

    4、defined标签

    type="text" name="db[]" value="{$Think.const.SAE_MYSQL_HOST_M}127.0.0.1">

    5、If标签

    // condition里可以使用函数
    <if condition="is_login()">
    <else/>
    if>
    
    <if condition="$menu['id'] eq $cate_id or $menu['current'] eq 1">class="current"if>

    6、使用widget (W函数)

    TP框架---模板变量使用汇总_第1张图片

    7、U函数(生成url)

    {
        $menu.url|U}
    
    {:U('Install/step1')}
    // 可以传递相应的参数
    "{:U('Article/lists?category='.$cate['name'])}">
    {:U('?id='.$prev['id'])}">
    {:U('index','cate_id='.$nav['id'])}
    {:U('index','cate_id='.$cate_id.'&pid='.$article['id'])}{:U('index',array('pid'=>$pid,'cate_id'=>$cate_id,'model_id'=>$vo))}">
    {:U('article/add',array('cate_id'=>$cate_id,'model_id'=>$vo,'pid'=>I('pid',0),'group_id'=>$group_id))}

    8、标签组合应用

                <div class="breadcrumb">
                    <span>您的位置:span>
                    <assign name="i" value="1" />
                    <foreach name="_nav" item="v" key="k">
                        <if condition="$i eq count($_nav)">
                        <span>{$v}span>
                        <else />
                        <span><a href="{$k}">{$v}a>>span>
                        if>
                        <assign name="i" value="$i+1" />
                    foreach>
                div>

    9、gt标签

    "three_menu['allow_publish']" value="0">

    10、present标签

    <present name="three_menu['_child']">

    ##################################################

    项目应用部分

    1、字符串截取,超过10个字符显示…

  • "{$task.task_name}">{$task.task_name|mb_substr=0,10,'UTF8'} <if condition="mb_strlen($task['task_name']) gt 10">...if>
  • 2、switch…case应用

     <switch name="task['status']" >
        <case value="-1" break='1'>
  • 'warning' id ="{$task['id']}" status = "-1">case> <case value="1">
  • 'being' id ="{$task['id']}" status = "1">case> <case value="2">
  • 'success' id ="{$task['id']}" status = "2">case> <case value="3">
  • 'waitting' id ="{$task['id']}" status = "3">case> <default />
  • 'waitting' id ="{$task['id']}" status = "0"> switch>
  • 你可能感兴趣的:(ThinkPHP框架,框架,模板)