对finecms模板的改造sql

对于finecms的模板中不能愉快地写sql语句,好麻烦,对于手册上写的语法,表示脑容量不够没看懂,索性直接改造一下,模板的引擎吧

   protected function _listdata($param)
    {


        if(strpos($param,"|"))
        {
            $rule  =  '#\|.+?\|#i';
            preg_match($rule,$param,$result);
            if(!$result) return array();

            $sql=substr($result[0],1,-1);
            $dbcache=100;
            $db = Controller::model('content');
            $data = $db->execute($sql, true, $dbcache);
           // var_dump(array(  'result' => $data, 'sql' => $sql, 'total' => isset($total) ? $total : count($data)));
            return array(  'result' => $data, 'sql' => $sql, 'total' => isset($total) ? $total : count($data));
        }

//以下是原来的代码
        $_param = explode(' ', $param);
        $param = array();

这样的话,就可以愉快地写sql语句了

下面写了个demo,大家可以试下

{list  sql=|select * from  fn_position_data   RIGHT JOIN   fn_content_1 ON `fn_content_1`.`id`=`fn_position_data`.`contentid`  where posid=6   order by fn_position_data.listorder asc| }

	<a href="{$t['url']}" title="{$t['title']}"><span>{date('y-m-d',$t['inputtime'])}</span>
{/list}

但是有一个问题,如果看你的模板就可以直接看到sql语句了,另外了没有对sql语句进行过滤,所以要进一步处理一下,因为这个是临时应付一下,所以暂时先这样


对于模板容易被别人看到的问题,可行的解决办法是这样的,把模板文件的扩展名改为.php ,并在解析模板的时候,去掉php标记就可以了

所以做了以下几点改动

第一,把模板文件的扩展名改为php,并在文件的头部加入了这样一句话<?php exit();?>

第二,修改模板的解析文件,主要的改动


	/**
	 * 获取视图文件的路径
	 */
	protected function get_view_file($file_name) {
		//return $this->view_dir . $file_name . ((substr($file_name, strrpos($file_name, '.')) == '.html') ? '' : '.html');
		return $this->view_dir . $file_name . ((substr($file_name, strrpos($file_name, '.')) == '.php') ? '' : '.php');
	}

	/**
	 * 加载视图文件
	 */
	protected function load_view_file($view_file) {
		if (!is_file($view_file)) {
            App::display_error(lang('app-8') . ': ' . $view_file);
        }
		$view_content = file_get_contents($view_file);
        $view_content= substr($view_content, 15);
		return $this->handle_view_file($view_content);
	}

这样就完成了模板的改造问题,这样,别有用心的人浏览模板文件时就会出现空白页面,起到了保护模板的作用


在做这个改动的时候,查看源文件,发现是在dayrui/core/common.php中引入的文件解析类,
如果要兼容其他的模板可以做一个新的解析类来兼容其它模板文件(个人认为原view类写的太复杂,脑容量小的根本就看不懂啊)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值