對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類寫的太複雜,腦容量小的根本就看不懂啊)
相關文章
- Finecms模板標籤呼叫小結方便快速入門
- 關於 Vue webpack 模板的一些改造VueWeb
- 確定性函式改造sql函式SQL
- 使用Java8改造出來的模板方法真的是yydsJava
- 對拍模板
- mysql遷移到greenplum sql改造總結MySql
- beego 模板中對變數的對比Go變數
- 對上次的自動掃描進行改造
- 敏捷建模對統一過程的改造實踐敏捷
- [提問交流]對onethink 中 獨立模型的改造模型
- 逆序對的數量(歸併排序模板)排序
- 對傳統應用進行容器化改造
- Spark SQL:4.對Spark SQL的理解SparkSQL
- Oracle SQL對錶的操作OracleSQL
- SQL Server 2005中的模板引數的利用方法SQLServer
- 對.net系統架構改造的一點經驗和教訓架構
- 反對SQL與捍衛SQL的論戰SQL
- 聊聊elasticsearch7.8的模板和動態對映Elasticsearch
- Presto改造REST
- spritecow改造
- MyBatis對動態SQL的支援MyBatisSQL
- sql對於字串的處理SQL字串
- ms sql server儲存過程目前使用模板SQLServer儲存過程
- 麥當勞的AI改造計劃AI
- LPDMvvmKit 系列之 UITableView 的改造MVVMUIView
- Sql Server系列:Microsoft SQL Server Management Studio模板資源管理器SQLServerROS
- 對含distinct操作的SQL的優化SQL優化
- 如何寫一對多分頁的SQLSQL
- sql server對於日期的處理SQLServer
- 檢視sql對cpu 的開銷SQL
- SQL與MongoDB的詳細對比SQLMongoDB
- 新增欄位對SQL的影響SQL
- 織夢某個頁面對應的模板檔案分析
- 談一談我對‘模板方法’設計模式的理解(Template)設計模式
- FIneCMS /dayrui/libraries/Chart/ofc_upload_image.php Arbitrary File Upload VulUIPHP
- C#模擬C++模板特化對型別的值的支援C#C++型別
- 使用PHPWord對Word檔案做模板替換PHP
- INDEX建立方式對SQL的影響IndexSQL