Pola dodatkowe dotyczą artykułów i powinny być wyświetlane na stronach związanych bezpośrednio z artykułami (np. artykuł lub kategoria).
Oczywiście można by je wyświetlać bezpośrednio w szablonie... tylko po co?
Szablon jest grafika ogólną i może wyświetlać widoki NIEzwiązane z artykułami np. kontakty lub cokolwiek innego.
Wpisywanie do szablonu kodu wyświetlającego coś z artykułów będzie takim wstawieniem na sztywno. Po co to robić skoro można używać modułów wraz z zachowaniem ich elastyczności.
Jak już wspomniałem, dodatkowe pola dotyczą artykułów i jest to niesamowicie przydatna funkcjonalność.
Można zapanować nad wyświetlaniem dodatkowych pól w widoku kategorii, artykułu lub modułu związanego z artykułami.
W widoku kategorii ten kod;
Kod PHP:
$this->item->jcfields
Wyświetli listę pól.
Można też wyświetlić konkretną wartość z pola:
Kod PHP:
$this->item->jcfields[1]->value
Wcześniej by określić numer danego pola w tablicy robisz:
Kod PHP:
print_r($this->item->jcfields)
Możesz też zrobić pętlę (przykład z pętlą w pętli z jednego z moich projektów):
Kod PHP:
<?php foreach ($this->item->jcfields as $key => &$poleBazy) { ?>
<tr>
<?php if($poleBazy->required == 1){$req = '<span class="klasa-wymagane">*</span>';} else {$req = null;}; ?>
<td class="tabela-etykieta ">
<?php echo $poleBazy->title; ?><?php echo $req; ?>
<?php if(isset($poleBazy->description)) { ?>
<div class="font-italic"><?php echo $poleBazy->description; ?></div>
<?php } ?>
</td>
<td class="tabela-wartosc">
<?php
if(is_array($poleBazy->value)) {
echo '<ul>';
foreach ($poleBazy->value as $key => &$poleParam) {
echo '<li>' . $poleParam . '</li>';
}
echo '</ul>';
} else {
echo nl2br($poleBazy->value);
}
?>
</td>
</tr>
<?php } ?>
Tak też można czarować całkiem nieźle Ale ma to sens wyłącznie w widoku związanym z artykułem a nie po prostu szablonem.