文档章节

phpcms v9更新栏目缓存的一处小bug修复方法

Echo半拍
 Echo半拍
发布于 2017/01/09 12:30
字数 526
阅读 158
收藏 0

bug的背景:

1、所有栏目内容采取静态页生成;

2、所有栏目采取二级栏目绑定;

3、并非通过后台创建栏目而是直接通过数据库创建栏目记录。

bug的情况:

造成部分栏目页的URL、内容URL更新不正确。不正确的现象是生成二级域名下的下属栏目页时,导航中的栏目地址为二级域名而非二级域名+子栏目英文名。该栏目页中的网页URL也会存在此情况。示例:

栏目A捆绑二级域名 a.xx.com ,栏目A下有子栏目分别是

栏目A1,名称 a1

栏目A2,名称a2

生成栏目A的页面后,栏目A的导航中子栏目的连接都是 a.xx.com 而不是对应的如:

栏目A1,连接 a.xx.com/a1/

栏目A2,连接 a.xx.com/a2/

bug修复方法:

方法1、每个栏目进入设置保存,更新全站缓存、更新栏目缓存(这步更新全站后不需要操作,切不可更新全站缓存前更新栏目缓存);

方法2、打开后台管理文件夹(假定是admin)下的category.php文件,找到以下代码:

/**
* 更新缓存并修复栏目
*/
public function public_cache() {
  $this->repair();
  $this->cache();
  showmessage(L('operation_success'),'?m=admin&c=category&a=init&module=admin&menuid=43');
}

修改为:

/**
* 更新缓存并修复栏目
*/
public function public_cache() {
  //先更新数据库记录到栏目缓存
  $this->cache();
  //执行修复操作
  $this->repair();
  //再更新修复后的数据记录到缓存中
  $this->cache();
  showmessage(L('operation_success'),'?m=admin&c=category&a=init&module=admin&menuid=43');
}

覆盖后,更新栏目缓存即可。

方法3,打开content\classes\url.class.php找到

public function category_url

部分,修改其修复栏目URL的代码。把

$r = $this->categorys[$pid];

改成直接读取数据库的栏目信息记录。这里是调取缓存中的栏目信息的,如果缓存中栏目信息是错误的,这里会照用。

这里就不贴代码了,逻辑思路都提供了。

 

© 著作权归作者所有

Echo半拍

Echo半拍

粉丝 0
博文 6
码字总数 2639
作品 0
其它
技术主管
私信 提问
php的目录结构

phpcms v9框架的目录结构分析 phpcmsv9框架的目录结构分析: 了解v9框架的目录结构,有助于帮助我们快速建立起对v9框架的一个整体认识 打开"mycms"项目,有如下文件和目录 使用协议说明文档、...

名字已被取
2016/03/30
122
0
PHP has xxx Problem

【PHP has encountered a Statck overflow】 描述:PHP遇到堆栈溢出 解决办法: 1、请检查您的 MySQL 帐号是否有相应的权限或者网站更目录是否有相应的匿名来宾权限(iisuser)。 2、检查一下...

English0523
2015/08/31
0
0
phpcms V9修改lists标签(实现调用文章所属栏目及点击数)

phpcms中默认首页是无法调用出文章的点击数,而调用文章所属的栏目名称也很复杂,需要先使用php语句进行数据缓存后才能调用。其实我们可以一步到位,自己添加函数来实现在首页/频道页/列表页...

mysoftsky
2013/08/20
1K
0
Phpcms V9添加网站地图Sitemap静态地图方法(一)

一、新增函数文件sitemap.php,并上传到网站程序目录: phpcms/modules/admin/文件夹下。 文件内容: defined('INPHPCMS') or exit('No permission resources.'); pcbase::loadappclass('adm......

皇冠小丑
2016/04/18
112
0
phpcms v9中模板标签和联动菜单的使用方法详解

pc:content action="position" posid="9" order="id"num="10" cache="3600"} pc标签{pc:content 参数名="参数值"参数名="参数值"参数名="参数值"} {loop $data $k $v} <li><a href="{$v[url]......

皇冠小丑
2016/03/22
112
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
11分钟前
2
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
27分钟前
4
0
IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1

表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面。通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理。在表单中提供了多种输入方式,...

老码农的一亩三分地
28分钟前
2
0
武者Vue

本文转载于:专业的前端网站➼武者Vue 1 - Introduction2 - The Vue Instance3 - Data & Methods4 - Data Binding5 - Events6 - Event Modifiers7 - Keyboard Events8 - Two-Way Data......

前端老手
34分钟前
4
0
uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
44分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部