0

如何通过 ID 检索文章的SEF链接?

我想这样的事情:

$link = get_link(34); // where 34 is the article ID

<a href="<?php echo $link; ?>">Article link</a>

更新 我的代码是这样的(用 Rikesh 代码更新):

Mysql query: "SELECT id, title, extra_fields FROM xxxxx_k2_items WHERE catid = ".$catid

$n=0; //counter
while($row = mysql_fetch_array($result)){
  $titles[$n] = $row['title'];
  $links[$n] = JRoute::_(ContentHelperRoute::getArticleRoute($row['id'], $catid));
  $n++;
}

好的,现在这会检索像/joomla/index.php/currentpage?id=44 是正确 id 但链接不起作用的链接!它进入了错误的页面。我的疑问是:您的代码也适用于 K2 文章?因为我使用的是 K2 文章而不是默认的 joomla 文章。编辑:是的,我已经检查了我的疑问,您的代码按 ID 链接到 Joomla 文章,但我使用的 ID 用于 K2 文章!注意:我需要SEF链接

4

1 回答 1

1

你应该包括 K2 路线

require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'route.php');

并且您应该同时更新 mysql 查询和 PHP 代码,因为您还需要 k2 类别表中的信息,这是一个示例

$db = JFactory::getDBO();
$query = '
    SELECT 
        a.id AS id,
        a.extra_fields AS extrafields,
        a.catid AS catid,
        a.title AS title,
        a.introtext AS introtext,
        a.alias AS alias,
        c.alias AS catalias
    FROM 
        #__k2_items AS a 
        LEFT JOIN #__k2_categories AS c ON ( a.catid = c.id ) 
        WHERE a.published = 1 AND a.catid = '.$catid;
$db->setQuery($query);
$articles = $db->loadObjectList();
$n=0;
foreach ($articles as $article) {
    $titles[$n] = $article->title;
    $links[$n] = K2HelperRoute::getItemRoute($article->id.':'.urlencode($article->alias),$article->catid.':'.urlencode($article->catalias));
    $n++;
}
于 2013-05-26T10:55:55.617 回答