Web_PHP_DedeCMS_如何使sql标签的sql属性能引用其他变量值?

一般在文章页使用sql标签匹配另外一个参数,我们会按照以下这样写,但结果输出为空:
// 根据文章页标题(title变量值)来过滤文章
<pre name="code" class="php">{dede:sql sql="SELECT id,title,description,litpic FROM dede_archives WHERE shorttitle LIKE '%~title~%'"}
  <li><a href='/plus/view.php?aid=[field:id/]'>[field:title/]</a> </li> 
{/dede:sql}


这时,dedecms模板标签默认编译的结果就是SELECT id,title,description,litpic FROM dede_archives WHERE shorttitle LIKE '%~title~%',并没有把当前文章页title变量值传递进来进行过滤。


为实现能传递变量值,我们需要对织梦cms的函数进行以下修改:
$sql = str_replace($conditions[0][$key], "'".addslashes($refObj->Fields[$value])."'", $sql);
修改为(只需把引号去掉就可以实现):
$sql = str_replace($conditions[0][$key], addslashes($refObj->Fields[$value]), $sql);


如果您不想直接修改sql标签,以防之前的sql标签使用受影响,可以复制一份include/taglib/sql.lib.php重命名为likesql.lib.php并将对应代码(如函数名lib_sql,改为lib_likesql)修改,这样我们可以不影响{dede:sql sql=""}标签而用新的{dede:likesql sql=""}来实现模糊搜索。

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值