联系官方销售客服

1835022288

028-61286886

求助 版主:论坛审计组
内容页链接也实现了标题转拼音,怎么写伪静态规则
类型:迅睿CMS 更新时间:2019-05-13 00:24:34

目的实现自定义内容页url

image.png

image.png

函数代码写好,如下:

image.png

前台url解析出来,内容页链接也实现了标题转拼音

image.png


最后问题来了,伪静态规则不知道怎么写。求助大神~

image.png

回帖
  • 平平
    #1楼    平平
    2019-05-12 19:39:54
    0
    你这个函数需要优化,title已经存在于data,为什么还要查询一次,多此一举了
  • lolian2
    #2楼    lolian2
    2019-05-12 19:46:12
    0
    平平是的我也注意到了~ 多查一次数据库,这个不影响。问题是伪静态规则不知道该怎么写?
  • 易学习
    #3楼    易学习
    2019-05-12 20:28:48
    0

    image.png
    这个伪静态没办法直接查询,因为wang.....kan这几个字符并没储存到数据库,就没办法直接查询了,只能这样办,把数据库记录全部查询出来,再循环遍历,然后一个个的对比title的配音字符,比较消耗资源,数据一旦多了,访问相当缓慢我建议的方案是 专门建一个自定义字段来储存wang...kan这几个字符,然后再一次性查询这几个字符的记录
  • lolian2
    #4楼    lolian2
    2019-05-12 20:37:58
    0
    易学习如果是新建一个字段来做url伪静态,类似{dirname}这样的、 个人觉得官方出这个自定义函数方法就有点多余了~感觉要用到Routes.php,目前关于自定义函数url这一块文档资料少。感谢回复~
  • 易学习
    #5楼    易学习
    2019-05-12 20:51:28
    0
    我知道怎么做了,你用了自定义函数,这就好办了,改进一下自定义函数就行,解析规则也需要改一下配置,不难
  • lolian2
    #6楼    lolian2
    2019-05-12 21:13:51
    0
    易学习分享下
  • 黄老邪
    #7楼    黄老邪
    2019-05-12 21:19:19
    0
    1、这里需要改进
    image.png
    在return之前 加一句 \Phpcmf\Service::L("L")->set_file("xs_news_".$pinyin, $data['id'], "xs_news");2、这个是对的,可以这样写
    image.png
    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'))
            );
        }
    
    }
    满意答案
  • 黄老邪
    #8楼    黄老邪
    2019-05-12 21:21:00
    0
    笔误 \Phpcmf\Service::L("L")改成 \Phpcmf\Service::L("cache")
  • 易学习
    #9楼    易学习
    2019-05-12 22:10:27
    0
    楼上可以,和我的思路差不多
  • lolian2
    #10楼    lolian2
    2019-05-12 22:54:05
    0
    黄老邪自定义函数
    image.png
    News控制器Show.php文件
    image.png
    伪静态规则

    image.png
    调试再三还是
    image.png
  • lolian2
    #11楼    lolian2
    2019-05-12 23:42:00
    0
    问题还是在伪静态这里
    image.png
    一个是id一个是拼音 不相等了所以url没用上这一条规则,传不了参数值~
  • lolian2
    #12楼    lolian2
    2019-05-13 00:23:33
    0
    修改这个文件/dayrui/Core/Controllers/Show.php 问题解决~
  • lolian2
    #13楼    lolian2
    2019-05-13 00:24:34
    0
    @黄老邪:利用缓存的思路很不错~