2013-05-21 26 views
0

如何通过ID获取文章的SEF链接?Joomla K2 - 通过ID获取物品链接(SEF)

我想这样一件事:

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

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

UPDATE 我的代码是这样(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=4哪里4是正确的ID,但链接不起作用!它进入了一个错误的页面。我的疑问是:你的代码也适用于K2文章?因为我正在使用K2文章而不是默认joomla文章。编辑:是的,我检查了我的怀疑,你的代码通过ID链接到Joomla文章,但我使用的ID是K2文章! 注意:我需要的海基会链接

+1

如果您正在使用K2文章,然后使用K2路由器。有关更多信息,请查看K2内容模块。 – Shaz

回答

1

你应该包括K2路线

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

因为你需要的信息也从K2,你应该同时更新MySQL查询和PHP代码类别表,这里是一个示例

$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++; 
} 
+0

谢谢!它为我工作;) – Alberto

+0

好的。这工作,但它仍然不看'好'。 我需要这样的东西:odziecku/ciaza-i-porod/porod/item/86-6-rad-przed-wspolnym-porodem 但是这段代码生成了这个:odziecku/index.php?option = com_k2&view = item&id = 156 :6-rad-przed-wspolnym-porodem&Itemid = 190 有一些缺失。感谢名单。 –

+0

好的,我知道。它应该是这样的: $ links [$ n] = JRoute :: _(K2HelperRoute :: getItemRoute($ article-> id。':'。urlencode($ article-> alias),$ article-> catid。 。 ':' 进行urlencode($物品─> catalias))); –