`
hudeyong926
  • 浏览: 2033104 次
  • 来自: 武汉
社区版块
存档分类
最新评论

分离自Discuz模板类和语法

阅读更多

模板原理:当模板没被编译成php文件的时候 第一次读取模板的时候系统会自动进行编译然后再次打开的时候系统就直接读取php文件了

主要功能说明

  1. 去掉了 Discuz 语言包的功能
  2. 移植 Discuz 模板中所有的功能
  3. 添加了自动更新缓存及生命周期功能

在模板中的使用方法跟Discuz的一样,所以就不做多余的说明了,使用前只需要做些简单的设置就可以了

如果需要使用discuz的语言包功能,只要去掉template.class.php第172行注释,并在template.func.php中加上discuz原来的languagevar函数就可以了

//设置语言变量
function languagevar($var) {
	return $GLOBALS['language'][$var] ? $GLOBALS['language'][$var] : “!$var!”;
}

Discuz! 的模板采用近似 PHP 表达式的语法 .

直接输出变量: {$abc}或 {echo $abc}
输出数组中某个变量:{$arr[0]}

在本模板中引用其他的模板: 如我们要包含头部模板文件(header.htm)可以这样写:{subtemplate header}

支持的元素如下:  * <!–{ … }–>

逻辑元素包围符,该符号用于包含条件和循环元素
条件判断
            <!--{if expr1}-->
              statement1
             <!--{elseif expr2}-->
              statement2
             <!--{else}-->
              statement3
             <!--{/if}-->
这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否则当 expr2 为真时,显示模板 statement2 内容,否则显示模板 statement3 的内容。如同其他语言中的条件控制一样,其中 <!–{elseif expr}–> 和 <!–{else} –> 是非必须的。

 

不带下标变量的数组循环
            <!--{loop $array $value}-->
              statement
             <!--{/loop}-->
            相当于 PHP 的数组循环语句:
            foreach($array as $value) {
              statement
             }


带下标变量的数组循环
            <!--{loop $array $key $value}-->
              statement
             <!--{/loop}-->
相当于 PHP 的数组循环语句:
            foreach($array as $key => $value) {
              statement
             }
逻辑元素包围符在 { } 外面包含了 html 的注释符号 <!– –>,除了为了和信息元素相区别外,也方便了使用 Dreamweaver 和 Frontpage 之类工具编辑模板的用户。因逻辑元素会被识别为 html 的注释而不被显示,对于绝大多数用户,逻辑元素中的内容是完全不需要修改的,甚至修改错一个字符就可能引起错误信息和整个系统无法运行。因此通常您在修改模板的时候,不要修改模板的逻辑信息,更不要将逻辑信息内部元素(如 <!–{else}–> 等)的前后位置作以修改,否则可能会导致错误。如果您的模板被不慎修改损坏,请立即用原标准默认模板覆盖,即可恢复。

对于高手而言,实际上外部的 <!– –> 是可以省略不写的,可以用于某些元素在模板中的定位,但强烈建议普通用户不要轻易尝试。
    * { … }
信息元素包围符
o {CONSTANT}
可以引用界面替换变量,其中必须为大写字母,该符号实际的作用是引用 PHP 常量 CONSTANT,因此也可以通过它来引用其他的常量内容。
o {lang variable}
可以在模板中引用语言变量 variable 的内容,语言变量经由 templates.php.lang 中数组 $language 定义。如 {lang post_edit} 的内容在编译模板的时候被替换为 $language['post_edit'] 的内容,简体中文版的意思是“编辑帖子”。
o {template name}
模板嵌入符,为了避免模板的冗长,可以使用本符号来将 name 模板的内容嵌入本模板中(实际上为引用)。

{subtemplate header}    //这种是静态引入, 即把header的代码直接加载在当前的缓存文件上。
{template header}       //这种是动态引入, 会通过include来引入。
o {eval statement}
eval 标签主要是用来在模板中执行php 语法,在eval 后必须紧跟合法的PHP 语法。推荐只在特别必须的时候才使用该结构,因为它会破坏模板的结构和可读性。如 {eval echo ‘template!’;} 实现的功能为 echo ‘template’;

o {LF}

换行符,因为 Discuz! 模板引擎会忽略掉多余的换行(\n),这个符号用来成生需要的 \n。

我们所推荐的模板修改方法:通过普通编辑器手工书写 html 或通过 Dreamweaver 或 Frontpage 修改。但是修改需切记,同一逻辑元素内或嵌套中元素的位置和内容切勿修改,即通常情况下,您不能把 <!–{}–> 包围的内容单独的移动,更不能删除。但是整个最外部逻辑结构是可以移动或删除的。

如果修改后模板所在页面在输出类似如下的错误信息 Parse error: parse error, unexpected ‘}’ in /home/username/forums/forumdata/templates/1_login.tpl.php on line 6,说明模板中出现了无法匹配,或格式错误的逻辑元素,请仔细检查是否有元素不对应,没有结束或嵌套损坏,格式错误的现象,必要时可以恢复原始模板来解决问题。

Discuz! 提供了方便的界面打包程序,前面已对其格式做了介绍,将导出信息的内容粘贴到 系统设置 中 风格方案 中的 导入界面方案中,执行即可。程序会自动解析数据内容,恢复相关的界面设置,自定义替换变量和所需的模板设置。如果被导出界面使用了非默认模板,必须将 ./templates 目录属性设置为 777,以便导入程序自动建立模板记录和文件夹。

定义变量说明

<?exit?>
<!–{eval $i=2}–>
<!–{if $i==1}–>
123
<!–{/if}–>

<!–{block name=”spaceblog” parameter=”notype/1/order/i.dateline,i.lastpost/limit/0,14/cachetime/900 /cachename/newti/tpl/data”}–><!–最新日志以上是调用数据库中的数据 –>
<!–{eval $i=0;}–>
<!–{loop $_SBLOCK['newti'] $value}–>
<!–{if $i % 2 == 0}–>//如果i除以2的余数等于0
<div class=”listbg”><!–{else}–>
<div class=”listbg2″><!–{/if}–>
· [<span class="listA">$value[typename]</span>]<a
class=”listA” href=”$value[url]” title=”$value[subjectall]” target=”_blank”>$value[subject]</a></div>
<!–{eval $i++;}–>
<!–{/loop}–>

<!–{eval for ($i=1; $i<=5; $i++){ }–>

<!–{eval echo “Hello World!<br />”;}–>
<!–{eval}}–>

 
 
分享到:
评论
1 楼 carry0987 2018-03-27  
求大神分離下X3的模板...不然對於PHP7不友好啊...

相关推荐

    分离自Discuz的模板类

    "分离自Discuz的模板类"指的是从Discuz!论坛系统中提取出来的模板处理类,这可能是为了方便开发者在其他项目中独立使用或者进行二次开发。 Discuz! 是一款基于PHP和MySQL的开源社区论坛软件,其强大的功能和灵活性...

    DISCUZ模板类,使用方便

    DISCUZ模板类是DISCUZ框架中的一个重要组成部分,它允许开发者通过简单的PHP语法来控制页面的布局和内容展示。模板类的引入,降低了开发者对HTML和PHP混合编程的难度,提高了代码的可读性和可维护性。通过分离业务...

    Discuz 模板引擎类

    **标题:“Discuz 模板引擎类”** **概述** Discuz! 是一款知名的开源社区论坛软件,其模板引擎是其核心组成部分之一,用于处理和渲染论坛页面。模板引擎允许开发者通过HTML模板来控制和组织论坛的显示逻辑,将...

    Discuz论坛模板制作视频教程

    首先,你需要了解Discuz模板的基本结构。一套完整的模板通常包括HTML文件、CSS样式表、JavaScript文件以及图片资源。HTML文件定义了页面的结构,CSS负责样式设计,JavaScript则用于交互效果。在制作模板时,需要根据...

    Discuz 开发专用模板

    【描述】中的链接(https://blog.csdn.net/meimz/article/details/86654206)指向了一个CSDN博客文章,虽然具体内容无法在当前环境中查看,但通常这类文章会涵盖如何使用和定制Discuz模板的步骤,包括安装、配置、...

    Discuz! 虎气冲天模板

    使用的是Xtemplate模板引擎,它是一种基于PHP的模板语法,允许开发者分离界面与业务逻辑。CSS则用于控制网页的样式,包括颜色、布局和动画效果。开发者需要熟悉这些工具,以便对模板进行个性化定制。 此外,考虑到...

    基于PHP的discuz 地方门户简洁大方风格模板 php版 v1.0.zip

    通常,一个Discuz模板可能包括HTML、CSS、JavaScript文件,以及PHP脚本,用于定义论坛的布局、样式和功能。 基于以上信息,我们可以深入探讨以下几个知识点: 1. **PHP基础知识**:PHP是一种服务器端脚本语言,常...

    Discuz! 3.1.2 商业版

    3.0 的编译模板体系,全部提示信息,均在完全不影响程序效率的前提下,用语言包实现,自 2.0 以来,彻底支持多模板,多语言和多风格.每个模板可使用不同的语言界面,不同的内码设定和不同的风格设置,模板可在线编辑,也可...

    PHP实例开发源码—dz方客模板 php版.zip

    的模板语法和标签系统。 5. **压缩包中的文件132685253742271134**:这是一个具体的文件名,可能包含了DZ方客模板的PHP源代码、CSS样式文件、JavaScript脚本、图片资源或者其他相关文件。这些文件构成了模板的完整...

    discuz bbs(.net)源代码

    7. **模板引擎**:Discuz! 提供了自定义模板的功能,这涉及到模板引擎的使用,如Smarty或自定义的模板引擎。学习这部分代码能帮助理解如何将业务逻辑与视图呈现分离。 8. **并发控制与性能优化**:由于论坛需要处理...

    PHPnew(PHP模板处理引擎) 7.0.rar

    PHPnew是一款PHP类简易式模板处理引擎,整体实现原理源于discuz程序的思想,90%的模板语法均来自discuz的程序仿制,这也将为引擎的简易性做了最足的基础准备。引擎无需配置即可使用,兼容性强,扩展方便,功能更是非常人性...

    基于PHP的Discuz插件Myiframe源码.zip

    论坛中嵌入外部网页或者自定义内容而设计的,其源码中可能涉及到`discuz_plugin`类的继承和使用,以及如何通过钩子系统(hook)来在论坛的特定位置插入自定义的iframe代码。 在分析和学习这个插件源码时,我们需要...

    基于PHP的discuzX3.0高仿得意门户模板 php版.zip

    使用模板引擎来分离视图和逻辑,使得界面设计和程序代码可以独立开发和修改。模板引擎允许开发者使用特定的语法来插入动态数据,如论坛的帖子、用户信息等。 4. **数据库交互**:PHP通过PDO(PHP Data Objects)或...

    PHP实例开发源码—Discuz! UTF-8简体中文版.zip

    的前端界面使用模板引擎进行渲染,允许开发者将逻辑代码与视图分离,提高代码可读性和复用性。通过研究源码,你可以学习到如何编写和应用模板引擎。 6. URL重写:为了提供更友好的URL,Discuz! 实现了URL重写技术...

    Discuz_6.1.0

    ,作为一款历史悠久且广受欢迎的论坛软件,自诞生以来就以其强大的功能和易用性赢得了众多用户的青睐。本次我们聚焦于Discuz! 6.1.0版本,深入探讨其源码结构、功能实现及开发工具的运用,旨在为开发者提供更全面的...

    基于PHP的Discuz! PHP v6.1.0 GBK简体中文版.zip

    了解PHP的基础语法、变量、数据类型、控制结构、函数、类和对象等,是理解和修改Discuz! 源码的前提。 2. **Discuz! 架构解析**:Discuz! 采用 MVC(Model-View-Controller)设计模式,将业务逻辑、数据模型和用户...

    基于PHP的Discuz! XPlus 投票调查.zip

    使用自己的模板引擎来分离业务逻辑和界面展示,开发者需要学习如何编写和修改模板文件,以适应不同的主题风格。 8. **插件接口**:Discuz! 提供了一系列API和钩子(Hooks),允许开发者插入自定义代码,实现插件...

    基于PHP的Discuz!X2.5社区GBKbuild源码.zip

    2. **前端模板**:前端模板使用HTML和CSS构建,通过Smarty模板引擎与后端PHP逻辑分离,便于界面定制和优化。GBK编码在模板文件中用于存储中文文本,确保浏览器能正确渲染。 3. **数据库操作**:Discuz!X2.5使用PHP...

    基于PHP的Discuz网页斗地主插件源码.zip

    6. **模板引擎**:如Smarty,用于分离PHP代码和HTML。 7. **Discuz API**:调用Discuz提供的接口,如用户认证、权限管理等。 8. **安全措施**:防止SQL注入、XSS攻击等。 9. **错误处理和日志记录**:确保程序的稳定...

    Discuz!NT V3.0.0(Bulid090929)安装版源码

    NT 3.0的系统重构消灭了所有重复代码,同时将数据和逻辑层进行了彻底分离,避免增加功能时重复数据方法的可能。官方开发人员表示:虽然本次重构的效果短时间内不明显,但是这次重构将为以后版本增加功能打下坚实的...

Global site tag (gtag.js) - Google Analytics