login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Block onzichtbaar maken in Templatepower

Offline BNoise - 30/04/2006 20:58
Avatar van BNoiseNieuw lid Beste mensen.

Ik ben nu redelijk opweg met mijn TemplatePower modificatie, ik ben er iets aan het inbouwen zodat mensen met een rank bepaalde blocks wel - of niet kunnen zien. Nu is het mij gelukt om een nieuwe 'soort' block aan te maken (<!-- START STATUS -->), nu is het mij ook gelukt om een check te maken of je dat block wel mag zien.

Wat me nu nog niet lukt, is een block onzichtbaar maken (niet laten parsen) als je daar de rechten niet voor hebt. Weet iemand hoe dat moet? Of wil iemand met verstand van classes er even naar kijken?

10 antwoorden

Gesponsorde links
Offline Gerard - 30/04/2006 22:19 (laatste wijziging 30/04/2006 22:20)
Avatar van Gerard Ouwe rakker "Waarom het wiel opnieuw uitvinden?" zoals Murfy vandaag al eerder zei.

Je kan in TP zelf al blocks aanmaken. <!-- START BLOCK : appel -->

Wanneer iemand wel toegang heeft tot een bepaalde status dan maak je dit block 1 keer aan (ook al kan het ook herhalend aangemaakt worden), heeft iemand er geen toegang tot dan laat je het block gewoon niet zien (door geen newBlock aan te sturen).
Offline BNoise - 01/05/2006 10:01
Avatar van BNoise Nieuw lid Klopt. Maar ik heb géén zin om elke keer in de PHP bestanden aan te tonen dat er een nieuw block komt voor een nieuwe gebruiker. Dan is het toch veel handiger als je gewoon enkel in de TPL een BLOCK hoeft aan te maken, zonder in de PHP te kloten, en dat de TemplatePower class meteen begrijpt wat er moet gebeuren?
Offline kokx - 01/05/2006 10:09
Avatar van kokx Onbekend @BNoise: Ik denk niet dat dat zo simpel is als het lijkt. Dan zou je eerst de class zelf helemaal moeten begrijpen. Dan kun je eigenlijk net zo goed zelf een templateparser maken.
Offline BNoise - 01/05/2006 10:32
Avatar van BNoise Nieuw lid YES!!!! Met mijn 0,0 verstand van classes heb ik het toch nog voor mekaar gekregen. Nog niet helemaal uitvoerig getest, maar voor zover ik heb gestest werkt hij perfect.

Degene die ook geinteresseerd zijn kunnen me PB-en.
Offline Thomas - 01/05/2006 11:10 (laatste wijziging 01/05/2006 11:11)
Avatar van Thomas Moderator heb je de TemplatePower-class aangepast? Waarom zou je dat willen doen? Zoals Proximus zegt biedt TemplatePower van zichzelf genoeg functionaliteit om te realiseren wat jij wilt. De class van TP is zodanig opgezet dat variabelen / blocks "vrij in te vullen" zijn - ze zijn niet bedoeld voor een specifiek doel. De code die achter het template hangt geeft een bepaalde betekenis aan variabelen / blocks en bepaalt hoe deze gebruikt worden.
Ik zou aan de TP class geen toevoegingen doen die voor een specifiek doel bedoeld zijn, want dit kun je (nogmaals) in je code regelen.

Als je $tpl->newBlock("some_block") niet aanroept, zal some_block simpelweg niet getoond worden - veel simpeler kan het niet?
Offline Ibrahim - 01/05/2006 11:42 (laatste wijziging 01/05/2006 11:43)
Avatar van Ibrahim PHP expert en een voorbeeldje:


rank.php
  1. <?php
  2.  
  3. ## include hier templatepower
  4.  
  5. $tpl = new TemplatePower('rank.tpl'); ## begin een nieuwe bestand
  6.  
  7. $tpl->prepare( );
  8.  
  9. ## gebruiker logt in
  10.  
  11. ## rank wordt gezet in een sessie/cookie
  12.  
  13. switch( $_SESSION['rank'] )
  14. {
  15. case 1:
  16. $tpl->newBlock("Admin");
  17. break;
  18. case 2:
  19. $tpl->newBlock("Mod");
  20. break;
  21. case 3:
  22. $tpl->newBlock("Lid");
  23. break;
  24. case 4:
  25. $tpl->newBlock("Ban");
  26. break;
  27. }
  28.  
  29. $tpl->PrintToScreen( );
  30. ?>


rank.tpl
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Bestand : Rank.tpl</title>
  6. </head>
  7.  
  8. <body>
  9. <!-- START BLOCK : Admin -->
  10.  
  11. Welkom Admin
  12.  
  13. <!-- END BLOCK : Admin -->
  14.  
  15. <!-- START BLOCK : Mod -->
  16.  
  17. Welkom Mod
  18.  
  19. <!-- END BLOCK : Mod -->
  20.  
  21. <!-- START BLOCK : Lid -->
  22.  
  23. Welkom Lid
  24.  
  25. <!-- END BLOCK : Lid -->
  26.  
  27. <!-- START BLOCK : Ban -->
  28.  
  29. U bent gebanned
  30.  
  31. <!-- END BLOCK : Ban -->
  32.  
  33. </body>
  34. </html>


snap je ? als iemand rank 1 heeft krijg ie dan ook alleen block admin te zien
enz. met de anderen
Offline BNoise - 01/05/2006 12:09
Avatar van BNoise Nieuw lid
  1. switch( $_SESSION['rank'] )
  2. {
  3. case 1:
  4. $tpl->newBlock("Admin");
  5. break;
  6. case 2:
  7. $tpl->newBlock("Mod");
  8. break;
  9. case 3:
  10. $tpl->newBlock("Lid");
  11. break;
  12. case 4:
  13. $tpl->newBlock("Ban");
  14. break;
  15. }


Ik snap ook wel hoe dat moet hoor..Alleen ik heb geen zin om in pak een beet 50 bestanden elke keer zoiets te doen.
Zoals ik het er heb ikgebouwd krijg ik hetzelfde resultaat maar bespaar ik me die code hierboven ;)
Offline Ibrahim - 01/05/2006 12:13
Avatar van Ibrahim PHP expert als je het in pak een beet:p 50 bestanden moet doen dan maak je toch een class/functie zodat je het wat algemener kunt maken en include je het in die bestanden ?
Offline Thomas - 01/05/2006 12:42
Avatar van Thomas Moderator Het klinkt alsof de opzet van je site niet ideaal is. Met TemplatePower kun je veel dingen heel gemakkelijk regelen als je je site een beetje fatsoenlijk in elkaar steekt. Het opzetten van een "raamwerk" met TP kost wat tijd, maar als je dit eenmaal voor elkaar hebt bespaart het je weer (veel meer?) tijd.
Offline BNoise - 01/05/2006 13:18 (laatste wijziging 01/05/2006 13:19)
Avatar van BNoise Nieuw lid Ik zal jullie even een voorbeeldje geven.

OF (zonder mij ombouw-gedoe):
crew.php
  1. <?php
  2. include("includes.inc.php"); //alle zooi erbij halen
  3. if($ingelogd == 1) { //ben je ingelogd
  4. if($gebruiker['type'] > 2) { //is je type hoger dan 2?
  5. $tpl->newBlock("crew"); //block starten
  6. } //afsluiten
  7. } //afsluiten
  8. ?>


crew.tpl
  1. <!-- START BLOCK : crew -->
  2. Je bent een crew-lid!
  3. <!-- END BLOCK : crew -->


OF, zoals ik nu heb, met mijn modificatie:
crew.php
  1. <?php
  2. include("includes.inc.php"); //alle zooi erbij halen
  3. //verder niks dus :)
  4. ?>


crew.tpl
  1. <!-- STATUS BLOCK : 3|4|5 -->
  2. Je bent een crew-lid!
  3. <!-- UNSTATUS BLOCK : 3|4|5 -->


dit bespaart me dus wat gedoe in de PHP;-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.256s