login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[TP] meerdere bestanden includen (Opgelost)

Offline Ultimatum - 03/03/2008 14:07
Avatar van UltimatumPHP expert Ik wil vanuit de database blocks laten laden in mijn menu, maar als ik de assignInclude functie binnen een while gebruik dan laat hij alleen de laatst geladen block zien. Hoe kan ik dit veranderen zonder in de .tpl steeds een nieuwe regel per block in te voegen zoals dit:
  1. <!-- INCLUDESCRIPT BLOCK : blocks -->


Ik heb nu onder andere dit in index.php staan:

  1. <?php
  2.  
  3. $tpl = new templatePower('templates/index.tpl');
  4.  
  5. $select = $db->query("SELECT block_file, view FROM blocks WHERE actief = 1");
  6. while($arr = $db->fetch($select)) {
  7. $tpl->assignInclude('blocks', 'blocks/'. $arr['block_file'] .'.php');
  8. }
  9. ?>


Hij overschrijft dus steeds dezelfde regel, maar weet niet hoe het anders kan zonder het dynamisch blijft.

11 antwoorden

Gesponsorde links
Offline ranco - 03/03/2008 15:14
Avatar van ranco PHP gevorderde Includescript block kan je maar 1 keer uitvoeren. Je voert namelijk steeds hetzelfde script uit.

Je moet deze tag gebruiken:

  1. $tpl->newBlock("naam van je block");


en dit in je tpl:
<!-- START BLOCK : naamvanjeblock -->
hier je repeterende data
<!-- END BLOCK : naamvanjeblock -->

Dan laat ie wel per resultaat iets zien. En overschrijft hij niet de eerdere blokken.
Offline Ultimatum - 03/03/2008 15:31
Avatar van Ultimatum PHP expert Aan zoiets zat ik ook te denken, maar ik moet echt de pagina includen. Want het zijn gewoon blokken zoals hier op sitemasters, ik bedoel dan bijvoorbeeld Poll, Statistieken etc.. En die wil ik dan door middel van mijn bovenstaande code inladen. En als ik met newBlock() werk dan kan dat niet.. In iedergeval bedankt voor je antwoord.
Offline ranco - 03/03/2008 15:47
Avatar van ranco PHP gevorderde Dat klopt, maar als je meerdere modules in je pagina wil aanroepen die bepaald worden uit je database zul je voor iedere module een aparte naam aan het blok moeten meegeven.

Het voordeel van TP is wanneer je geen data aanwijst voor de blokken, deze ook niet getoond worden. Dit werkt in ieder geval wel voor de wijze die ik al aangaf in mijn vorige post. Misschien dat het ook bij deze blokken gebeurd.

Dus plak in je tpl alle blokken die eventueel getoond moeten worden. Maar zorg wel dat ze allemaal apart genaamd zijn (misschien een extra veld in je db, zodat je meteen deze namen ook je db kan trekken).

En activeer ze (roep ze aan) als je ze nodig hebt, en anders niet.
Offline Grayen - 03/03/2008 15:54
Avatar van Grayen PHP ver gevorderde Je kan natuurlijk TP ook updaten, gewoon wat code aanpassen en wat je wilt kan je dan simpel realiseren.
Offline Ultimatum - 03/03/2008 16:24
Avatar van Ultimatum PHP expert @Ranco, wat jij beschrijft wil ik dus juist niet, zo word het niet meer dynamisch maar alleen maar statisch van. Ik wil dat als iemand bijvoorbeeld de map kalender aanmaakt in de map blocks dat automatisch kalender als block word gebruikt in het menu. Met jou oplossing moet ik eerst in de .tpl gaan prutsen.

@Grayen, snap niet precies wat je met updaten bedoeld en ik weet ook niet hoe ik de TP class moet aanpassen zodat het kan wat ik wil.
Offline Grayen - 03/03/2008 16:51
Avatar van Grayen PHP ver gevorderde Probeer het nu eens, nu zou wat jij in je begin post zette wel moeten werken, het is niet netjes gescript, maar het moet werken , eerst eens kijken of dit wel is wat jij wilt.

Plaatscode: 5896
Offline GTW - 03/03/2008 17:06
Avatar van GTW Gouden medaille

PHP gevorderde
Grayen, kijk eens naar de kleurtjes... je hebt vergeten een ' te escapen
Offline Grayen - 03/03/2008 17:26
Avatar van Grayen PHP ver gevorderde Nope, dat ligt aan plaatscode.be, doe maar bewerk en post opnieuw, dan zie je de code wel goed.
Offline Ultimatum - 03/03/2008 17:47 (laatste wijziging 03/03/2008 18:07)
Avatar van Ultimatum PHP expert Bedankt Grayen, zal even kijken. Moet ik ook nog wat aan die code van mijn beginpost wijzigen of niet?

Zal straks wel even laten weten of het werkt.

Ik kreeg heel veel errors, de meest doordat hij op de quote onderuit ging net zoals plaatscode aangaf. En 1x stond er geen as in foreach en daardoor kreeg ik daar een error.

Heb het zo aangepast:
http://www.plaatscode.be/5898/

Ik krijg nu op de plek waar de blocks geladen moeten worden nu 2x array te zien. Het gaat dus wel de goeie kant op want beide modules worden geladen, weet alleen niet waar de fout zit. Hoop dat iemand mijn code nog even kan aanpassen, vrees dat de fout bij de foreach zit die ik had aangepast. (Foreach staat op regel 242)
Offline Grayen - 03/03/2008 18:16
Avatar van Grayen PHP ver gevorderde Zo moet hij wel werken, dat je 2x Array te zien kreeg klopte ook, omdat je inderdaad de code bij die foreach fout had.

http://www.plaatscode.be/5899/

Zo heb even dat kleine stukje gewijzigd.

Weet wel dat dit alleen werkt bij include scriptblock, anders zou je die anderen ook even moeten aanpassen.
Offline Ultimatum - 03/03/2008 21:04
Avatar van Ultimatum PHP expert Bedankt hij doet het nu, moest alleen de quotes weer escapen, dit is de werkende versie.

http://www.plaatscode.be/5903/
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.229s