情況描述:
共享模塊;
模塊內容自定義字段添加一條:bianhao
有5個分類;
每個分類下都會發(fā)大量的文章內容,并且【部分文章內容的】 bianhao 自定義文本字段的填充數(shù)據都是一樣的。
前臺內容頁偽靜態(tài)URL 規(guī)則格式是:/欄目目錄名稱/{bianhao}.html;
假設,5個分類的分類目錄名稱分別為:lanmu_1、lanmu_2 至 lanmu_5,我現(xiàn)在分別給這5個分類,每個分類添加一篇文章,且每個文章的bianhao這個自定義字段填充數(shù)據都是:A111
發(fā)布文章并填充bianhao這個自定義字段的后,前臺這幾篇文章的URL展現(xiàn)形式是:
/lanmu_1/A111.html /lanmu_2/A111.html /lanmu_3/A111.html ------------ /lanmu_5/A111.html
問題:
官方也有類似教程,我試了下,訪問第一個分類下的 /lanmu_1/A111.html 這篇文章,是可以正常顯示內容,
但是訪問 /lanmu_2/A111.html 時,
標題和內容依然顯示的是第一個分類下那篇文章的內容。
需求:
要根據上面的情況描述和遇到問題,寫偽靜態(tài)規(guī)則實現(xiàn)。
用這個思路來做http://www.apdwn.com/doc/659.html
1、定義函數(shù)返回url規(guī)則代碼
函數(shù)文件是config/custom.php,定義個名字,隨便自己取,xxxurl
function xxxurl($data) { $cat=dr_cat_value("這里填寫模塊目錄例如news", $data['catid']); $url = "/".$cat['dirname']."/".$data['bianhao'].".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)}打開config/rewrite.php,加入代碼
// 判斷url是否是來自自定義函數(shù) if (CMSURI) { $myfile = WRITEPATH.'myid/'.md5(CMSURI).'.txt'; if (is_file($myfile)) { $id = file_get_contents($myfile); if ($id) { return [ CMSURI => 'index.php?s=這里填寫模塊目錄例如news&c=show&id='.$id, // 這里寫內容的地址 ]; } } }--------題外話
你這種需求有個弊端,就是 lanmu_1下面萬一出現(xiàn)多篇文章都是A111,就沒辦法了
--------------
開源是一種精神,但不是義務,幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復@官方研發(fā)技術-羅老師
有個問題:
"(.*)" => "index.php?s=istock&c=show&field=gpdma&value=$1",
//"([A-za-z0-9 \-\_]+)\/([0-9]+).html" => "index.php?s=istock&c=show&field=gpdma&value=$1",
rewrite.php 里的規(guī)則,應該用上面2個中的哪個?
回復@官方研發(fā)技術-羅老師
按照規(guī)則設置后,現(xiàn)在 訪問欄目 URL 也報錯了,提示 欄目(qgqp)不存在
回復@拋異常 兄弟,麻煩給看下可以嗎?
開源是一種精神,但不是義務,幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問題!
回復@官方研發(fā)技術-羅老師 按照您的方法設置了,內容頁 404
回復@官方研發(fā)技術-羅老師 不好意思,我忘記更新URL緩存了。目前可以了。謝謝