股票合作私募实力操盘手代客理财保赚不亏帐户托收益翻倍

有资源网yoqq.cn
 
 
查看: 140|回复: 0

Discuz x3.x触屏手机版文章链接伪静态调用解决方法

[复制链接]

1857

主题

1874

帖子

6337

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6337
发表于 2019-5-18 20:28:59 | 显示全部楼层 |阅读模式
最近在使用Discuz x3搭建网站,在PC版页面调用文章、帖子的时候,已经遇到了类似的问题,在discuz后台设置了伪静态,但是前端页面显示的依然是动态链接。在PC版页面Discuz diy模块只能调用动态链接,不能调用伪静态链接的解决方法请参考文章:《discuz x3后台模块管理数据调用文章帖子链接显示动态不是伪静态解决方法》、《discuz DIY模块文章、帖子链接不调用伪静态链接,只显示动态链接解决方法》。

现在使用Discuz X3触屏手机版在首页、栏目页、文章页调用文章链接,还是调用的动态的文章链接。这的解决方法和PC版Discuz diy模块调用动态链接解决方法不一样。

首先看下,discuz伪静态设置的规则:

4步discuz伪静态设置


在经过1、2、3、4步的discuz文章伪静态设置之后,将“查看当前的 Rewrite 规则”(我使用的是Linux Nginx服务器,所以选择Nginx Web Server伪静态规则。)

可以说这里的规则是因为有的人PC版discuz伪静态都还没设置好,就像而Discuz手机版需要自己动手改源码中的函数才能调用文章伪静态链接。

接下来就看看Discuz触屏手机版文章伪静态源码修改方法:

找到/source/function/function_portal.php文件,使用编辑器打开function_portal.php并搜索fetch_article_url,会在大概53行找到fetch_article_url函数如下:
然后整个复制在下方新建一个方法名字改掉
//原fetch_article_url函数如下
function fetch_article_url($article) {
        global $_G;
        if(!empty($_G['setting']['makehtml']['flag']) && $article && $article['htmlmade']) {
                if(empty($_G['cache']['portalcategory'])) {
                        loadcache('portalcategory');
                }
                $caturl = '';
                if(!empty($_G['cache']['portalcategory'][$article['catid']])) {
                        $topid = $_G['cache']['portalcategory'][$article['catid']]['topid'];
                        $caturl = $_G['cache']['portalcategory'][$topid]['domain'] ? $_G['cache']['portalcategory'][$topid]['caturl'] : '';
                }
                return $caturl.$article['htmldir'].$article['htmlname'].'.'.$_G['setting']['makehtml']['extendname'];
        }else {
                return 'portal.php?mod=view&aid='.$article['aid'];
        }
}

将上述fetch_article_url函数修改如下:
//修改后的fetch_article_url函数如下
function fetch_article_url($article) {
        global $_G;
        if(!empty($_G['setting']['makehtml']['flag']) && $article && $article['htmlmade']) {
                if(empty($_G['cache']['portalcategory'])) {
                        loadcache('portalcategory');
                }
                $caturl = '';
                if(!empty($_G['cache']['portalcategory'][$article['catid']])) {
                        $topid = $_G['cache']['portalcategory'][$article['catid']]['topid'];
                        $caturl = $_G['cache']['portalcategory'][$topid]['domain'] ? $_G['cache']['portalcategory'][$topid]['caturl'] : '';
                }
                return $caturl.$article['htmldir'].$article['htmlname'].'.'.$_G['setting']['makehtml']['extendname'];
        } elseif($_G['setting']['rewriterule']['portal_article'] == "{id}.html"){//判断是否为设置的伪静态{id}.html,避免手机端首页模块数据调用、栏目页、文章页调用动态链接
                return $article['aid'].".html";
        } else {
                return 'portal.php?mod=view&aid='.$article['aid'];
        }
}


红色部分是新增的PHP代码,关键点是:在discz后台->seo设置->URL伪静态中,已经将门户文章页设置为“{id}.html”,这fetch_article_url函数里判断当$_G['setting']['rewriterule']['portal_article']设置的是{id}.html规则返回的伪静态链接是$article['aid'].".html"。

在discuz后台更新缓存、Discuz模块调用缓存后,在discuz手机版的首页、栏目页、文章页查看文章链接已经是伪静态链接了。

有资源网- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与有资源网立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者有资源网享有帖子相关版权。
3、有资源网管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者 有资源网的同意。
有资源网是一个网络技术交流、游戏交流、娱乐休闲的温馨家园.提供网络最新it资讯、热门电影电视剧、破解软件工具下载_技术和娱乐性的综合型大论坛论资源网
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

快速回复 返回顶部 返回列表