Mehrfach:
<code><?php if ( in_category('10') ) echo'<p class="class1"><span class="icon-home"></span></p>'; ?> <?php if ( in_category('25') ) echo'<p class="class2"><span class="icon-cat"></span></p>'; ?> <?php if ( in_category('38') ) echo'<p class="class3"><span class="icon-dog"></span></p>'; ?> <?php if ( in_category('44') ) echo'<p class="class4"><span class="icon4"></span></p>'; ?> <?php if ( in_category('50') ) echo'<p class="class5"><span class="icon5"></span></p>'; ?> <?php if ( in_category('61') ) echo'<p class="class6"><span class="icon6"></span></p>'; ?> </code>
Wie optimiert man das Schreiben? Vielen Dank
* Erneut bearbeitet, in_category und die folgende Klasse sind tatsächlich unregelmäßig.
Mehrfach:
<code><?php if ( in_category('10') ) echo'<p class="class1"><span class="icon-home"></span></p>'; ?> <?php if ( in_category('25') ) echo'<p class="class2"><span class="icon-cat"></span></p>'; ?> <?php if ( in_category('38') ) echo'<p class="class3"><span class="icon-dog"></span></p>'; ?> <?php if ( in_category('44') ) echo'<p class="class4"><span class="icon4"></span></p>'; ?> <?php if ( in_category('50') ) echo'<p class="class5"><span class="icon5"></span></p>'; ?> <?php if ( in_category('61') ) echo'<p class="class6"><span class="icon6"></span></p>'; ?> </code>
Wie optimiert man das Schreiben? Vielen Dank
* Erneut bearbeitet, in_category und die folgende Klasse sind tatsächlich unregelmäßig.
<code>for($i=1; $i<7; $i++) { if(in_category($i)) { echo "<p class=\"class{$i}\"></p>"; } }</code>
Ich habe nicht viel Einblick in die Codeoptimierung, daher überlasse ich es anderen Freunden, etwas hinzuzufügen
Update:
Erneut optimiert
<code>$arr = array( 10=>'<p class="class1"><span class="icon-home"></span></p>', 25=>'<p class="class2"><span class="icon-cat"></span></p>', 38=>'<p class="class3"><span class="icon-dog"></span></p>', 44=>'<p class="class4"><span class="icon4"></span></p>', 50=>'<p class="class5"><span class="icon5"></span></p>', 61=>'<p class="class6"><span class="icon6"></span></p>' ); function inCatToHtml($arr) { while (list($key, $value) = each($arr)) { if(in_category($key)) { echo $arr[$key]; } } } inCatToHtml($arr);</code>
echo kann entsprechend der tatsächlichen Situation optimiert werden und gibt schließlich ein in_category-Array-HTML zurück und verarbeitet es dann einheitlich
<code><?php foreach(range(1,6) as $categoryNum) { if(in_category($categoryNum)) { echo '<p class="class"'.$categoryNum.'"></p>'; } }</code>
Aber ich finde, dass das Mischen von PHP in HTML sehr gering ist...
Empfohlen
PHP-Vorlagen-Engine.
Die Front-End-Einzelseite oder eine einfache JS-Engine.
======== Puh, der Fragesteller hat es geändert, ich werde es auch ändern ==========
<code><?php $categoryIcon = [ 10 => 'icon-home', .... ]; 具体就不写了...和上面一样。</code>
<code><?php $num = count(['1','2','3','4','5','6']); for( $i=0; $i<$num; $i++ ) { if(in_category($num[$i])) { echo "<p class=class".$i."></p>"; } } ?></code>
<code><?php if ($currentCategory = Category::currentCategory()): ?> <p class="<?=$currentCategory->labelClass?>"><span class="<?=$currentCategory->iconClass?>"></span></p> <?php endif; ?></code>
Die Präsentationsebene kümmert sich nur um die Leistung, wie viele Kategorien es insgesamt gibt, wie die Kategorie der aktuellen Seite bestimmt wird und welche Klasse jede Kategorie hat und ob Sie planen, eine Datenbank zu erstellen oder eine zu schreiben Bei der Array-Konfiguration ist alles in Go innerhalb der Category-Klasse gekapselt.
Nachdem oben so viel geschrieben wurde, habe ich immer noch das Gefühl, dass die ursprüngliche Schreibmethode des Autors auf einen Blick klar ist
Ich denke, dass es für das Poster angemessener ist, if
direkt für die mehrfachen switch
Beurteilungsbedingungen zu verwenden. Ich weiß nicht, wie der Code in der in_category
-Methode des Posters aussieht, also werde ich diese Methode mutig ändern. Verwenden Sie switch
in der Methode:
<code>function in_category( $num ) { switch ($num) { case '10': echo'<p class="class1"><span class="icon-home"></span></p>'; break; case '25': echo'<p class="class2"><span class="icon-cat"></span></p>'; break; case '38': echo'<p class="class3"><span class="icon-dog"></span></p>'; break; case '44': echo'<p class="class4"><span class="icon4"></span></p>'; break; default: echo ''; break; } }</code>
Kann ich einfach in_category( 10 )
direkt?
Angenommen, der Fragesteller versucht herauszufinden, zu welcher Kategorie der Artikel gehört, und gibt ein ICON aus
Dann können Sie zunächst die Kategorie definieren,
<code class="php">$categroies = [ 10=>['class'=>'icon-home'], 25=>['class'=>'icon-dog'], 38=>['class'=>'icon-cat'], 44=>['class'=>'icon4'] //当然这里的数据可以是从数据库里封装好的 ]; //等待输出的html $html = ''; $class_i = 1; foreach($categories as $key => $category) { if (in_category($key)) { $html .= '<p class="class' . ($class_i++) . '"><span class="' . $category['class'] . '"></span></p>'; } } echo $html;</code>
Ich kenne den Zweck von in_category
hier nicht. Wenn es darum geht, festzustellen, ob ein Artikel zu einer bestimmten Kategorie gehört und alle Kategorien durchlaufen werden müssen, ist diese Methode ziemlich unlogisch.
Am besten ist es, Vorder- und Rückseite zu trennen