login  Naam:   Wachtwoord: 
Registreer je!
 Forum

TPL header wisselen (Opgelost)

Offline Marly - 30/08/2009 18:37
Avatar van MarlyHTML interesse Ik ben op dit moment weer aan het experimenteren met TPL bestanden.
Nu heb ik een leuke lay-out gemaakt, en heb 2 afbeeldingen als header.
Alleen deze moeten gewisseld worden, de ene keer de 1 den andere keer de ander als je de pagina bezoekt.

Alleen hoe kan ik dit realiseren binnen een TPL bestand.
Kan me herinneren dat ik het eerder met javascript zoiets gemaakt heb, maar heb geen flauw idee hoe of wat.

Iemand die me hier mee kan/wil helpen?

10 antwoorden

Gesponsorde links
Offline Wim - 30/08/2009 18:43 (laatste wijziging 30/08/2009 18:44)
Avatar van Wim Crew algemeen Je zou een templatevariabele kunnen meegeven in de imagenaam, zodat je iets krijgt in de aard van:
  1. <img src="images/header_{headernr}.jpg" />
. {headernr} kan je in je phpcode dan makkelijk een waarde geven, bijvoorbeeld 1 en 2. Welke header je wilt laten zien kan je dan weer opslaan in een sessie.

Als je deze methode niet goed genoeg vindt, kan je -zoals je zelf al aangaf- dit ook via javascript doen door een id aan de image mee te geven en het path te veranderen met JS.

Mij lijk het echter wel het meest logische om dit via php op te lossen.
Offline Marly - 01/09/2009 10:42
Avatar van Marly HTML interesse Ik ben even aan het prutsen geweest.
Ik kreeg het zover dat ik door de code zelf te wijziggen een andere afbeelding kreeg.

heb nu afbeeldingen:
header_1.jpg
header_2.jpg

Nu wil ik deze random aanroepen door middel van een php/javascript.
Alleen zou ik niet weten hoe dit moet omdat ik maar 2 afbeeldingen heb...
Offline vinTage - 01/09/2009 10:54 (laatste wijziging 01/09/2009 10:55)
Avatar van vinTage Nieuw lid
  1. <img src="header_<?php echo rand(1,2);?>.jpg" alt="plaatje" />
Offline Marly - 01/09/2009 11:21 (laatste wijziging 01/09/2009 11:50)
Avatar van Marly HTML interesse Dat ga ik is even proberen 
Bedankt zover 

Edit...
Helaas, in een gewone lay-out werkt dit wel, alleen in een TPL bestand niet.
Heb net wat gespeel mar krijg het nog niet werkend...
Iemand nog een idee?
Offline ArieMedia - 01/09/2009 11:59
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Marly schreef:
Dat ga ik is even proberen 
Bedankt zover 

Edit...
Helaas, in een gewone lay-out werkt dit wel, alleen in een TPL bestand niet.
Heb net wat gespeel mar krijg het nog niet werkend...
Iemand nog een idee?
Ik neem aan dat je toch wel content kan doorsturen?
VB van Smarty (Template Engine)
  1. <?php
  2. // ik schrijf alles in classes daarom $this->
  3. $aIMG = array('henk.gif', 'sjaak.jpg', 'appie.jpg');
  4. $i = rand(0, (count($aIMG) - 1)); // random afbeelding
  5. $this->cTPL->assign(array('afb' => $aAfb[$i])); // toekennen
  6. echo $this->cTPL->fetch('iets.tpl'); // laten zien
  7. ?>
Offline Wim - 01/09/2009 12:38
Avatar van Wim Crew algemeen
wimmarien schreef:
Je zou een templatevariabele kunnen meegeven in de imagenaam, zodat je iets krijgt in de aard van:
[..code..]. {headernr} kan je in je phpcode dan makkelijk een waarde geven, bijvoorbeeld 1 en 2. Welke header je wilt laten zien kan je dan weer opslaan in een sessie.
Offline Marly - 01/09/2009 15:28
Avatar van Marly HTML interesse
wimmarien schreef:
Je zou een templatevariabele kunnen meegeven in de imagenaam, zodat je iets krijgt in de aard van:
[..code..]. {headernr} kan je in je phpcode dan makkelijk een waarde geven, bijvoorbeeld 1 en 2. Welke header je wilt laten zien kan je dan weer opslaan in een sessie.

Als je deze methode niet goed genoeg vindt, kan je -zoals je zelf al aangaf- dit ook via javascript doen door een id aan de image mee te geven en het path te veranderen met JS.

Mij lijk het echter wel het meest logische om dit via php op te lossen.


Ja, ik snap hoe je het bedoeld.
Ik weet zo alleen niet hoe ik het in de php code moet verwerken.
Want de code die Vintage gaf, lijkt mij wel goed.
  1. 1.<img src="header_<?php echo rand(1,2);?>.jpg" alt="plaatje" />


Alleen weet ik niet hoe ik dat goed in de PHP kan verwerken zodat je daarna het plaatje dus goed kan weergeven en dus veranderd als je de pagina opent.

Heb zelf nog steeds ruzie met PHP en TPL bestanden...
Ik ga me zelf ook is goed in de TPL bestanden gooien, kijken hoe ik er meer van kan leren.

Alvast bedankt 
Offline ArieMedia - 01/09/2009 15:33
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Marly schreef:
[..quote..]

Ja, ik snap hoe je het bedoeld.
Ik weet zo alleen niet hoe ik het in de php code moet verwerken.
Want de code die Vintage gaf, lijkt mij wel goed.
[..code..]

Alleen weet ik niet hoe ik dat goed in de PHP kan verwerken zodat je daarna het plaatje dus goed kan weergeven en dus veranderd als je de pagina opent.

Heb zelf nog steeds ruzie met PHP en TPL bestanden...
Ik ga me zelf ook is goed in de TPL bestanden gooien, kijken hoe ik er meer van kan leren.

Alvast bedankt 
Volgensmij snap jij het doel nieteens van template's

Met template's houd je code en opmaak gescheiden. Als je die code van Vintage in jou template gaat stoppen is een template gigantisch overbodig. het image gedeelte (<img src="header_{$i}.jpg">) is hetgene wat je in je template moet stoppen want dit is opmaak, en $i is een variabele die je vanaf jou PHP-code gaat invullen!

Voorbeeld heb ik gegeven 2 posts boven deze
Offline Marly - 01/09/2009 15:39 (laatste wijziging 01/09/2009 16:10)
Avatar van Marly HTML interesse Ok, bedankt voor de uitleg.
Dat template's en php gescheiden zijn, dat snap ik.
Alleen snap ik (nu wat beter) steeds niet hoe het goed gescheiden te houden.

Ooit ga ik het nog leren ;)

EDIT

Het is me gelukt.
Bedankt iedereen 

  1. // dit heb ik in de index.php toegevoegd
  2.  
  3. // random header
  4. $headerimg = rand(1,2);
  5.  
  6. // zodat ik hem dus kan aanroepen in de TPL
  7. $inhoud = str_replace("{headerimg}",$headerimg,$inhoud);
  8.  
  9.  
  10. //dit heb ik in de TPL bestanden teogevoegd
  11. <img src="{urlstyle}images/header_{headerimg}.jpg">
Offline ArieMedia - 01/09/2009 16:10 (laatste wijziging 01/09/2009 16:11)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Marly schreef:
Ok, bedankt voor de uitleg.
Dat template's en php gescheiden zijn, dat snap ik.
Alleen snap ik (nu wat beter) steeds niet hoe het goed gescheiden te houden.

Ooit ga ik het nog leren ;)
Als voorbeeld. je hebt een header, menu en een content die je weer wil geven.
Menu en content zijn variabel. de header is vast.
De header hoef je dus niet mee te geven en deze staat dus vast in je template. (<div id="header">&nbsp;</div>);

Je menu en content bouw je op. Bijvoorbeeld
  1. $sMenu = '<a href="dingdong.nl">Dingdong</a>';
  2. $sMenu .= '<br><a href="home">Home</a>';
  3.  
  4. $sContent = 'Kijk eens wat een leuke tekst';
  5. /**
  6. Je hebt nu dus en je menu en content klaar om in een template te zetten! We moeten eerst zeggen dat dit een variabele word in de template de hele template staat 1 codeblok naar onder
  7. **/
  8.  
  9. // We gaan hier (uitgaand van SMARTY) de waardes invullen
  10. $cSmarty = new Smarty(); // dus de template class
  11. $cSmarty->assign( // assign is invullen bij smarty
  12. array('menu' => $sMenu, 'content' => $sContent));
  13. echo $cSmarty->fetch('template.tpl');


Je template-blok word nu..
  1. <div id="header">&nbsp;</div>
  2. <div id="menu">{$menu}</div> <!-- Menu uit assign(array('menu' => ... --->
  3. <div id="content">{$content}</div> <!-- Content uit assign(array('content' => ... --->

Voor Smarty zelf heb ik een heel klein ini-mini tutje op mijn eigen site staan.. Ik zal binnenkort een uitgebreide posten!
Click Meeh! For Tut
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.222s