3

ascensor.js を使用する Web サイトを構築しています ( ascensor.js

これを機能させるには、「1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1」のような文字列を指定する必要があります。 & 3|2 & 3|3 & 3|4"

これにより、スクリプトは一種のナビゲーションを構築できます。

スクリプトをワードプレスに適用して、カテゴリ アーカイブ ページでもレイアウトと ascensor が自動的にビルドされるようにしました。

私が立ち往生しているのは、表示する投稿の数に基づいてこの文字列を生成することだけです。

たとえば、表示する投稿が 10 件ある場合、4 行、行ごとに 3 件の投稿が必要です (4 行目では、もちろん投稿は 1 つだけです)。私は常に多かれ少なかれ2乗したい、4×5または7×8または6×6です。たとえば、12個の投稿がある場合、必要な文字列は上記のようなものになります。

PHPでこれをどのように生成しますか? 今のところ私はこのようにやっているからです;-)

 $countpost=count($postslist);
 if ( $countpost === 10) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2";}
 if ( $countpost === 11) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3";}
 if ( $countpost === 12) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4";}
 if ( $countpost === 13) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1";}
 if ( $countpost === 14) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1 & 4|2";}
 if ( $countpost === 15) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1 & 4|2 & 4|3";}
 if ( $countpost === 16) {$AscensorMap="1|1 & 1|2 & 1|3 & 1|4 & 2|1 & 2|2 & 2|3 & 2|4 & 3|1 & 3|2 & 3|3 & 3|4 & 4|1 & 4|2 & 4|3 & 4|4";}

一部のページと同様に、リストする投稿が約 50 件あります。これを php で生成したいと思います。

どんな助けでも大歓迎です!

ありがとうございました。

4

1 に答える 1

4

実際のページ数よりも大きい最小二乗数を計算することをお勧めします。
$columns = pow(ceil(sqrt($countpost)),2);

次に、行数を決定できます。$rows = ceil($countpost/$columns);

これで、forループを使用して文字列を生成できます。

$arr = []; // array() before PHP 5.4
for( $y=0; $y<$rows; $y++) {
    for( $x=0; $y*$columns+$x < $countpost && $x < $columns; $x++) {
        $arr[] = ($y+1)."|".($x+1);
    }
}
$AscensorMap = implode(" & ",$arr);
于 2013-04-30T15:45:01.957 に答える