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

时间:2013-02-15 12:07:43

标签: search joomla

我工作的公司继承了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%'))

我现在想把它作为一个自定义插件,而不是覆盖任何核心插件。我已经按照http://docs.joomla.org/Creating_a_search_plugin的教程进行了操作,但如何设置网站使用自定义插件而不是默认搜索插件?

2 个答案:

答案 0 :(得分:0)

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

在此菜单项中,“基本选项”选项卡下有一些选项。这些包括按最新优先,最早优先,受欢迎程度,按字母顺序和按类别排序搜索结果。

答案 1 :(得分:0)

如果“固定文章”始终相同,只需覆盖搜索结果模板并在模板覆盖中添加文章。

只需复制您在

中找到的所有文件即可
/components/com_search/views/search/tmpl

/templates/your_template/com_search/search

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

相关问题