Home > Backend Development > PHP Tutorial > DEDE模板中怎么运行php脚本和php变量的使用

DEDE模板中怎么运行php脚本和php变量的使用

WBOY
Release: 2016-06-13 12:37:24
Original
774 people have browsed it

DEDE模板中如何运行php脚本和php变量的使用

在使用dede模板的时候,经常会需要直接对dede数据库的底层字段进行处理,如果dede中没有相应的函数的时候,往往就需要我们想办法来处理了。

举例:我想取出数据表addonimages中的某一条记录的typeid这个字段,然后在浏览器中输出typeid乘以2的结果。(注:这里的typeid值为6)

起初我是这么写的:

{dede:loop table='dede_addonimages' if='aid=94'}
[field:typeid runphp='yes']
echo @me*2;
[/field:typeid]
{/dede:loop}
Copy after login

浏览器输出结果是:12   6

这里多出一个6,我认为是原因是[field:typeid]会先执行内部的php语句,当运行到[/field:typeid]这一行时,它会调用内部的函数,直接返回[field:typeid]底层模板的内容,如果想要直接输出12的话,只能在/include/extend.fuc.php 这个文件中添加自定义的函数。

function abc($val){
    return $val*2;
}
Copy after login
然后模板改写为:

{dede:loop table='dede_addonimages' if='aid=94'}
[field:typeid function="abc(@me)" /]
{/dede:loop}
Copy after login
输出结果为:12

另外要注意的是,同一模板中的两段php代码里面的变量不通用,也就是说一段php代码中的某一变量,它的作用域只限于该短代码。

例:

{dede:loop table='dede_addonimages' if='aid=94'}
    [field:typeid runphp='yes']
    echo $a=@me*2;
    [/field:typeid]
{/dede:loop}
{dede:php}var_dump($a);{/dede:php}
Copy after login
输出结果为:12  6  NULL  

如果想在后面的php脚本中使用上面php脚本中的变量,我想出一个临时性的解决方法,即用全局变量来解决这个问题。

{dede:loop table='dede_addonimages' if='aid=94'}
    [field:typeid runphp='yes']
    $GLOBALS['a']=@me*2;
    [/field:typeid]
{/dede:loop}
{dede:php}echo $GLOBALS['a'];{/dede:php}
Copy after login
输出结果为:6  12 (因为[field:typeid]中没有echo,所以直接输出6)






Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template