2014-05-16 88 views
2

我有文章ID,我怎样才能得到这篇文章的有效完整的网址?这篇文章已经与菜单相关联,但我可能不知道,是否有任何简单的方法在PHP中获得url?我正在使用joomla 3.2 我已经试过了。如何通过joomla中的ID获取文章的完整url?

$article = ControllerLegacy::getInstance('Content')->getModel('Article')->getItem($article‌​Id); 
JRoute::_(ContentHelperRoute::getArticleRoute($articleId,$article->catid)) 
+0

' $ article = JContro llerLegacy ::的getInstance( '内容') - > getModel( '文章') - >的getItem($条款ArticleID); JRoute :: _(ContentHelperRoute :: getArticleRoute($ articleId,$ article-> catid))' 它不工作。 – user2737980

回答

4

您可以使用这样

$article = JControllerLegacy::getInstance('Content') 
      ->getModel('Article')->getItem($articleId); 

    $url = JRoute::_(ContentHelperRoute::getArticleRoute($articleId, 
         $article->catid, 
         $article->language)) 
+0

谢谢,它现在工作完美。 – user2737980

+0

这是完美的! –

0

也许JURI(来自API的Joomla!)帮助您:

为例:

echo 'Joomla current URI is ' . JURI::current() . "\n"; 

可能输出

Joomla base URI is http://localhost/joomla/ 
+0

你真的看过这个问题吗?我需要通过它的ID文章的网址。不是joomla url – user2737980

+3

我不认为侮辱有人试图帮助你会得到你格式不正确的问题。 – secretformula

+0

我没有侮辱任何人,只是建议人们不回答,如果他们真的没有读过这个问题,我的意思是问题的标题。我也对你的负面评价问题感到惊讶。人们来到这里只是在他们没有在网上轻松找到正确答案之后才会问 – user2737980

1

我写这一点,因为我觉得这个信息对于谁希望不仅在文章的Joomla随时随地充分当前的URL所有其他用户有用。

在Joomla使用JURI类来获取网址。 功能如root()current() & base()将根据需要使用。

echo 'Joomla root URI is ' . JURI::root(); 
output:-Joomla root URI is http://localhost/joomla/ 

echo 'Joomla current URI is ' . JURI::current(); 
output:-Joomla current URI is http://localhost/joomla3/index.php/somealias 

注: - current()会给整个URI除了查询字符串部分,例如,

如果你的完整URL是http://localhost/joomla3/index.php/somealias?id=1然后current()只会返回这个 - >http://localhost/joomla3/index.php/somealias

虽然,如果您使用JURI::getInstance()->toString()那么它将返回此 - >

http://localhost/joomla3/index.php/somealias?id=1

欲了解更多信息,请参阅以下链接 - >

  1. https://docs.joomla.org/JURI/root
  2. https://docs.joomla.org/JURI/current
  3. https://docs.joomla.org/JURI/getInstance
0

您还可以使用适当的方式来获得完整的URL为:

$config = JFactory::getConfig(); 
$mode = $config->get('force_ssl', 0) == 2 ? 1 : (-1); 
echo JRoute::_('index.php?Itemid=164',false,$mode); 
相关问题