自定义字段填充数据做伪静态规则

迅睿框架 更新 2022-10-11 16:01:19 迅睿粉丝


情况描述:

共享模块;

模块内容自定义字段添加一条:bianhao

有5个分类;

每个分类下都会发大量的文章内容,并且【部分文章内容的】 bianhao 自定义文本字段的填充数据都是一样的。

前台内容页伪静态URL 规则格式是:/栏目目录名称/{bianhao}.html;

假设,5个分类的分类目录名称分别为:lanmu_1、lanmu_2 至 lanmu_5,我现在分别给这5个分类,每个分类添加一篇文章,且每个文章的bianhao这个自定义字段填充数据都是:A111

发布文章并填充bianhao这个自定义字段的后,前台这几篇文章的URL展现形式是:


/lanmu_1/A111.html
/lanmu_2/A111.html
/lanmu_3/A111.html
------------
/lanmu_5/A111.html



问题:

官方也有类似教程,我试了下,访问第一个分类下的 /lanmu_1/A111.html 这篇文章,是可以正常显示内容,

但是访问 /lanmu_2/A111.html 时,

标题和内容依然显示的是第一个分类下那篇文章的内容。


需求:

要根据上面的情况描述和遇到问题,写伪静态规则实现。





方案

  • 官方研发技术-罗老师 #1 · 2022-10-11 14:26:45
    满意答案
    用这个思路来做https://www.xunruicms.com/doc/659.html

    1、定义函数返回url规则代码

    函数文件是config/custom.php,定义个名字,随便自己取,xxxurl

    function xxxurl($data) {
       $cat=dr_cat_value("这里填写模块目录例如news", $data['catid']);
        $url = "/".$cat['dirname']."/".$data['bianhao'].".html"; // 
        dr_mkdirs(WRITEPATH.'myid/'); // 创建id缓存存储目录
        file_put_contents(WRITEPATH.'myid/'. md5(trim($url, '/')).'.txt', $data['id']); // 将id号存储缓存文件
        return $url; //返回我自己的
    }


    2、在规则里面填写新标签:

    {xxxurl($data)}

    打开config/rewrite.php,加入代码

    // 判断url是否是来自自定义函数
    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下面万一出现多篇文章都是A111,就没办法了--------------
  • 抛异常 #2 · 2022-10-11 14:31:43
    一楼正解,我也做过类似的url
  • 迅睿粉丝 #3 · 2022-10-11 14:50:03
    官方研发技术-罗老师 有个问题: "(.*)" => "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 里的规则,应该用上面2个中的哪个?
  • 迅睿粉丝 #4 · 2022-10-11 14:53:23
    官方研发技术-罗老师 按照规则设置后,现在 访问栏目 URL 也报错了,提示 栏目(qgqp)不存在
  • 迅睿粉丝 #5 · 2022-10-11 15:14:13
    抛异常 兄弟,麻烦给看下可以吗?
  • 官方研发技术-罗老师 #6 · 2022-10-11 15:21:04
    我的方法是不需要配置下面的参数,不影响你以前的规则
  • 迅睿粉丝 #7 · 2022-10-11 15:31:59
    官方研发技术-罗老师 按照您的方法设置了,内容页 404
  • 迅睿粉丝 #8 · 2022-10-11 15:33:47
    官方研发技术-罗老师 不好意思,我忘记更新URL缓存了。目前可以了。谢谢
  • 迅睿粉丝 #9 · 2022-10-11 16:01:19
    @官方研发技术-罗老师:非常感谢帮助。

迅睿系统漏洞

IP138查询
IP138查询(2026-09-02)
转换本地ip地址作用。后台安装/启用插件 Ip_ysb进入「应用 →...
GeoSeo工具箱
GeoSeo工具箱(2026-09-02)
优化城市落地页全选
GEO系统
GEO系统(2026-09-02)
支持最新的ai优化算法 后台增加可控制的站点运营管理
外贸多语言建站
外贸多语言建站(2026-09-02)
修正重复数据传参 增加CLI模式说明
开发者工具
开发者工具(2026-09-02)
增加插件脚手架 增加控制器编写辅助
用户系统
用户系统(2026-09-02)
增强用户列表安全验证,防止个人信息泄露
节日灯笼
节日灯笼(2026-09-01)
新增顶部节日横幅 Banner ,祝福语文字 新增节日特效:Can...
GeoSeo收录宝
GeoSeo收录宝(2026-09-01)
升级 ai智能发布功能 升级 支持8国语言后端设置和前端输出功能 ...