Joomla里如何获取文章的完整URL地址

1 篇文章 0 订阅

对于Joomla开发来说,还是小学生,最近做了几个相关程序,在文章列表里遇到点问题。就是文章列表中的文章需要点击标题找开详情页面,在如何生成url的问题上,费了点劲。目前所知道的解决办法如下:

我的程序是一个模块,用来查询指定分类下的文章,生成一个列表,显示在首页上。列表中记录数是可以指定的。

首先,要能获得文章的ID。这个通过指定的文章分类来查询。

然后,通过得到的文章的信息,来生成正确的URL。

这一步,网上搜出来的答案都是这样的:

JRoute::_('index.php?option=com_content&view=article&id='.$article->id)

下面无数个评论说问题解决了,非常圆满。

可问题是,在我这里没有解决,具体表现是,某些文章正常,部分文章提示500,或是文章能打开,但是程序里提示找不到菜单,也就是没办法指定这个文章所关系的菜单。

500这个问题肯定得解决,疯狂搜索了一翻,没用,网上只有这一个结果。

好吧,自己研究。

现在研究出来,代码要这样写:

JRoute::_('index.php?option=com_content&view=article&id='.$article->id.":".$article->alias."&catid=".$article->catid."&Itemid=".$mid)

这里解释一下,文章的url需要传4个参数:文章ID,文章别名,文章分类ID,对应的菜单的ID ($mid)。

先说option,这是说显示文章需要用的“组件” com_content,指定view为article。com_content 组件能做很多事,显示文章列表 和显示单篇文章它都能做,所以这里指定为显示文章。

参数里,文章ID好理解,文章别名是用来在友好的的URL里显示用的。文章分类ID和 对应的菜单的ID这两个,500错误就是这两个参数引起的。具体是哪个还没研究出来,因为根据环境不同,结果也不同,有时候在二级目录里会500,有时候在首页就500了,非常郁闷。

获取对应菜单ID这个自己出个办法,代码如下:

public function getArticleItemid($catid, $language){
        $id = false;
        $db = JFactory::getDbo();
        $query='SELECT * FROM #__menu WHERE published=1 AND link LIKE "%id='.$catid.'" AND language="'.$language.'"   ';
        $db->setQuery($query);
        $rows = $db->loadObjectList();
        if(count($rows)>0){
            $row = $rows[0];
            $id = $row->id;
        }
        return $id;
    }
根据不同环境做对应修改就行了。起码我的joomla里用这个方法能很方便查出文章对应的 Itemid。


最后说下我的模块。

需求是在首页,显示不同的小豆腐块,每个豆腐块里显示不同的分类下面的文章。个数自己指定,根据区域的大小。

那么我的模块就需要能选择指定的分类,这样这个分类下的文章就好查出来了。

然后要指定一个菜单项,这个用在区块上的“more”链接。

列表可以指定排序规则。

功能就这么多。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值