获取类别和文章列表joomla

时间:2012-10-10 06:54:25

标签: joomla2.5 joomla-component

我正在使用joomla 2.5,我想获取不同类别和文章列表的列表。

我正在使用以下代码来获取所有类别,但我无法获取类别ID以在另一个插入中使用它。

如何在下面的选择列表中获取这些不同的字段ID。

$db = &JFactory::getDBO();
$query = "SELECT DISTINCT title FROM #__categories WHERE published = '1' ORDER BY level";
$db->setQuery($query);
$rows = $db->loadObjectList();
?>
<?php $catagories = (isset($this->settings['catagories']) ? $this->settings['catagories'] : "");?>
<select id="catagories" name="settings[catagories]">
<option value="default" selected="selected">---Default---</option>
<?php foreach ($rows as $row) {?>
<option <?php //if ($row->id == $catagories) { echo " selected=\"selected\""; } ?>value="<?php //echo $row->id;?>" >
<?php echo $row->title;?>
  </option>
<?php }?>
</select>

2 个答案:

答案 0 :(得分:0)

第一步是查找/替换“catagories”以更改为“类别”,以确保您的代码使用与数据库表相同的语言,并且 - 一个快乐的奖励 - 它在英语!

如果我理解这个问题:你有一份不同类别标题的清单,但没有这些标识。您不能保证每个标题只对应一个ID;实际上,如果在查询中使用'DISTINCT'对返回的行有任何影响,那么最后有两个ID对应于单个标题。

这是非常不寻常的,所以你可能想要回顾一下为什么(i)你有几个同名(同名)类别和(ii)这种情况,为什么不应该退回你的表格中选择。

如果事实证明您确实需要提供不同类别标题的列表,并且表单提交要对这些标题做一些事情,则必须有ID,然后选择每个标题使用哪个ID是不明确的。

假设使用哪个ID无关紧要,只要它与相应的标题匹配,您就可以执行以下操作:

<?php foreach ($rows as $row) {
$query = "SELECT id FROM #__categories WHERE title = " . $row->title . " AND published = '1'  LIMIT 1 ";
$db->setQuery($query);
$row->id = $db->loadResult();
?>
<option <?php if ($row->id == $catagories) { echo " selected=\"selected\""; } ?>value="<?php echo $row->id;?>" >
<?php echo $row->title;?>
  </option>
<?php }?>

要获得更有效的解决方案,您可以考虑在原始查询中使用UNION为每个返回的行提供ID。

答案 1 :(得分:0)

<?php 
$db = &JFactory::getDBO();
$query = "SELECT DISTINCT title FROM #__categories WHERE published = '1' ORDER BY level";
$db->setQuery($query);
$rows = $db->loadObjectList();
?>
<?php foreach ($rows as $row) {
$query = "SELECT id FROM #__categories WHERE title = " . $row->title . " AND published = '1'  LIMIT 1 ";
$db->setQuery($query);
$rowid = $db->loadResult();
?>
<option value="<?php echo $rowid;?>" >
<?php echo $row->title;?>
  </option>
<?php }?>