有些时候我们需要让文章显示他的ID,虽然不一定具体用来做什么,但有时候确实需要,但是搜索功能无论是前台还是后台都不能搜索ID,因此我们在这里修改一下程序。如果你只想从后台搜索到,那么请看这篇文章 让dedecms后台搜索支持文章全文和ID搜索 for 5.3/5.5
特别注意,由于wordpress的编辑器的局限性不能直接粘贴出来可用的源代码,因此大家在复制修改的时候自己注意一下引号的全角半角问题,自行修改,有问题请在这里给我留言。
打开dede系统的include目录,修改arc.searchview.class.php这个文件。
修改其中169行(行数位置有可能会有不同,以代码为准)的
$kwsqls[] = ” CONCAT(arc.title,’ ‘,arc.writer,’ ‘,arc.keywords) like ‘%$k%’ “;
修改为
$kwsqls[] = ” CONCAT(arc.title,’ ‘,arc.writer,’ ‘,arc.keywords,’ ‘,arc.ID) like ‘%$k%’ “;
上传覆盖即可。请一定注意所有符号的全角和半角的问题。很多朋友说我给的源代码放上去以后都会导致程序错误,但所有的问题我检查后都是由于全角半角的没有修改造成的,大家自己一定注意。
dedecms 5.5有个先天性的bug,移动目录的时候会有错误提示,错误地址是catalog_do.php 355行,错误提示是:/dede/catalog_do.php on line 355
解决问题是在最下面?>之前加上以下内容
function IsParent($myid,$topid,$dsql)
{
$row = $dsql->GetOne(“select id,reid,topid from #@__arctype where topid=’$myid’ or id=’$myid’”);
if($row['reid']==$topid)
{
return true;
}
else if($row['reid']==0)
{
return false;
}
else
{
return IsParent($row['reid'],$topid,$dsql);
}
}
然后把355行的if(IsParent($movetype,$typeid)) 更换成if(IsParent($movetype,$typeid,$dsql))
就可以了
特别注意:如果修改后出现错误,提示Parse error: syntax error, unexpected T_STRING in /dede/catalog_do.php on line 368 类似这样的错误,请检查引号的问题,因为wordpress的固有缺陷,无法粘贴源代码,因此你在复制上面的内容时,引号可能会出现全角半角的变化导致程序错误。
这一套dede5.5的伪静态文件是我自己制作的一个傻瓜覆盖包,里面包含了详细的使用方法,以及每一个文件的详细具体功能介绍,本篇文章下面的内容与包里面的一样,看不看都行。。我是为了凑字数的。。
这里是下载地址:dede伪静态完全解决方案
注意事项:
1:本静态化文件,由SEO无题站www.seo5t.org.cn 站长lonelywolf整理修改,并亲测可用,如果有转载的朋友,希
望保留版权。
2:该文件均为UTF-8编码 如果您的网站是GB2312或其他的编码,请不要忘记修改这些文件的编码。
3:这里的原版文件均未进行加密,因此为了您的网站安全,建议您自行检查一下文件的安全性,但如果您是从我的
官方网站下载的,可以保证文件无毒,无后门。
4:该伪静态文件测试适用于dede 5.5,根据朋友反映,5.3也可以用,但我没有亲测。
5:该伪静态规则测试环境为美国linux主机,win主机不可使用,需要使用win主机的朋友请自行在网上搜索修改。
5:在使用以上文件之前,一定要备份原来的文件。
各个文件说明及使用方法:
.htaccess文件 该文件为URL伪静态转发规则文件,如不懂内部规则请勿修改,直接上传至网站根目录。
index.php文件 该文件为dede原index.php修改版,可以在删除index.html后可以正常访问首页。需要注意修改这
个文件当中第10行的数据库前缀(即$row = $dsql->GetOne(“Select * From `dede_homepageset`”); 这里)
archives_add.htm catalog_add.htm catalog_add_quick.htm article_add.htm 这四个文件,是后台添加文章和添
加分类的时候默认选择生成动态页面的文件,这样以后添加文章和分类自动就是动态无需手选。上传至网站根目录下
/dede/templete/目录中
channelunit.func.php 该文件为伪静态的一些修改,配套.htaccess文件使用,切勿修改,上传至网站根目录
下/include/目录中
sql命令.txt 该文件当中是两条sql命令,在dede后台-系统-SQL命令行工具 当中执行,一次执行一句比较保险,注
意修改命令当中的数据库前缀为你的数据库前缀。
PS:因为我并不懂程序,都是根据网上给出的一些伪静态方法整理改编,并且加入了一些简单的修改合成这个傻瓜覆盖包,
如果有任何问题,可以在我的网站给我留言。www.seo5t.org.cn lonelywolf
用过dede的朋友都知道dede的标签不支持嵌套,所以在一些功能上收到了不小的限制。比如最近我要用的在分类后面调用该分类下的文章数量。在网上搜索了一番,自己也测试了不少,终于找到了解决方法。该方法需要修改程序文件,在复制我给的代码的时候童鞋们注意标点符号的全半角和中英文可能会产生变化。
打开include/common.func.php文件
在最后的?>之前加上
|
然 后就可以在模板上用
{dede:channel type=’top’ row=’20′}
<dl><a href=’[field:typelink/]‘>[field:typename/]</a>(<span>[field:ID runphp='yes'] @me = GetTotalArc(@me);[/field:ID]) </dl>
{/dede:channel} 进行调用,
这里面的关键是这个 [field:ID runphp='yes'] @me = GetTotalArc(@me);[/field:ID] 这个就是调用的总数
经过测试以后是成功的。
让dede后台支持文章全文内容全文搜索和ID号的搜索的方法
支持文章ID的搜索修改方法:
进入网站安装目录→dede目录→打开”content_list.php” 文件,
156行 $whereSql .= ” And ( CONCAT(arc.title,arc.writer) like ‘%$keyword%’) “;
修改为 $whereSql .= ” And ( CONCAT(arc.title,arc.writer,arc.ID) like ‘%$keyword%’) “;
这样在后台搜索时直接输入文章的ID号即可找到,顺便说一下前台调用文章ID的方法。
首页和列表页调用的方法为在循环标签内调用[field:ID /],内容页没有循环标签的地方使用这个{dede:field name=’id’ /}
支持全文的搜索修改方法:
进入网站安装目录→dede目录→打开”content_list.php” 文件,
一,
156行“ $whereSql .= ” And ( CONCAT(arc.title,arc.writer) like ‘%$keyword%’) “; ”
修改为“ $whereSql .= ” And ( CONCAT(arc.title,arc.writer,’dede_addonarticle’.body) like ‘%$keyword%’) “; ”
二,
185行 “ left join ‘dede_member’ mb on mb.mid=arc.mid ”
下面添加一行“ left join ‘dede_addonarticle’ on ‘dede_addonarticle’.aid=arc.id ”
这时候187行为“ $whereSql ”
这样就大功告成了,如果既需要搜索全文也要ID,把上面两个命令自行中和一下就可以。有的时候这些命令还是很有用的
特别注意,在复制代码的事后一定要注意引号的全角和半角的问题。
推荐一个国外微博程序,这里给大家一个国内朋友自己开的相关论坛,我的SEO我踢就是用的这个程序,自己做了一些小小的修改,不过这个论坛提供的程序版本足够用了。
http://bbs.sharetronix.net/
大家可以直接去下载使用,安装方法跟大部分的PHP程序一样,只不过注意一定要支持.htaccess文件的空间才可以,否则无法使用。
有什么问题,大家可以在这里留言,我也会挑着我会的回答。
这个是我自己的一个修改记录,写在这里方便记录,嘎嘎。
DEDE的后台管理,在文章列表下面可以进行搜索,输入关键字即可
但是这个搜索,只能搜索标题和作者里的关键字,却不能找到正文包含该关键字的文章
以下修改,可以在后台输入关键字搜索时,找到正文里包含该关键字的普通文章
打开 后台dede\content_list.php
第156行:
$whereSql .= ” And ( CONCAT(arc.title,arc.writer) like ‘%$keyword%’) “;
改为:
$whereSql = ” left join #@__addonarticle on arc.id=#@__addonarticle.aid “.$whereSql.” And ( CONCAT(#@__addonarticle.body,arc.title,arc.writer) like ‘%$keyword%’) “;