このデモンストレーションで示されているのと同じ方法で垂直方向に並べ替えられた Virtuemart Web ショップのカテゴリのリストを表示したい: http://www.inkplant.com/code/mysql-vertical-sort.php
だから私はコードを借りました:
<?php
$cols = 4; //number of columns, you can set this to any positive integer
$values = array();
$result = mysql_query("SELECT * FROM states ORDER BY name");
$numrows = mysql_num_rows($result);
$rows_per_col = ceil($numrows / $cols);
for ($c=1;$c<=$cols;$c++) { $values['col_'.$c] = array(); }
$c = 1;
$r = 1;
while ($row = mysql_fetch_assoc($result)) {
$values['col_'.$c][$r] = stripslashes($row['name']);
if ($r == $rows_per_col) { $c++; $r = 1; } else { $r++; }
}
echo "<table>" ;
for ($r=1;$r<=$rows_per_col;$r++) {
echo "<tr>" ;
for ($c=1;$c<=$cols;$c++) { echo "<td>".$values['col_'.$c][$r]."</td>" ; }
echo "</tr>" ;
}
echo "</table>" ;
unset($values);
?>
次に、Virtuemart カテゴリ テンプレート ファイルでそれを変更しようとしましたが、次の結果になりました。
<?php
$cols = 3; //number of columns, you can set this to any positive integer
$values = array();
$numrows = $precounterdigit;
$rows_per_col = ceil($numrows / $cols);
for ($c=1;$c<=$cols;$c++) { $values['col_'.$c] = array(); }
$c = 1;
$r = 1;
foreach ( $this->category->children as $category ) {
$catname = $category->category_name;
$caturl = JRoute::_ ( 'index.php?option=com_virtuemart&view=category&virtuemart_category_id=' . $category->virtuemart_category_id );
$values['col_'.$c][$r] = '<div class="category floatleft'.$category_cellwidth.'">
<div class="spacer"><h2>
<a href="'.$caturl.'" title="'.$catname.'">
'.$catname.'<br /></a></h2>
</div></div>';
if ($r == $rows_per_col) { $c++; $r = 1; } else { $r++; }
}
echo '<div class="tablediv">' ;
for ($r=1;$r<=$rows_per_col;$r++) {
echo '<div class="row">' ;
for ($c=1;$c<=$cols;$c++) { echo $values['col_'.$c][$r]; }
echo '</div>' ;
}
echo '</div>' ;
unset($values);
?>
カテゴリの数が 3 で割り切れる場合、または 3 -1 で割り切れる場合、実際にはカテゴリ ビューに完全に表示されます。ページに 3、5、6、8、9、11、12 などのカテゴリがある場合に正しく表示されることを意味します。
カテゴリの数が 3 + 1 で割り切れる数に等しい場合、奇妙な方法で表示されます..
以下は、9 つのカテゴリがある場合の例です。
カテゴリ 1 | カテゴリー4 | カテゴリ
7 カテゴリ2 | Cat5 | カテゴリ
8 カテゴリ3 | カテゴリ6 | Cat9
8 つのカテゴリがある場合の例を次に示します。
カテゴリ 1 | カテゴリー4 | カテゴリ
7 カテゴリ2 | Cat5 | カテゴリ
8 カテゴリ3 | カテゴリ6 |
カテゴリが 7 つある場合の表示例を次に示します
。カテゴリー4 | カテゴリ
7 カテゴリ2 | Cat5 | カテゴリ
3 カテゴリ6 |
私は本当にこれを理解できないので、誰かがここで私を少し助けてくれることを願っています..