PHPCMS 使用心得与技巧,以及小BUG的纠正

所属分类: CMS教程 / phpcms 阅读数: 2125
收藏 0 赞 0 分享
用PHPCMS开发的第一个项目是一个素材类网站 www.penshow.cn,之所以选PHPCMS估计是因为看了她的百万级的数据测试报告。而之后,我越用感觉也越不错。当然,期间遇到过不少问题,总结了一下,方便以后开发。(版本:phpcms2008sp3_gbk)

综合问题

使用GET标签时静态分页出错以及分页地址会链接到后台

文件:/include/global.func.php
函数:pages
在 if($curr_page>0) 前添加 $url = load('url.class.php'),如下:
$url = load('url.class.php');
if($curr_page>0)
只要添加一行代码就解决了,而在网上找的解决方法却非常复杂,好郁闷!

而分页地址会链接到后台则只需要将以下的第一行代码替换成第二行就OK了,当然,建议把第一行注释掉,加上第二行。

复制代码
代码如下:

$multipage .= ' <u><b>'.$pages.'</b></u><a href="'.pageurl($urlrule, $curr_page, $array).'">下一页</a>';
$multipage .= $catid ?' <u><b>'.$pages.'</b></u><a href="'.$url->category($catid, $curr_page, 1, 1).'">下一页</a>' : ' <u><b>'.$pages.'</b></u><a href="'.pageurl($urlrule, $curr_page, $array).'">下一页</a>';

上传文件路径修改

文件:include/attachment.class.php
找到 $this->savepath 和 $dir 这两个变量,以下是修改后的值,路径为“uploadfile/年/月/日/”:
$this->savepath = UPLOAD_ROOT.date('Y/md/');
$dir = date('Y/m/d/', TIME);

将缩略图保存到单独的文件夹,这样子也方便管理
文件:/include/global.func.php
$newimgurl = dirname($imgurl).'/thumb/thumb_'.$width.'_'.$height.'_'.basename($imgurl);

文件:/include/attachment.class.php
以下是 get_thumb 函数修改后的代码

复制代码
代码如下:

function get_thumb($image)
{
/* 缩略图文件夹 */
$thumbdir = dirname($image).'/thumb';
if (!file_exists($thumbdir)) mkdir($thumbdir, 0700);
return dirname($image).'/thumb/thumb_'.basename($image);
//return str_replace('.', '_thumb.', $image);
}

BUG (UPLOAD_PATH 不存在)

记不清报什么错了,反正后来我是直接把 UPLOAD_PATH 这个常量删掉,最后就正常了。有知道提示什么错误的请留个言。
提示错误:Warning: mkdir() [function.mkdir]: No such file or directory in... 类似这样子的
只要把UPLOAD_PATH去掉然后更新缓存,一切正常。

/include/fields/images/output.inc.php
$thumb = UPLOAD_URL.$attachment->get_thumb(UPLOAD_PATH.$a['filepath']);

全站搜索最多显示的记录数

PHPCMS 的全站搜索很强大,貌似能支持百万级的数据量。通常,搜索结果不需要输出全部记录数的,所以我将搜索输出结果设置为最多1000条(已经很多了,GOOGLE都没这么多,呵呵),以下是修改后的部分代码。

复制代码
代码如下:

文件:/search/index.php
$page = max(intval($page), 1);
$page = $page>100 ? 100 : $page; (增加了这行代码)
文件:/search/include/search.class.php
$this->total = cache_count("SELECT COUNT(*) AS `count` FROM `$this->table` WHERE $where");
$this->total = $this->total>1000 ? 1000 : $this->total; (增加了这行代码)


采集模块

该如何去设置采集规则就不多说了,官方有详细介绍:http://www.phpcms.cn/2009/0522/220.html

需要采集的话使用GBK版本的PHPCMS

试过用UTF-8版本的去采集,结果不论怎么调,采回来的中文都是乱码,好郁闷。没有深入研究,转投GBK。

修改采集图片和压缩文件时的保存路径

文件:/spider/include/get_remotefiles.func.php
函数:do_saveremotefiles
修改函数中以下两个变量;以下是我修改后的结果,保存路径为“uploadfile/年/月/日/”:

复制代码
代码如下:

$filepath = PHPCMS_PATH . $uploaddir . '/' . date('Y/m/d') . '/';
$uploaddir = PHPCMS_ROOT . '/' . $uploaddir . '/' . date('Y/m/d') . '/';

采集内容时无法远程保存图片

src 前的空格导致了图片在采集内容时采集不了,只有在发布时才能采集得到。
文件:/spider/include/get_remotefiles.func.php
函数:get_remotefileurls
以下分别是修改前和修改后的代码,注意src前的空格,只要把空格去掉就OK了。

复制代码
代码如下:

if (!preg_match_all("/<(?:a|img).+?(href| src)=([\"|']?)([^ \"'>]+\.($ext))\\2/i", $string, $matches))
if (!preg_match_all("/<(?:a|img).+?(href|src)=([\"|']?)([^ \"'>]+\.($ext))\\2/i", $string, $matches))

远程保存非内容中的图片和文件

采集模块默认只会保存“内容”标签中的图片和文件,而其它标签中不论出现多少次img或a都不会被采集。如果你需要把图片和文件分别保存到其它字段,这个修改貌似挺有用的。
文件:/spider/admin/mainspider.inc.php
行数:372行
以下是修改结果:

复制代码
代码如下:

$v = get_remotefiles($v, 'gif|jpg|jpeg|bmp|png|rar|zip', $dourl, $basehref, true);

抓取不到页面时采集状态改为未采集

如果被采集网站不稳定,有时会出现抓取不到采集页面的情况,而此时采集状态还是会被标记为已采集。所以只要小小修改一下,我们会方便很多。
文件:/spider/admin/mainspider.inc.php
行数:664行
以下是修改结果,添加了“&& (trim($body)!=''”这一句:

复制代码
代码如下:

if (($body!=$LANG['title_or_content_null']) && (trim($body)!=''))
更多精彩内容其他人还在看

PHPCMS系统自带标签说明

关键字描述:说明 标签 系统 channelid 首页 专题 推荐 图片 文章 PHPCMS系统自带标签说明 首页最新文章列表 articlelist(0,1,0,1,0,0,10,46,0,0,0,1,2,0,0,0,1,1) 首页热点下载列表 downlist
收藏 0 赞 0 分享

phpcms语法规则

关键字描述:规则 语法   < if > loop name 字母 --> /loop 1、变量表示 {$name}被解析成<?=$name?>,表示显示变量$name的值,其中的“name&rdquo
收藏 0 赞 0 分享

phpcms将下载地址替换为图片显示

关键字描述:图片 显示 地址 下载
收藏 0 赞 0 分享

如何把PHPCMS的网站和数据库删除

关键字描述:删除 数据库 网站 如何 PHPCMS mysql 程序 修改 如果 如何把PHPCMS的网站和数据库删除 如果网站换空间了,原来的空间还保存着PHPCMS的mysql数据库,那我们怎么把他删除呢? 很简单 1.删除mysql数据库:通过PHPMYADMIN
收藏 0 赞 0 分享

phpcms关于标签和频道的基础概念

关键字描述:基础 概念 频道 标签 关于   调用 一个 文章 我们 phpcms一直是很多站长使用的建站系统,我们今天谈一下phpcms标签和频道的一些基础知识。 1、 何谓标签? phpcms 一直以来采用的是标签调用的方法,这样就能
收藏 0 赞 0 分享

PHPCMS网站转移空间教程

关键字描述:教程 空间 转移 网站 文件 目录 数据库   PHPCMS 有关phpcms网站转移空间,备份数据库转移空间的文章不是很多,所以就发表操作方法: 1.备份mysql数据库 现在的空间基本都有phpmyadmin 首先进入phpmyadm
收藏 0 赞 0 分享

phpcms常见问题解答

关键字描述:常见 频道 目录 建立 设置 ftp 标签   文章 可以 1.为什么phpcms首页幻灯片怎么显示不出来? 答:需要设置文章的 标题图片 如果设置标题图片,则可以在首页以及栏目页以图片方式链接到文章。 2.自定义phpcms的标签
收藏 0 赞 0 分享

phpcms如何使用水印功能

关键字描述:功能 使用 如何 水印 图片 字体 文字 需要 文件 中文 phpcms水印功能只有在添加标题图片的时候生成带水印的图片。 编辑器上传的图片不能增加水印和缩略图 添加水印功能: 1,首先查看服务器参数查看 图形处理 GD Library 这个选项是不
收藏 0 赞 0 分享

PHPCMS 模板安装导入教程

关键字描述:教程 导入 安装 模板 目录 更新 管理 依次 然后 方案 关于phpcms模板安装教程,导入模板的方法: 1.模板安装 下载已发布共享的模板文件包,解压后上传模板目录至templates目录下,进入后台模板风格 -〉方案管理(见下图),启
收藏 0 赞 0 分享

phpcms模仿QQ和MSN消息提示的效果

关键字描述:提示 效果 消息 模仿 " popTop if else & screen.width-2 你一定很喜欢像QQ或者MSN好友登录提示的效果吧,那么怎么样能在网页中实现呢?正好我在蓝色理想中发现了这段代码,贴出给大家看看(注意,如果使用以下代码,先
收藏 0 赞 0 分享
查看更多