Products
96SEO 2025-07-10 11:46 17
在創(chuàng)建定義URL規(guī)則的時候,畢竟系統(tǒng)自帶的通配符變量有限,如果發(fā)現(xiàn)通配符變量沒法滿足你的實際需求
我們可以使用自定義函數(shù)來做,當然需要有PHP基礎的人才行~
比如,我在模塊內(nèi)容的url中想把標題title字段轉換為拼音,
/news/標題拼音.html
作為url的這種情況,就沒辦法使用默認的通配符了,實現(xiàn)步驟
1、定義函數(shù)返回url規(guī)則代碼
函數(shù)文件是config/custom.php,定義個名字,隨便自己取,xxxurl
function xxxurl($data) {
$py = \Phpcmf\Service::L('pinyin')->result($data['title']); // 把標題轉換拼音
$url = "/news/".$py.".html"; // url規(guī)則:news/pinyin.html
dr_mkdirs(WRITEPATH.'myid/'); // 創(chuàng)建id緩存存儲目錄
file_put_contents(WRITEPATH.'myid/'. md5(trim($url, '/')).'.txt', $data['id']); // 將id號存儲緩存文件
return $url; //返回我自己的
}
2、在規(guī)則里面填寫新標簽:
{xxxurl($data)}
3、然后更新內(nèi)容url地址,使url地址生效
4、編寫偽靜態(tài)解析規(guī)則,因為這是你自己寫的函數(shù),所以無法用系統(tǒng)生成的代碼了
5、打開config/rewrite.php,加入代碼
// 判斷url是否是來自自定義函數(shù)
if (CMSURI) {
$myfile = WRITEPATH.'myid/'.md5(urldecode(CMSURI)).'.txt';
if (is_file($myfile)) {
$id = file_get_contents($myfile);
if ($id) {
return [
CMSURI => 'index.php?c=show&id='.$id, // 這里寫內(nèi)容的地址
];
}
}
}
最終效果:
本文轉自:https://www.xunruicms.com/doc/659.html
以上是以標題的全拼作為url,要想只提取標題首字母的話,需要將result函數(shù)第二個參數(shù)設置為0,完整代碼如下:
function xxxurl($data) {
$py = \Phpcmf\Service::L('pinyin')->result($data['title'],0); // 把標題轉換拼音首字母
$url = "/blogs/".$py.".html";
dr_mkdirs(WRITEPATH.'myid/');
file_put_contents(WRITEPATH.'myid/'. md5(trim($url, '/')).'.txt', $data['id']);
return $url;
}
Demand feedback