Joomla K2 - Получить ссылку на статью (SEF) по ID

Как получить ссылку SEF статьи по ее идентификатору?

Я думаю о такой вещи:

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

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

ОБНОВЛЕНИЕ Мой код таков (обновлен кодом Рикеша):

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 — правильный идентификатор, но ссылка не работает! Он переходит на неправильную страницу. Я сомневаюсь: ваш код работает и для статей K2? Потому что я работаю со статьями K2, а не со статьями Joomla по умолчанию. Редактировать: да, я проверил свои сомнения, ваш код ссылается на статьи Joomla по идентификатору, но идентификаторы, которые я использую, предназначены для статей K2! Примечание: мне нужна ссылка SEF


person Fred K    schedule 21.05.2013    source источник
comment
Если вы работаете со статьями K2, используйте маршрутизатор K2. Для получения дополнительной информации взгляните на модуль контента K2.   -  person Shaz    schedule 21.05.2013


Ответы (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++;
}
person Anas Bouhtouch    schedule 26.05.2013
comment
в порядке. это работает, но все еще не выглядит «хорошо». Мне нужно что-то вроде этого: 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 Чего-то не хватает. Спасибо. - person Krzysztof Jarosz; 10.01.2015
comment
хорошо, я знаю. Это должно быть следующим образом: '.urlencode($article-›каталоги))); - person Krzysztof Jarosz; 10.01.2015