質問: 0; foreach ($orderitems as $item) { ?> <div class="feeditem"> <div class="number"> <?php echo $count; ?></div> <div class="headline"> <?php echo $item->headline; ?></div> <div class="image"> <?php echo $item->image; ?></div> <div class="copy"> <?php echo $item->copy; ?></div> <div class="source"> <?php echo $item->source; ?></div> </div> <?php $count++; } ?> </div> うまく機能していますが、各項目の出力を2回取得しています。私が間違っているアイデアはありますか?
回答: joomlaクエリビルダーメソッドを完全に採用し、結果セットの行インデックスを利用してカウンターを表示するために、ここに推奨されるスニペットを示します..._$db = jfactory::getdbo(); $query = $db->getquery(true) ->select(["headline", "image", "copy", "source"]) ->from("#__createalist_items") ->where("heading = " . (int)$this->item->id); $db->setquery($query); $orderitems = $db->loadobjectlist(); _sourceはmysqlキーワードですが、reservedキーワードではないため、バッククォートで囲む必要はありません。さらに言えば、どの列にも$db->quotename()を適用する必要はありません。テーブル名も同様です。参照されるテーブルは1つだけなので、テーブルエイリアスは不要です。データを表示するコードcouldは次のように記述します:_<div class="feedlist"> <?php foreach ($orderitems as $index => $item) { ?> <div class="feeditem"> <div class="number"> <?=($index + 1)?></div> <div class="headline"> <?=$item->headline?></div> <div class="image"> <?=$item->image?></div> <div class="copy"> <?=$item->copy?></div> <div class="source"> <?=$item->source?></div> </div> <?php } ?> </div> _または、phpの場合、繰り返しインとアウトを繰り返すことなく:_<div class="feedlist"> <?php foreach ($orderitems as $index => $object) { echo "<div class=\"feeditem\">"; echo "<div class=\"number\"> " , ($index + 1) , "</div>"; foreach ($object as $prop => $val) { echo "<div class=\"{$prop}\"> {$val}</div>"; } echo "</div>"; } ?> </div> _