phpcms v9 栏目伪静态完全自定义为栏目英文目录名
- 1,后台增加url规则,增加后.导航上,或分页号上,会自动替换为静态的样式.类似www.abc.com/news/2/ 2表示页码
- phpcms v9 的后台扩展,url规则,添加两个规则,
- 一个是名称为category的规则,规则的前面的斜线可以去掉,不过可能影响分页问题
- /{$catdir}/|/{$catdir}/{$page}/
- url示例为 www.abc.com/news/
- 一个是名称为show规则
- {$catdir}/{$id}.html|{$catdir}/{$id}_{$page}.html
- 示例为www.abc.com/news/99.html
- 然后,找到想伪静态的栏目,修改.生成html设置,生成Html全设置为否,url规则选择自己刚才设置的.保存,
- 最后更新栏目缓存及批量更新url,不更新无效
- 2,如果为apache的服务器空间,伪静态规则如下,注意,要保存在.htaccess 文件中,并上传到网站根目录中,其它规则自己转换
- RewriteEngine on
- #静态文件以及API目录不需要伪静态
- RewriteRule ^(statics|api|uploadfile)(.*) - [L]
- #栏目页
- RewriteRule ^([0-9A-Za-z_]*)$ index.php?m=content&c=index&a=lists&catdir=$1
- RewriteRule ^([0-9A-Za-z_]*)/$ index.php?m=content&c=index&a=lists&catdir=$1
- RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2
- RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)/$ index.php?m=content&c=index&a=lists&catdir=$1&page=$2
- #上面栏目分页,是完全的字母加数字的形式,如www.abc.com/news/2 ,后面不带其它字符,或加一个/字符,如果服务器伪静态匹配到了"域名/字母/数字/"的组合,则会自动跳转到index.php?m=content&c=index&a=lists&catdir=$1&page=$2这个页面中.所以.前面的规则不可重复,否则会错乱.
- #内容页
- RewriteRule ^([0-9A-Za-z_]*)/([0-9]+)\.html$ index.php?m=content&c=index&a=show&catdir=$1&id=$2
- 3,文件,phpcms\phpcms\modules\content\index.php中
- 搜索
- $catid = intval($_GET['catid']);
- 一共两处,修改为
- if(isset ($_GET['catid'])){
- $catid = intval($_GET['catid']);
- }else{
- $catdir=$_GET['catdir'];
- $s=$this->_getCategoryId($catdir);
- $catid=$s[0][catid];
- }
- 然后,在最下面
- } 这个 大括号的前面增加一个函数,如下
- protected function _getCategoryId($catdir){
- $this->category_db = pc_base::load_model('category_model');
- $result = $this->category_db->select(array('catdir'=>$catdir));
- // print_r($result);
- return $result;
- }
- 4, 打开phpcms\modules\content\classes\url.class.php,找到
- if (!$setting['ishtml']) { //如果不生成静态
- 将下面的:
- $url = str_replace(array('{$catid}', '{$page}'), array($catid, $page), $urlrule);
- if (strpos($urls, '\\')!==false) {
- $url = APP_PATH.str_replace('\\', '/', $urls);
- }
- 整体替换为
- $domain_dir = '';
- if (strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {
- if (preg_match('/^((http|https):\/\/)?([^\/]+)/i', $category['url'], $matches)) {
- $match_url = $matches[0];
- $url = $match_url.'/';
- }
- $db = pc_base::load_model('category_model');
- $r = $db->get_one(array('url'=>$url), '`catid`');
- if($r) $domain_dir = $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';
- }
- $categorydir = $this->get_categorydir($catid);
- $catdir = $category['catdir'];
- $year = date('Y',$time);
- $month = date('m',$time);
- $day = date('d',$time);
- //echo $catdir;
- $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$prefix}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$prefix,$page),$urlrule);
- // echo $urls."<br>";
- if (strpos($urls, '\\')!==false) {
- $urls = APP_PATH.str_replace('\\', '/', $urls);
- }
- $url = $domain_dir.$urls;
phpcms v9 栏目伪静态完全自定义为栏目英文目录名的更多相关文章
- Phpcms V9全站伪静态设置方法
为什么要伪静态?具体在这里就不说了,你懂的!一方面更新修改后不需要生成静态文件,另一方面为了SEO! 访问规则如下 1 2 list-{$catid}-{$page}.html content-{$c ...
- PHPCMS V9二次开发]自定义字段模型-文本组
phpcms v9,我们在做类似于酒店房型等类型的时候,需要用到文本组字段模型,但phpcms并未提供该模型.如下图所示效果: 展示效果如下: 步骤/方法 打开phpcms\modules\conte ...
- [PHPCMS V9二次开发]自定义字段模型-添加字段类型
步骤/方法 打开phpcms\modules\content\fields目录,复制文件夹downfiles,并改名为textgroups. 打开phpcms\modules\content\fiel ...
- phpcms V9 栏目管理
关于phpcms V9框架系统后台管理之栏目管理,请参见下文的源码分析(添加栏目和修改栏目): 参照添加栏目的界面图示,便于对源代码的理解: <?php // 文件路径:phpcms/modul ...
- PHPCMS V9静态化HTML生成设置及URL规则优化
先讲讲Phpcms V9在后台怎么设置生成静态化HTML,之后再讲解怎么自定义URL规则,进行URL地址优化.在这一篇中,伪静态就不涉及了,大家可以移步到Phpcms V9全站伪静态设置方法. 一.静 ...
- (转载)phpcms v9两步实现专题栏目生成路径去掉html和special
相信很多人都知道,phpcms v9专题是不支持自定义URL的,生成的专题路径是以/HTML/special/开头的.那么如何实现专题栏目生成路径去掉html和special呢?通过修改程序的PHP源 ...
- 转载]PhpCms V9调用指定栏目子栏目文章的两种方法
PhpCms V9调用指定栏目子栏目文章的两种方法 第一种.直接写子栏目id ,用cat in {pc:get sql="SELECT * from v9_news where status ...
- phpcms v9 下拉菜单 二级 三级子栏目调用方法
很多网站的导航栏可以实现下拉二级菜单,三级菜单等效果,今天我们就来分享phpcms v9 支持下拉菜单的方法,可以支持无限子栏目调用,具体写法如下: <ul> {pc:content ac ...
- PHPCMS v9栏目添加字段及描述编辑器修改方法
为PHPCMS v9栏目添加字段和把描述的textarea编辑器变成fceditor编辑器的方法.如下: 1. 添加数据库字段:description1,添加位置:v9_catetory表 2. 在c ...
随机推荐
- 《Python核心编程》第五章:数字
PS:[笔记+代码+图片]在GitHub上持续更新,欢迎star:https://github.com/gdouchufu/Core-Python-Programming 本章大纲 介绍Python支 ...
- SoftReference、WeakReference、PhantomRefrence分析和比较
级别 什么时候被垃圾回收 用途 生存时间 强引用 从来不会 对象的一般状态 JVM停止运行时终止 软引用 在内存不足时 优化内存使用 内存不足时终止 弱引用 在垃圾回收时 对象缓存 gc运行后终止 虚 ...
- 一种部署 Python 代码的新方法
在Nylas,我们喜欢使用Python进行开发.它的语法简单并富有表现力,拥有大量可用的开源模块和框架,而且这个社区既受欢迎又有多样性.我们的后台是纯用 Python 写的,团队也经常在 PyCon ...
- java容器的数据结构-ArrayList,LinkList,HashMap
ArrayList: 初始容量为10,底层实现是一个数组,Object[] elementData 自动扩容机制,当添加一个元素时,数组长度超过了elementData.leng,则会按照1.5倍进行 ...
- 无密码ssh操作步骤备忘
需求:A机器无密码登陆到B机器 1.A机器执行 ssh-keygen -t rsa ,在~/.ssh/下生成id_rsa 和 id_rsa.pub两个文件,其中id_rsa.pub是公匙 2. ...
- CSS3、SVG、Canvas、WebGL动画精选整理
一.CSS3动画 名称 用途 链接 阴影波纹特效 1.元素hover效果 2.突出表现效果 http://www.jq22.com/code80 横板导航菜单动画 导航菜单 http://www.jq ...
- PHP开发之环境配置
nignx //start nginx -s reload //restart composer create-project laravel/laravel learnlaravel5 //自动创建 ...
- SQL学习笔记之MySQL查询的三层解析
Mysqld的三层结构: SQL类型: DDL:数据库对象定义语言 对库和表的定义 DML:操作语言 DCL:控制语言 结构化的查询语言:select * from user; 执行该语句时: 1.连 ...
- Python面试题之Python中应该使用%还是format来格式化字符串?
Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问题.不信你 ...
- Python3.x:selenium获取iframe内嵌页面的源码
Python3.x:selenium获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在 ...