如何从Joomla的ID获取部分名称和类别别名?

时间:2011-04-10 16:38:16

标签: php joomla drop-down-menu

Joomla有一个名为Jreviews的扩展名。它有一个模块,列出树形结构中的Joomla的部分和类别。我想把它转换成双下拉。

我从中获得了一个脚本,使得Joomla网站的部分和类别处于双重下拉状态。我只需修改其结果URL,将其与Jreviews树结构URL匹配,我就完成了。

在脚本中,我发现了这段代码:

var iCatID = document.getElementById('catselect_cat').value;
var iSecID = document.getElementById('catselect_sec').value;
if (iCatID != 0)
      **window.location= jsLiveSite+'index.php?option=com_content&view=category&layout=blog&id='+iCatID+'&Itemid='+iItemID;**
else
    alert('Please select a section and a category');

在这段代码中,如果我可以用Jreviews目录模块url替换粗线,我会得到所需的结果。在我的网站中,Jreviews目录包含以下类别的URL:

http://www.yoursite.com/component/jreviews/jreviews_directory_name/section_name/category_name_alias/

当我们有id时,有没有办法将节名和类别别名存储在变量中?

我将发布整个下拉脚本,如下所示:

定义('_ JEXEC')或死('限制访问'); 全球$ mainframe; $ database =& JFactory :: getDBO(); $ itemid = trim($ params-> get('linkmenu'));

//选择已发布的部分 $ query =“SELECT s.id,s.title FROM #__sections AS s WHERE s.published = 1”;

$数据库 - > setQuery($查询); $ sections = $ database-> loadObjectList();

$ query =“SELECT c.id,c.title,c.section FROM #__categories AS c”         。“在哪里c.published = 1”;

$ database-> setQuery($ query); $ categories = $ database-> loadObjectList();

//生成javascript函数和变量 回声(“     var jsCat = [];

jsCat=[");
foreach ($categories as $item)
{
    echo("[".$item->id.",\"".$item->title."\",\"".$item->section."\"],");
}

echo(“[0,\”选择类别\“,\”0 \“]]; \ n

var iItemID =“); 回波($的itemid); 回声(” var jsLiveSite ='“); 回波(JURI ::碱()); echo(“'; \ n

function jsRemoveAll(cControl) {     var cCat = document.getElementById(cControl);

for( var i=(cCat.options.length - 1); i >=0 ; i--)
{
    cCat.remove(i);
}

}

function jsOnSecSelect() {     jsRemoveAll( 'catselect_cat');

var cSec = document.getElementById('catselect_sec');
var cCat = document.getElementById('catselect_cat');

var iSecID = cSec.options[cSec.selectedIndex].value;

for (var i=0; i<jsCat.length; i++)
{
    if (jsCat[i][2] == iSecID)
    {
        var cOpt = document.createElement(\"option\");
        cOpt.value = jsCat[i][0];
        cOpt.text = jsCat[i][1];
        cOpt.secID  = jsCat[i][2];
        cCat.options.add(cOpt);
    }
}

}

function jsOnFormSubmit() {

var iCatID = document.getElementById('catselect_cat').value;
var iSecID = document.getElementById('catselect_sec').value;
if (iCatID != 0)
    window.location= jsLiveSite+'index.php?option=com_content&view=category&layout=blog&id='+iCatID+'&Itemid='+iItemID;
else
    alert('Please select a section and a category');

} “);

回波( “”); //生成表单 回声(”

 选择部分“); foreach($ sections作为$ item) {     echo(“id。”'&gt;“。$ item-&gt; title。”\ n“); } 回声(”  \ n 选择类别\ n  \ n

“);

&GT;

1 个答案:

答案 0 :(得分:0)

根据您发布的内容,您发现错误的地方。您发布的代码只是从表单中获取值(最有可能)并使用它们来创建URL。在代码的这一点上,不太可能有与该部分或类别相关的任何其他信息。最好的办法是找到创建表单的代码。然后,这是稍微改变查询甚至只是更改用于创建表单的字段的问题。我们需要查看创建下拉列表的代码,以便为您提供更具体的答案。