Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Joomla-搜索结果中页面的顺序_Search_Joomla - Fatal编程技术网

Search Joomla-搜索结果中页面的顺序

Search Joomla-搜索结果中页面的顺序,search,joomla,Search,Joomla,我工作的公司继承了一个Joomla网站,我没有Joomla的经验,所以我希望有人能让我自己知道以下是否可行 当在Joomla站点上搜索时,客户端希望某些搜索词的特定页面出现在搜索结果的顶部 是否可以根据搜索词将某些页面提升到搜索结果的顶部 感谢您对此的支持 更新 在本地测试中,我更新了/plugins/search/content.php中的SQL查询,以接近我想要的结果 SELECT a.title AS title, a.metadesc, a.metakey, a.crea

我工作的公司继承了一个Joomla网站,我没有Joomla的经验,所以我希望有人能让我自己知道以下是否可行

当在Joomla站点上搜索时,客户端希望某些搜索词的特定页面出现在搜索结果的顶部

是否可以根据搜索词将某些页面提升到搜索结果的顶部

感谢您对此的支持

更新

在本地测试中,我更新了/plugins/search/content.php中的SQL查询,以接近我想要的结果

SELECT
  a.title AS title,
  a.metadesc,
  a.metakey,
  a.created AS created,
  CONCAT(a.introtext, a.fulltext) AS text,
  CONCAT_WS( "/", u.title, b.title ) AS section,
  CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,
  CASE WHEN CHAR_LENGTH(b.alias) THEN CONCAT_WS(":", b.id, b.alias) ELSE b.id END as catslug, u.id AS sectionid, "2" AS browsernav 
FROM jos_content AS a 
  INNER JOIN jos_categories AS b ON b.id=a.catid 
  INNER JOIN jos_sections AS u ON u.id = a.sectionid 
WHERE
  ((a.title LIKE '%carbohydrate%' OR a.introtext LIKE '%carbohydrate%' OR a.fulltext LIKE '%carbohydrate%' OR a.metakey LIKE '%carbohydrate%' OR a.metadesc LIKE '%carbohydrate%'))
  AND a.state = 1 
  AND u.published = 1 
  AND b.published = 1 
  AND a.access <= 0 
  AND b.access <= 0 
  AND u.access <= 0 
  AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2013-02-18 14:55:51' )
  AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2013-02-18 14:55:51' ) 
GROUP BY a.id 
ORDER BY
  (NOT(a.title LIKE '%carbohydrate%'))
  , (NOT(a.introtext LIKE '%carbohydrate%'))
  , (NOT(a.fulltext LIKE '%carbohydrate%'))
  , (NOT(a.metakey LIKE '%carbohydrate%'))
  , (NOT(a.metadesc LIKE '%carbohydrate%'))
选择
a、 标题作为标题,
a、 metadesc,
a、 元键,
a、 像被创造一样被创造,
CONCAT(a.introtext,a.fulltext)作为文本,
CONCAT_WS(“/”,u.title,b.title)作为第节,
当CHAR_LENGTH(a.alias)然后CONCAT_WS(“:”,a.id,a.alias)或者a.id以slug结尾时,
当CHAR_LENGTH(b.alias)然后CONCAT_WS(“:”,b.id,b.alias)或者b.id结束为catslug,u.id结束为sectionid,2结束为browsernav时的情况
从jos_内容作为
b.id=a.catid上的内部连接jos_类别为b
内部连接jos_段作为u.id上的u=a.sectionid
哪里
((a.title如'%carbody%'或a.introtext如'%carbody%'或a.fulltext如'%carbody%'或a.metakey如'%carbody%'或a.metadesc如'%carbody%'))
a.state=1
和u=1
和b.published=1

a.access假设您使用的是Joomla 2.5(尽管这可能与以前的版本相同),您需要在“菜单管理器”中找到显示搜索结果的菜单项

此菜单项中有“基本选项”选项卡下的一些选项。这些包括按最新优先、最旧优先、流行度、字母顺序和类别对搜索结果进行排序。

如果“固定文章”总是相同的,只需覆盖搜索结果模板并在模板覆盖中添加文章即可

只需复制在中找到的所有文件

/components/com_search/views/search/tmpl
进入


然后编辑default_results.php并将您的固定结果放在那里

您必须找到执行搜索查询的模型,并且在从函数返回任何内容之前,添加您想要查询的结果,以便首先显示升级页面。谢谢。我已经找到了搜索查询,现在如何将一篇文章标记为“已升级”?我假设您从返回为数组的模型中获得了文章id,因此只需要数组_unshift()想要的id,并且应该首先显示它们您使用的是基本搜索还是智能搜索?基本搜索只是一种%类似%的搜索,它按查找顺序返回内容。“智能搜索”实际上试图将最佳匹配放在顶部,通常效果很好。@Elin“智能搜索”是内置的吗?基本选项的顺序与我想要的不太匹配。我试图确保某些文章每次都出现在搜索结果的顶部。我可能会使用插件或呈现模块插入它们,或者只是将它们放在搜索结果的布局文件中。
/templates/your_template/com_search/search