模版体系
文章分页:

依照框架自身模版系统特点,建议在生成页面时采用三级层级的结构:

第一层:页面框架

也就是应用所有页面都会包含的外层部分,一般情况下就是页面基本头属性,页面导航,结尾版权,以及通用脚本等几个部分,框架建议基础基础页面模版结构如下:

<!DOCTYPE html>  
<html lang="zh-CN">  
<head>  
<title><!--web_title--></title>  
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">  
<meta http-equiv="windows-Target" content="_top" />  
<meta http-equiv="Content-Type" content="text/html; charset=<!--charset-->" />  
<meta name="keywords" content="<!--page_keywords-->" />  
<meta name="description" content="<!--page_description-->" />  
<base href="<!--path_root-->" />  
<link rel="Shortcut Icon" href="favicon.ico" />  
<!--page_start-->  
<script type="application/javascript">global.root='<!--path_root-->';</script>  
</head>  
<body>  
<header>页面导航</header>  
<div>  
    <!--main-->  
</div>  
<footer>页尾版权</footer>  
<!--page_end-->  
</body>  
</html>

可以看到代码中有很多模版变量标签,框架会自动将这些标签根据设置信息和应用参数替换为对应的内容,其中,有几个变量需要着重说明:

  • <!--page_start--><!--page_end--> 这两个标签对应页面内容钩子,通过 $mystep->setAddedContent(“start”, $content)$mystep->setAddedContent(“end”, $content) 方法添加的内容(可多次累计添加),都会显示在对应的位置。
  • <!--path_root--> 为框架相对于网站根目录的路径,本情况主要针对框架不位于域名根目录的情况,非必需。
  • <!--main--> 是最关键的项目,即子模版解析的结果代码将用于替换这个标签,虽然可以根据需要设置多个子模版代码替代标签,但是一般情况下仅单独出现此标签。

其中,页面导航页尾版权是象征性的展位字符,可根据具体需要,同时模版中的循环、判断等标签也同样适用。

 

第二层:页面内容

也就是所显示页面的主体内容,一般情况下用于替换上一层中 <!--main--> 代码部分,本层内容是页面的主要部分,同时也是最复杂的部分,里面多由循环、判断和自定义标签组成,示例如下:

<div class="container-fluid">  
    <div class="row">  
        <div class="col-8">  
            <div class="mb-3">  
                <div class="text-center">  
                    <h4><!--record_subject--></h4>  
                    <h7 class="text-secondary border-top">来源:<!--record_original--> &nbsp; | &nbsp; 时间:<!--record_add_date--> &nbsp; | &nbsp; 浏览:<!--record_views--></h7>  
                </div>  
                <div id="content" class="py-3">  
                    <!--record_content-->  
                </div>  
                <div class="row px-3">  
                    文章标签:  
                    <!--loop:start key="tag"-->  
                    <a class="mr-3" href="<!--tag_link-->"><!--tag_name--></a>  
                    <!--loop:end-->  
                </div>  
            </div>  
        </div>  
        <div class="col-4">  
            <div class="card">  
                <div class="card-header">  
                    <h5 class="card-title m-0">最新更新</h5>  
                </div>  
                <div class="card-body">  
                    <!--news limit="10" loop="10" order="news_id desc"-->  
                </div>  
            </div>  
        </div>  
    </div>  
</div>

以上代码为文章内容页的节选,其中 <!--record_[para_name]--> 系列模版标签为通过 $tpl->assign('record', $recordset) 的模式,将从数据库中查询出的文章内容结果集直接批量赋值。loop标签为通过循环,依次将文件标签显示在页面中。最后就是 自定义标签 <!--news limit="10" loop="10" order="news_id desc"--> ,此标签就是模版的第三层结构。

 

第三层:扩展标签

模版的第三层结构是模版的子模块,用于在模版中反复出现,解析模式基本一致,只要传入不同的参数就可以生成目标内容的,或者通过插件为应用结合特定功能添加页面显示。具体使用方法可在页面模版栏目的扩展标签章节查看详细说明。需要再次提示一下以下几点注意:

  1. 扩展标签的语法模式属于主模版的简化,将循环等结构的属性直接在扩展标签中体现,并且可以设置更多项目,不再出现在对应的子模版标签中,具体模式不完全一致;
  2. 标签属性值可为固定值,也可以为全局变量(便于动态设置属性),但是务必要用半角单引号引用;
  3. 扩展标签模版与当前应用模版同在一个目录,建议文件名设定为 “block_[标签名]_[模式名].tpl”的模式以便于管理。

 

上一篇:脚本加载
下一篇:缓存系统