Autor Zpráva
aladin
Profil *
Zdravím,nedávno jsem tu psal ohledně template systemu,že jsem si dělal vlastní,a vy jste sem dali odkaz na jores template..
po shlédnutí jsem si řekl,že na to prdím,a budu to dělat přes něj..
ale potřeboval bych poradit..
ten základ jakoby mám,ale potřeboval bych udělat bloky,jelikož potřebuju udělat menu který budu brát z databáze,takže bude jen jeden div se sidebarem,a budu je vypisovat z db..(abych mohl popř přidat další menu/panel aniž bych zasahoval do php/html)

z tý dokumentace na jeho webu jsem to trochu nepochopil...
musí se tam registrovat ten blok,to vím..no dám se kod kterej mám v indexu,a napište mě jak by to mělo být správně..
(jako příklad jsem tam dal zatím while,jako cyklus aby ukázal čísla od 1 do 10. děkuji
$sablona_adresar = "template/default";
$sablona = "index.tpl";
  $sablony = new JoresTemplate($sablona_adresar);
  $sablony->register_tpl(array("stranka"=>$sablona));
  $sablony->assign("sidebara", "ahoj");
  $sablony->register_block("$sablona_galerie", "sidebar");
      $a=1;
        while($a>11){
      $aa = $a;
        $sablony->multi_assign(array("sidebar"=>$aa));   
        $sablony->parse_block (array("stranka", sidebar));
  }  


  echo($sablony->parse("stranka"));
Joker
Profil
aladin:
Jé, no to už je dobrých 5 let, co jsem to dělal :-)
Doufám, že si vzpomenu správně.

Takže, v register_block by měl být zaregistrovaný název šablony a název bloku, čili pokud je zaregistrovaná jen šablona "sablona", volání by asi mělo vypadat:
$sablony->register_block("sablona", "sidebar");
Dál multi_assign slouží k přiřazení více hodnot najednou, když se přiřazuje jen jedna hodnota, stačilo by použít assign:
$sablony->assign("PROMENNA", "hodnota");
Přičemž hodnota by se neměla přiřazovat bloku, ale proměnné v šabloně, čili šablona by měla vypadat například:
<!-- JTPL: START BLOCK: sidebar -->
{PROMENNA}
<!-- JTPL: END BLOCK: sidebar -->

Metoda parse_block nemá jeden argument typu pole, ale dva argumenty, a to název šablony a název bloku (viz i dokumentace). A řetězec má být v uvozovkách.
Čili by to mělo být:
$sablony->parse_block("stranka", "sidebar");

Krom toho kdyby to bylo napsané správně, vznikl by tam nekonečný cyklus, protože v cyklu while se nemění hodnota $a.
Nekonečný cyklus nevznikne jen proto, že podmínka cyklu je $a>11, což není splněno už na začátku a do cyklu se vůbec nevleze.
A jinak je zbytečné si před přiřazením proměnnou kopírovat do jiné proměnné ($a do $aa).

Oprava: V posledním kódu jsem omylem zkopíroval i slovo array, které tam nepatří.
aladin
Profil *
no,v tpl šabloně to mám takhle
<!-- JTPL: START BLOCK: sidebar -->
<div class="sidebar">
<div class="name">{sidebar}</div>
<div class="text"></div>
</div>
<!-- JTPL: END BLOCK: sidebar -->

potřebuju aby to dělalo cykly jen pro ten blok...

takže v php to bude takhle?
$sablona_adresar = "template/default";
$sablona_galerie = "index.tpl";
  $sablony = new JoresTemplate($sablona_adresar);
  $sablony->register_tpl(array("stranka"=>$sablona_galerie));
  
  $sablony->assign("sidebars", "ahoj");
  $sablony->register_block("sablona", "sidebar");
  $a=1;
  while($a>11){
  $as=$a++;
  } 
  $sablony->assign("sidebar", $as);    
  
  $sablony->parse_block("stranka", "sidebar");
  echo($sablony->parse("stranka"));
nebo jak tam zařadím foreach nebo while?prostě jakej koliv cyklovač?
Joker
Profil
aladin:
v tpl šabloně to mám takhle
Tak pak asi jo. Sice bych asi neprosazoval stejné pojmenování bloků a proměnných, ale snad by to nemělo vadit.

Ad PHP, assign a parse_block by měly být uvnitř cyklu.
Úplně jednoduše:
  while($a>11){
    $sablony->assign("sidebar", $a); 
    $sablony->parse_block("stranka", "sidebar");
    $a++;
  } 
Tohle by mělo fungovat.
Dodatek: Když jsem teda pominul fakt, že podmínka toho cyklu je pořád špatně. Mělo by tam být $a<11
aladin
Profil *
nejde to,na stránce mě to ukazuje {sidebar}
jakoby to tu proměnnou neznal


tak mě to už jde,ale vypíše to jenom poslení číslo,jenom prostě jedno číslo, a k tomu to poslední..což je 10
Joker
Profil
aladin:
Jak vypadá aktuální kód toho cyklu?
aladin
Profil *
  $sablony->register_block("sablona", "sidebar");
  $a=1;
while($a<10){
    $sablony->assign("sidebar", $a);
    $sablony->parse_block("stranka", "sidebar");
    $a++;} 
Joker
Profil
aladin:
Tak jestli je tam 10, tak to způsobí přiřazení až někde později, protože tenhle cyklus může přiřadit maximálně 9.

Jinak je ještě možné pro testování přidat $sablony->debug();, aby to vypisovalo případné chybové hlášky.
aladin
Profil *
jo,tady u toho to ukazuje 9,ale potřeboval bych aby to dělalo ten cyklus že to vypíše teda těch 123456789
a ne jenom to poslední číslo 9
ten cyklus mám správně,když to dám normálně přes echo tak to funguje v pořádku
Joker
Profil
aladin:
Tak ještě v register_block a v parse_block se používá různý název šablony. Jen jeden z nich bude správně.
Což by právě měl odhalit i ten debug.
aladin
Profil *
debug nic neříká...teda pokud jsem to použil správně..celý kod vypadá takto:
$sablona_adresar = "template/default";
$sablona_galerie = "index.tpl";
  $sablony = new JoresTemplate($sablona_adresar);
  $sablony->register_tpl(array("stranka"=>$sablona_galerie));
  
  $sablony->assign("sidebars", "ahoj");
  $sablony->register_block("sablona", "sidebar");
  $a=1;
while($a<10){
    $sablony->assign("sidebar", $a);
    $sablony->parse_block("stranka", "sidebar");
    $a++;} 
  $sablony->debug();  
  echo($sablony->parse("stranka"));
Joker
Profil
aladin:
Ten debug má být hned na začátku za vytvořením objektu.
Ale asi to nebude ani potřeba, na řádku 7 se používá šablona "sablona", která není zaregistrovaná. Asi tam má být "stranka".
aladin
Profil *
no joo...už to jde:D taková blbost..už to fakčí..díky moc :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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