1.包含文件

使用场景:比如我们在编写网页布局的时候,可能每一个网页的头和脚是相同的,此时如果给每一个网页分别设置,未免太麻烦了。此时就可以使用带包含文件。

首先检查配置文件查看我们的主题目录在哪儿,我们可以在核心配置文件中查看:'DEFAULT_THEME'=>'default',所以我的是在默认主题下。就也是说在:

Home/View/default/User下面。

(1)我们首先在default文件夹下面创建两个文件header.html  /footer.html,分别为:

header.html

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Strict//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
        <html>
        <head>
        <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
        <title><block name="title">在此插入标题</block></title>
        </head>
        <body>

<div id="header">这里是header文件</div>
        <hr/>

footer.html

<hr/>
     <div id="footer">这里是footer文件</div>

</body>
     </html>

 (2)然后在使用的时候分别调用就可以了,别如index.html

  <include file='Public/header' />

成功了
  <include file='Public/footer' />

2.模板继承

  使用上面所述的文件包含方法发现,每一个网页的<title></title>的值是相同的,显然是不合适的。那如何解决呢?这就使用到了模板继承

(1)首先在Public/目录下创建一个basic.html,内容如下(这是基本的网页框架)

  <!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Strict//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
  <html>
  <head>
  <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
  <title><block name="title">在此插入标题</block></title>
  </head>
  <body>
  <include file="Public/header"/><!--将header.html文件内容包含-->

  <block name="main"></block><!--将footer.html文件内容包含-->

  <include file="Public/footer"/>
  </body>
  </html>

(2)此时还需要改变header.html,footer.html的内容(因为基础文件basic.html中已经包含了网页基础公共部分)

header.html

  <div id="header">这里是header文件</div>
  <hr/>

footer.html

  <hr/>
  <div id="footer">这里是footer文件</div>

(3)使用方法index.html/select.html

index.html

<extend name="Public/basic.html">

<block name="title">index的头标题</block>

<block>网页主题内容(即body体中的内容)</block>

  select.html

<extend name="Public/basic.html">

<block name="title">select.html的头标题</block>

<block>网页主题内容(即body体中的内容)</block>

3.模板布局

  ThinkPHP 的模版引擎内置了布局模版功能支持,可以方便实现模版布局以及布局嵌套功能。有三种布局方式:

在PUblic/下面创建一个layout.html文件

<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Strict//EN' 'http://www.w3.org/TR/html4/strict.dtd'>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title>在此插入标题</title>
</head>
<body>
<include file="Public/header"/>

{__CONTENT__}

<include file="Public/footer"/>
</body>
</html>

(1)全局配置方式

a.首先我们需要配置核心配置文件config.php

//开启模版布局功能,并指定基础页
  'LAYOUT_ON'=>true,
  'LAYOUT_NAME'=>'Public/layout',
     b.此时当我们在View/User/下任意新建一个HTML文件时就会使用到这个layout.html网页模板

(2)如果我们不想开启模板配置功能,仅仅在本网页使用默认模板,就可以使用标签模式了

//子模版引入模版基页
  <layout name="Public/layout" />

(3)layout控制布局

这个方法是直接在控制器中使用

  UserController.class.php

  //引入指定基页
  public function index() {
  layout('Public/layout');
  //layout(false); //关闭
  }

thinkphp3.2.3关于模板使用之一二的更多相关文章

  1. Thinkphp3.2中的模板继承

    1:模板继承:   是3.1.2版本添加的一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该在模板布局的上层.模板继承其实并不难理解,就好比 类的继承一样,模板也可以定义一个基础模板( ...

  2. thinkphp3.2中在模板页面使用运算符

    首先要明确的是,ThinkPHP 内置模板引擎支持在模板中使用算术运算符(+.-.*./ 和 %),例子: public function index(){ $x = 1; $y = 2; $z = ...

  3. 解决thinkPHP3.2.3使用Smarty模板后无法使用系统常量问题

    https://blog.csdn.net/u014520745/article/details/52029411 在ThinkPHP/Library/Think/View.class.php 输出模 ...

  4. ThinkPHP3.2.3整合smarty模板(二)

    前言:继ThinkPHP3.2.3整合smarty模板(一)之后,继续来探讨一下tp框架整合smarty模板,看到有人在群上问到怎么使用自定义的常量,今天就具体来谈谈: 一.开发一个项目,必不可少会用 ...

  5. thinkphp3.2.3模板渲染支持三元表达式

    thinkphp3.2.3模板渲染支持三元表达式 {$status?'正常':'错误'} {$info['status']?$info['msg']:$info['error']} 注意:三元运算符中 ...

  6. ThinkPHP3.2.3整合smarty模板(一)

    一.php模板引擎有哪些? 1.1 PHPLIB:一套古老且主流的模板引擎,直接在html中使用PHP变量进行编程: 1.2 Template Blocks:一款轻巧且速度非常快的PHP模板引擎,支持 ...

  7. FreeMarker 一二事 - 静态模板结合spring展示

    freemarker可以脱离web使用 前一篇文章使用了普通的方法 这回说说结合spring pom额外引入这个jar包 <dependency> <groupId>org.s ...

  8. FreeMarker 一二事 - 静态模板的使用与生成

    如今前后端分离,动静分离 使用freemarker实现动静分离,nginx处理静态资源文件,提高效率 加载jar包 <!-- freemarker --> <dependency&g ...

  9. thinkphp3.2.3使用ajax 的一些坑——使用AjaxReturn()后,直接返回null,模板文件不起作用

    从接触thinkphp到今天,填完此坑,必有其他的坑有会冒出来.哎!这个填坑之路我想是没有尽头的了. 最近,需要使用ajax完成一些操作,一开始想Ajax简单啊,不过是一种提交数据的方式,不过是害苦了 ...

随机推荐

  1. [WPF系列]Button 自定义

    A Simple Cross Button for WPF   CREATING MORE COMPLEX BUTTONS IN XAML   WPF Custom Controls - Withou ...

  2. 【原】iphone6来了,我该做点什么(兼容iphone6的方法)

    北京时间2014年9月10日凌晨1点,苹果公司正式发布其新一代产品 iPhone6,相信做webapp开发的同学对它是充满了好奇和等待,也担心它带来各种坑爹,高清的分辨率,升级的retina显示屏,我 ...

  3. QuickHit项目(输出字符串游戏)

    public class leve { private int leveNo; private int strLength; private int strTimes; private int tim ...

  4. 通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败

    错误:“connect timed out.请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接.”这 ...

  5. Objective C中的ARC的修饰符的使用---- 学习笔记九

    #import <Foundation/Foundation.h> @interface Test : NSObject /** * 默认的就是__strong,这里只是做示范,实际使用时 ...

  6. php-简单对称加密算法和字符串与十六进制之间的互转函数

    /** * 简单对称加密算法之加密 * @param String $string 需要加密的字串 * @param String $skey 加密EKY * @return String */fun ...

  7. ReactNative新手学习之路06滚动更新ListView数据的小示例

    本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...

  8. ReactNative新手学习之路01-创建项目开始

    新手学习之路01-创建项目开始 小菜鸟准备学习RN开发,决定写下自己的学习历程,方便其他也想要学习RN的人,后期会持续更新写下自己所有学习经历,一步步从菜鸟成长成业内高手.开发环境准备,本文默认环境已 ...

  9. mybatis的配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  10. 【原】Learning Spark (Python版) 学习笔记(二)----键值对、数据读取与保存、共享特性

    本来应该上周更新的,结果碰上五一,懒癌发作,就推迟了 = =.以后还是要按时完成任务.废话不多说,第四章-第六章主要讲了三个内容:键值对.数据读取与保存与Spark的两个共享特性(累加器和广播变量). ...