Zająłem się ostatnio projektem katalogu siłowni i klubów fitness ( www.klubfitness.eu) . Jako skryptu postanowiłem użyć SOBI2, choć mało miałem z nim wcześniej do czynienia. Wiele rzeczy się udało, oprócz jednej – otóż za formatowanie całego pola adresu, nr-u telefonu i opisu odpowiada jedna funkcja :
sobi2.details.tmpl.php
<?php echo HTML_SOBI::customFieldsData( $fieldsFormatted );?>
No i klops. Jednak znalazłem na zagranicznej stronie funkcję, która pozwala na wywoływanie własnych pól w pliku templatki.
Otóż robimy tak:
1. Wchodzimy w pliczek COM_SOBI2/sobi2.html.php i dopisujemy nową funkcję:
function getItemDesc($config,$mySobi)
{
sobi2Config::import(„sobi2.entry”);
return sobiEntry::getItemDesc( $config,$mySobi );
}
2. Wchodzimy do pliczku COM_SOBI2/sobi2.entry.php i dopisujemy nową funkcję wewnątrz klasy SOBI (czyli przed ostatnią klamerką dodajemy ten kod):
function getItemDesc($config, $mySobi)
{
$fieldsObjects =& $mySobi->myFields;
//$my =& $config->getUser();
//$cid = intval( sobi2Config::request( $_REQUEST, 'catid’, 0 ) );
foreach( $fieldsObjects as $field )
{
$field->name = $config->getSobiStr( $field->fieldname );
$field->label = $config->getSobiStr( $field->label );
if($field->name==’field_description’)
{
echo $field->data;
}
}
}
3. Gotowe! Teraz w pliku templatki możemy wywołać dowolne pole kodem:
<?php echo $fieldsObjects[’field_name’]->label; ?>
<?php echo $fieldsObjects[’field_name’]->data; ?>
Za field name wstawiamy np. field_city, field_phone, czy field_wojewodztwo czyli dowolne pola, w tym także dodane przez nas.
Mała uwaga: kod z końcówką –>label wyświetli tylko etykietę wpisu np. miasto Warszawa , natomiast kod z końcówką –> data wyświetli wartość wpisu np. miasto Warszawa