Autor Zpráva
Krkmol
Profil *
houstone, mame zase problem:) potreboval bych najit nejlepsi reseni na generovani obsahu do sablony. Zatim nepouzivam zadny sablonovaci system. Do sablony dostanu jen promenou jako pole obsahujici vsechny zaznamy k zobrazeni, foreachem to projedu a vypisu mix html a hodnot z pole.

Cekal jsem, ze nenarazim na nic slozitejsiho a ze nebudu pouzivat zadny sablonovaci system. Ted je ale potreba vygenerovat menu, ktere ma vice urovni, pomoci ciste php se mi to zda uz neprehledne, tak bych si rad nechal poradit jak nejjednoduseji se takove veci delaji. Konkretne:

- Polozky menu mam ulozeny v XML, konkretne je tam jmeno, url, muze tam byt cokoli dalsiho. Uroven polozky je dana jejim zanorenim v XML do nadrazene polozky. Zpracuji to phpkem, vysledek je vicerozmerne pole ve tvaru $menu[0][uroven pole s udaji polozky]. Pokud ma polozka dalsi uroven (podpolozku), pole se od ni dale vetvi.
- V sablone je pak potreba jednu vetev menu generovat do tohoto html:
<li><a href="#">nazev polozky 1. urovne</a>
<ul>
<li><a odkaz polozky>nazev polozky 2. urovne</a></li>
<li><a odkaz polozky>nazev polozky 2. urovne</a>
<ul>
<li><a odkaz polozky>nazev polozky 3.urovne</a></li>
</ul>
</li>
<li><a odkaz polozky>nazev polozky 2. urovne</a></li>
<li><a odkaz polozky>nazev polozky 2. urovne</a></li>
</ul>
</li>


Existuje nejake jednoduche reseni pres sablonovaci system namisto prochazeni pole pomoci foreach v php a pouzivani if? Jak nejjednoduseji byste to udelali?

diky moc Kr
srigi
Profil
Ja pouzivam sablonovaci system bTemplate. Ten dokaze sam zaiterovat nad polom poli. Priklad:
obsah pola $list: >> print_r($list);

Array
(
    [0] => Array
        (
            [filename] => f_cena.jpg
            [filesize] => 37.39kB
            [path_for_editor] => /public/images/banery/f_cena.jpg
            [path_for_deletion] => banners/f_cena.jpg
            [thumb] => /public/images/banery/thumbs/f_cena.jpg
        )

    [1] => Array
        (
            [filename] => f_kontakt.jpg
            [filesize] => 13.58kB
            [path_for_editor] => /public/images/banery/f_kontakt.jpg
            [path_for_deletion] => banners/f_kontakt.jpg
            [thumb] => /public/images/banery/thumbs/f_kontakt.jpg
        )
)


Toto pole predhodim sablonovaciemu stroju:

$templateEngine = new bTemplate('/path/to/templates' . DIRSEP);
$templateEngine->set('list', $list);
// render
echo $templateEngine->fetch('sablona.tpl');

sablona.tpl
        {loop:list}
          <tr>
            <td class="center"><a href="{tag:list[].path_for_editor /}" class="highslide" onclick="return hs.expand(this)"><img src="{tag:list[].thumb /}" alt="Highslide JS" title="Kliknite pre zväčšenie obrázku" /></a></td>
            <td class="left">{tag:list[].filename /}</td>
            <td class="left">{tag:list[].filesize /}</td>
            <td class="left">{tag:list[].path_for_editor /}</td>
            <td class="left">
              <a class="sexy_subm_button" href="/admin/static-images/delete-image/{tag:list[].path_for_deletion /}" onclick="this.blur();"><span>zmazať</span></a>
            </td>
          </tr>
        {/loop:list}


Vysledok moze vypadat cca takto:



Takze svoje menu iba prekonvertuj na dvoj a viac rozmerne pole, bTemplate si s tym dokaze jednoducho poradit (neviem ale ako sa zachova, ked bude hlbka premenliva - treba pospekulovat). Ale ako sam vidis, je sablona velmi prehladna, ziadny PHP kod. Silno odporucam (bTemplate je lightweight a very-fast temptate system).
capricorn
Profil
Neco podobneho jsem resil vcera a stacil me na to jeden cyklus, napr.:

Array ( [0] => Array ( [kategorie] => Auto-moto
[podkategorie] => Pnematiky )
[1] => Array ( [kategorie] => Počítače
[podkategorie] => Monitory ) )

foreach($array as $key => $value){
echo $array[$key]['kategorie'];
echo $array[$key]['podkategorie'];
}
Krkmol
Profil *
diky za tipy!

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: