联系官方销售客服

1835022288

028-61286886

求助 版主:官方研发技术组
自定义字段填充数据做伪静态规则
类型:迅睿CMS 更新时间: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
    Chrome 0
    用这个思路来做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
    Chrome 0
    一楼正解,我也做过类似的url
  • 迅睿粉丝
    #3楼    迅睿粉丝
    2022-10-11 14:50:03
    Chrome 0
    官方研发技术-罗老师 有个问题: "(.*)" => "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
    Chrome 0
    官方研发技术-罗老师 按照规则设置后,现在 访问栏目 URL 也报错了,提示 栏目(qgqp)不存在
  • 迅睿粉丝
    #5楼    迅睿粉丝
    2022-10-11 15:14:13
    Chrome 0
    抛异常 兄弟,麻烦给看下可以吗?
  • 官方研发技术-罗老师
    #6楼    官方研发技术-罗老师
    2022-10-11 15:21:04
    Chrome 0
    我的方法是不需要配置下面的参数,不影响你以前的规则
  • 迅睿粉丝
    #7楼    迅睿粉丝
    2022-10-11 15:31:59
    Chrome 0
    官方研发技术-罗老师 按照您的方法设置了,内容页 404
  • 迅睿粉丝
    #8楼    迅睿粉丝
    2022-10-11 15:33:47
    Chrome 0
    官方研发技术-罗老师 不好意思,我忘记更新URL缓存了。目前可以了。谢谢
  • 迅睿粉丝
    #9楼    迅睿粉丝
    2022-10-11 16:01:19
    Chrome 0
    @官方研发技术-罗老师:非常感谢帮助。