Wir verbessern ständig unsere Codierungsleistung und überwachen das Laden jeder Seite, um das Laden und Rendern unserer Websites zu optimieren.
Über die Aussage hinaus bin ich auf die Frage gestoßen, wo wir die renderbaren Arrays rendern sollen.
Wenn Sie sie in Ihrem Präprozessor rendern, bleibt die Vorlage ziemlich ordentlich, da Sie nur Variablen drucken.
Präprozessor:
function template_preprocess_node__faq(&$variables) {
$node = node_load($variables['nid']);
$node_style = node_view($node, $variables['view_mode']);
$faq_sets = array(
'#theme' => 'my_module_faq_set',
'#sets' => $variables['field_faq_set'],
);
$variables['faq_image'] = render($node_style['field_faq_image']);
}
Vorlage:
<div class="faq_image">
<?php print $faq_image; ?>
</div>
Ich bin mir jedoch nicht sicher, ob dies der richtige / schnellste / sauberste Weg ist, Variablen vorzuverarbeiten und zu drucken.
Drupal besteht auch nicht in dieser Angelegenheit, denke ich ... In den Standardvariablen node.tpl.php
werden gerendert, während in anderen Standardvorlagen (wie html.php.php
) nur Variablen gedruckt werden.
Hat jemand eine Regel und / oder einige Tipps und Ratschläge, wie dieses Problem am saubersten und schnellsten gelöst werden kann?
quelle
node_view()
ein Feld rendern. Felder werden in einer Knotenvorlage nicht so gerendert.node.tpl.php
und gedruckthtml.tpl.php
? Wie würden Sie dasnode_view()
Problem angehen ?Antworten:
Das ist nicht ganz richtig. Wenn Sie sich das ansehen
template_preprocess_html()
, können Sie sehen, dass nichts durchrender()
/ läuftdrupal_render()
. So ganz einfach die Variablen in html.tpl.php eher gedruckt als gemacht , weil sie nicht brauchen gerendert werden. Alle Variablen sind bereits Zeichenfolgen, und zum Erstellen der Vorlage wurden keine Render-Arrays verwendet.Umgekehrt ist der Knoteninhalt in node.tpl.php ist ein Array machen. Alle Teile davon, die gerendert werden müssen, müssen durchlaufen
render()
und nicht nur gedruckt werden.Ich wäre versucht, dem Beispiel von Core für die Verwendung
render()
in Vorlagen und nicht in Vorverarbeitungsfunktionen zu folgen , es sei denn, Sie haben einen bestimmten Grund, dies anders zu tun.Aus Sicht der Leistung wäre der Unterschied sicherlich vernachlässigbar, aber die Profilerstellung des Codes im Kontext Ihrer Site und Hardware ist der einzige Weg, um sicher zu sein.
quelle