迅睿CMS框架是一款PHP8高性能·簡單易用的CMS開源開發框架,基于MIT開源許可協議發布,免費且不限制商業使用,是免費開源的產品,以萬端互聯為設計理念,支持的微信公眾號、小程序、APP客戶端、移動端網站、PC網站等多終端式管理系統。
聯系官方銷售客服
1835022288
028-61286886
目的實現自定義內容頁url
函數代碼寫好,如下:
前臺url解析出來,內容頁鏈接也實現了標題轉拼音
最后問題來了,偽靜態規則不知道怎么寫。求助大神~
你這個函數需要優化,title已經存在于data,為什么還要查詢一次,多此一舉了
回復@平平
是的我也注意到了~ 多查一次數據庫,這個不影響。
問題是偽靜態規則不知道該怎么寫?
這個偽靜態沒辦法直接查詢,因為wang.....kan這幾個字符并沒儲存到數據庫,就沒辦法直接查詢了,只能這樣辦,把數據庫記錄全部查詢出來,再循環遍歷,然后一個個的對比title的配音字符,比較消耗資源,數據一旦多了,訪問相當緩慢
我建議的方案是 專門建一個自定義字段來儲存wang...kan這幾個字符,然后再一次性查詢這幾個字符的記錄
回復@易學習
如果是新建一個字段來做url偽靜態,類似{dirname}這樣的、 個人覺得官方出這個自定義函數方法就有點多余了~
感覺要用到Routes.php,目前關于自定義函數url這一塊文檔資料少。
感謝回復~
我知道怎么做了,你用了自定義函數,這就好辦了,改進一下自定義函數就行,解析規則也需要改一下配置,不難
分享下
1、這里需要改進
在return之前 加一句 \Phpcmf\Service::L("L")->set_file("xs_news_".$pinyin, $data['id'], "xs_news");
2、這個是對的,可以這樣寫
3、打開news模塊文件dayrui/App/News/Controllers/Show.php
<?php namespace Phpcmf\Controllers; /** * 二次開發時可以修改本文件,不影響升級覆蓋 */ class Show extends \Phpcmf\Home\Module { public function index() { $this->_module_init(); $id = \Phpcmf\Service::L('Input')->get('id'); if ($cid = \Phpcmf\Service::L("L")->get_file("xs_news_".$id , "xs_news")) { $id = $cid; } $this->_Show( (int)$id, [ 'field' => dr_safe_replace(\Phpcmf\Service::L('Input')->get('field')), 'value' => dr_safe_replace(\Phpcmf\Service::L('Input')->get('value')), ], max(1, (int)\Phpcmf\Service::L('Input')->get('page')) ); } public function time() { $this->_module_init(); $this->_MyShow( 'time', (int)\Phpcmf\Service::L('Input')->get('id'), max(1, (int)\Phpcmf\Service::L('Input')->get('page')) ); } public function recycle() { $this->_module_init(); $this->_MyShow( 'recycle', (int)\Phpcmf\Service::L('Input')->get('id'), max(1, (int)\Phpcmf\Service::L('Input')->get('page')) ); } public function draft() { $this->_module_init(); $this->_MyShow( 'draft', (int)\Phpcmf\Service::L('Input')->get('id'), max(1, (int)\Phpcmf\Service::L('Input')->get('page')) ); } public function verify() { $this->_module_init(); $this->_MyShow( 'verify', (int)\Phpcmf\Service::L('Input')->get('id'), max(1, (int)\Phpcmf\Service::L('Input')->get('page')) ); } }
筆誤 \Phpcmf\Service::L("L")改成 \Phpcmf\Service::L("cache")
回復@黃老邪
自定義函數
News控制器Show.php文件
偽靜態規則
調試再三還是
樓上可以,和我的思路差不多
問題還是在偽靜態這里
一個是id一個是拼音 不相等了
所以url沒用上這一條規則,傳不了參數值~
修改這個文件/dayrui/Core/Controllers/Show.php 問題解決~
你這個函數需要優化,title已經存在于data,為什么還要查詢一次,多此一舉了
回復@平平
是的我也注意到了~ 多查一次數據庫,這個不影響。
問題是偽靜態規則不知道該怎么寫?
這個偽靜態沒辦法直接查詢,因為wang.....kan這幾個字符并沒儲存到數據庫,就沒辦法直接查詢了,只能這樣辦,把數據庫記錄全部查詢出來,再循環遍歷,然后一個個的對比title的配音字符,比較消耗資源,數據一旦多了,訪問相當緩慢
我建議的方案是 專門建一個自定義字段來儲存wang...kan這幾個字符,然后再一次性查詢這幾個字符的記錄
回復@易學習
如果是新建一個字段來做url偽靜態,類似{dirname}這樣的、 個人覺得官方出這個自定義函數方法就有點多余了~
感覺要用到Routes.php,目前關于自定義函數url這一塊文檔資料少。
感謝回復~
我知道怎么做了,你用了自定義函數,這就好辦了,改進一下自定義函數就行,解析規則也需要改一下配置,不難
回復@易學習
分享下
1、這里需要改進
在return之前 加一句 \Phpcmf\Service::L("L")->set_file("xs_news_".$pinyin, $data['id'], "xs_news");
2、這個是對的,可以這樣寫
3、打開news模塊文件dayrui/App/News/Controllers/Show.php
筆誤 \Phpcmf\Service::L("L")改成 \Phpcmf\Service::L("cache")
回復@黃老邪
自定義函數
News控制器Show.php文件
偽靜態規則
調試再三還是
樓上可以,和我的思路差不多
問題還是在偽靜態這里
一個是id一個是拼音 不相等了
所以url沒用上這一條規則,傳不了參數值~
修改這個文件/dayrui/Core/Controllers/Show.php 問題解決~