织梦搜索视图类构造函数__construct(参数)源码分析教程

admin2020-01-19934

所在文件:include/arc.searchview.class.php

这个搜索视图类的构造函数由于参数比较多,这里就把标题用“参数”二字表示了,如果这个在标题里面没有多大用处的内容太多的话,影响我们阅读。

现在我们看一下这个构造函数到底参数有多少:

__construct($typeid,$keyword,$orderby,$achanneltype="all",$searchtype='',$starttime=0,$upagesize=20,$kwtype=1,$mid=0)

共9个参数,这在织梦系统里面不要说是构造函数了,就是一般的函数参数这么多的也不多,那构造函数里面也算是最长之一了。

参数解释:

  int  $typeid  栏目ID
  string  $keyword  关键词
  string  $orderby  排序
  string  $achanneltype  频道类型
  string  $searchtype  搜索类型
  string  $starttime  开始时间
  string  $upagesize  页数
  string  $kwtype  关键词类型
  string  $mid  会员ID
  return    string

这是织梦官方给我们的注释,这不是本教程的重点,重点是这个关键词搜索,特别是搞seo搜索引擎优化的朋友,如果把这个整个类弄明白了,那么,对百度、谷哥、360搜索引擎等会有很大帮助。虽然,它们不是一个系统,但是,大同小异,如果把织梦的这个分词研究透彻了,那么,对你的seo水平提高也有很大帮助,知道了我们在百度里面搜索关键词,就知道他是如何分词的,这样对于我们网站编辑很有帮助,自然,对排名就有更多帮助了。

源码分析教程开始:

因为,搜索的内容也要分页,前面一大段代码就是对参数进行处理的,这里不用多解释,首先是处理的是分页。代码如下:

113745oo3ww8xdha2baw82.jpg

然后,实例化模板引擎,这个构造函数里面实例化了二次模板引擎,虽然,在这个构造函数里面最下面用到,这个在这个类里面的其它方法也要使用。

通过分词获取关键词:

$this->Keywords = $this->GetKeywords($keyword);

获得关键字的分词结果,并保存到数据库,既然要搜索必须要获取用户输入的关键词才可以,要不怎么去搜索这个关键词,如果连关键词都不知道的话。

根据参数里面传递过来的栏目id,查询当前栏目使用的模型,这样做的目的是为了快速查询到关键词内容,例如,搜索一个关键词“织梦基地”,假设这个织梦基地的相关内容都在文章模型里面,你说搜索这个关键词时,在整个网站搜索快,还是在文章模型里面搜索快?当然,是在文章模型里了,因为,范围小了。所以,这里先把当前关键词的模型查询出来。

如果参数的栏目id为零,那么,直接把当前的模型默认设置为1,也就是文章模型;如果这个栏目id不大于零,则根据这个栏目id,在栏目表里面查询这个模型id,因为,在栏目表里面有这个字段,如下图所示。

11.jpg

处理栏目id对应的代码如下图所示:

11.jpg

下面是初始化sphinx,关于这个我们一般很少接触,这个是服务器知识了,只要我们知道如何处理这个服务器问题就行了,具体的服务器操作那是空间商的问题。

如果我们要启用全文搜索,那么,可以在织梦系统后台进行配置,找到“系统基本参数”——>其它选项,如下图所示:

11.jpg

对于这个我们只要知道是开启全文搜索功能就行了,代码我们也不用看去了,代码如下:

接下来就是设置搜索页模板:

$tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/search.htm";

这个search.htm 就是我们系统里面的搜索模板,从这里我们可以知道,我们的搜索页模板为什么叫search.htm了吧,如果想改一下搜索页模板名,就要在这个类中修改,也就是说如果你在织梦模板文件夹里面改搜索页模板的话,他会告诉你“模板文件不存在,无法解析!”。

那是因为下面这个段代码的起的作用:

        if(!file_exists($tempfile)||!is_file($tempfile))
        {
            echo "模板文件不存在,无法解析!";
            exit();
        }

模板都准备好了,接下来就是载入模板,解析模板,进行分页处理,并更新关键词表#@__search_keywords 。

网友评论