zoukankan      html  css  js  c++  java
  • Discuz!模板解析语法

    <!--{eval  echo autostart("2323232323"); }-->
    PHP中使用template()函数显示已存在模板
    在Discuz!程序执行中可以通过 include template('模板文件夹/模板名称无后缀');的方式进行解析,前提是您使用的Discuz!程序已经包含了 ./source/function/function_core.php 的函数库
    PHP格式的模板
    [X2.5新增内容]
    
    从 Discuz! X2.5 开始,模板文件支持 PHP 扩展名的格式,你可以创建例如 ./template/mytext/common/forum/discuz.php 文件,PHP 的模板文件中你只需在原有 HTM 的模板文件开头添加一行代码即可,如:
    
    <?php exit;?>
    <?php echo '你不能看此模板的内容';exit;?>
    PHP 的模板文件的模板数据内容将从文件的第二行开始解析。PHP 和 HTM 模板文件同时存在时,会优先解析 PHP 模板文件
    
    模板语法
    变量输出
    输出一个变量的值,等同于php的 <?php echo $my_var;?>,花括号可以省略但不建议去掉。
    {$my_var}
    条件判断
    通过if判断流程分支
    如果写在HTML表单元素中,可以省去使代码更清晰易读,如{if $my_var}xxx{/if}
    <!--{if $my_var}-->
        任意html语句
    <!--{/if}-->
    带有多条件的if写法,可使用PHP常规判断中的按位运算符等
    <!--{if $my_var && ($my_var2 & 1 || $my_var3 == 3)}-->
        任意html语句
    <!--{/if}-->
    带有分支条件的if写法
    <!--{if $my_var == 1}-->
        变量为1
    <!--{elseif $my_var == 2}-->
        变量为2
    <!--{else}-->
        其他情况
    <!--{/if}-->
    循环输出
    带有数组键的循环写法
    <!--{loop $my_arr $key $val}-->
        循环输出的HTML语句
    <!--{/loop}-->
    没有数组键的循环写法
    <!--{loop $my_arr $val}-->
    模板嵌套
    将被嵌套模板内容解析为PHP语句并合并入本模板中的写法
    common/header 对应某个模板套系中的common目录的header.htm模板文件
    <!--{subtemplate common/header}-->
    程序运行时include嵌套模板内容
    <!--{template common/header}-->
    插件钩子
    在模板中设立插件钩子 
    hook为关键词,意为将index_top定义为钩子
    <!--{hook/index_top}-->
    变量数组嵌套使用
    条件判断或变量输出时用到
    <!--{if $my_arr[$my_var]}-->
    <!--{if $my_arr[0]}-->
    <!--{if $my_arr[$my_arr2[$my_var]]}-->
    PHP解析
    在模板中使用PHP语句可以通过{eval}进行
    <!--{eval $my_var = 1;}-->
    <!--{eval echo $my_var;}-->
    <!--{eval $my_arr = array(1, 2, 3);}-->
    <!--{eval print_r($my_arr);}-->
    <!--{eval output();}-->
    <!--{eval exit();}-->
    多行PHP解析(Discuz! X3 新增)
    <!--{eval}-->
    ...PHP语句...
    <!--{/eval}-->
    语言包使用
    在模板中可以通过下面的代码来使用语言包中的某个值
    {lang index_yesterday}
    其中语言包在 ./source/language/目录下,以PHP数组形式存放
    插件模板和语言包的设计
    综合示例
    综合示例题目1:php程序中创建一个数组并在模板中循环,并且根据模板显示奇数行输出不同的CSS样式
    PHP端代码:
    此PHP代码省略了包含 class_core.php 以及初始化$_G变量,详细请查看:
    <?php
        /*此处省略include class_core.php*/
        $my_arr = array('one', 'two', 'three', 'four');
        include template('forum/mytest'); //使用自定义模板套系中的forum目录的mytest.htm
    ?>
    模板代码:
        <!--{loop $my_arr $key $val}-->
            <div {if $key % 2 == 1}style="background: #ccc;"{/if}>
                这里是value值:{$val}
            </div>
        <!--{/loop}-->
    综合示例题目2:结合风格常量与javascript,动态改变模板页面的字体大小,并引用默认模板的header和footer
    默认风格中,小号字体大小 {SMFONTSIZE}为0.83em,主题列表字体大小 {THREADTITLEFONTSIZE}为14px,在Disucz!X2中使用时,需要使用G[′style′][′SMFONTSIZE′]和_G['style']['THREADTITLEFONTSIZE']。
    $('test1')此写法是因为header中已经加载了common.js全局javascript脚本文件,可以通过简写来达到document.getElementById('test1')的效果
    ./template/mytest/forum/mytest.htm模板代码如下
    <!--{subtemplate common/header}-->
    <div id="test1" style="font-size:{$_G['style']['FONTSIZE']};">
        这是一个改变字体的实例
    </div>
    <span onclick="changefontsize('{$_G['style']['SMFONTSIZE']}');">改变小号字</span><span onclick="changefontsize('{$_G['style']['THREADTITLEFONTSIZE']}');">改变为大号字</span>
    <script type="text/javascript">
    function changefontsize(size) {
        $('test1').style.fontSize = size;
    }
    </script>
    <!--{subtemplate common/footer}-->
    

      

  • 相关阅读:
    svn的revert、checkout、clean up、setting
    jsonp跨域原理
    王亚伟北大演讲:一切通胀问题都是货币问题(全文)
    string <-> wstring
    点在多边形内 经典算法(转)
    不可不表的OSG智能指针之强指针与弱指针 《转载》
    一个shell脚本给客户使用服务器生成一个序列号
    Rsync(远程同步): linux中Rsync命令的实际示例
    一个 rsync同步文件脚本
    用UltraISO制作CentOS U盘安装盘
  • 原文地址:https://www.cnblogs.com/jthb/p/5159996.html
Copyright © 2011-2022 走看看