Frage zu Smarty: Kann man eine zentrale Variable setzen?

Thema wurde von MJ, 15. Mai 2011 erstellt.

  1. MJ

    MJ Erfahrener Benutzer

    Registriert seit:
    28. April 2011
    Beiträge:
    525
    Danke erhalten:
    54
    Danke vergeben:
    91
    #1 MJ, 15. Mai 2011
    Zuletzt bearbeitet: 15. Mai 2011
    Erledigt: Frage zu Smarty: Kann man eine zentrale Variable setzen?

    Ich würde mir gern in den einzelnen Templatefiles Kommentare setzen, die nur angezeigt werden wenn eine von mir zentral definierte Variable true ist. Geht das?

    Also zum Beispiel so:

    Code:
    {if $foo} Zeige diesen Text ... {/if}

    Und $foo müsste irgendwo direkt im Quelltext von mir gesetzt werden können. (notfalls auch im Core, lieber im template-Ordner).

    .. nur wo ..

    Vielleicht kann jemand einen Tipp geben, vielen Dank.

    MJ
     
  2. MJ

    MJ Erfahrener Benutzer

    Registriert seit:
    28. April 2011
    Beiträge:
    525
    Danke erhalten:
    54
    Danke vergeben:
    91
    Super ...

    ich kann mir die dumme Frage gleich selbst beantworten. Manchmal hilft's darüber zu reden :)

    Hab mir die Var jetzt in die configure.php geschrieben.

    Code:
    define('SHOW_MY_COMMENTS', true);
     
  3. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Sowas macht mich immer neugierig! Kannst Du mir bitte den Sinn/Zweck ebbes genauer erklären.
     
  4. MJ

    MJ Erfahrener Benutzer

    Registriert seit:
    28. April 2011
    Beiträge:
    525
    Danke erhalten:
    54
    Danke vergeben:
    91
    #4 MJ, 16. Mai 2011
    Zuletzt bearbeitet: 16. Mai 2011
    Hallo Manfred

    Im Grunde will ich beim Entwickeln nur sehen, welche Datei gerade involviert ist. Gerade bei den Produktlistings. Deshalb habe ich mir angewöhnt, in die Dateien (Beispiel: template/module/product_info/Anzeige_mit_Menge.html) im Kopf immer den Dateinamen mit reinzuschreiben. Also hier beim Beispiel würde dann im Kopf stehen:

    Code:
    {if MY_COMMENTS}<small>module/product_info/Anzeige_mit_Menge</small>{/if}
    Teilweise hab ich dann noch Kommentare für mich drin zu stehen was noch gemacht werden muss usw. und am Ende jeder Datei hau ich bei mir immer Folgendes rein:
    Code:
    {if MY_COMMENTS}<small>END module/product_info/Anzeige_mit_Menge</small>{/if}
    {if MY_DEBUG}<div class="debugMJ">{debug output=html}</div>{/if}
    Die beiden Variablen definiere ich am Ende der configure.php.
    Code:
      define('MY_COMMENTS', true);
      define('MY_DEBUG', true);
    Damit kann ich mir dann das Zeugs anzeigen lassen oder eben nicht. Keine Ahnung, ob's da einen besseren Weg gibt, aber mir hilft das, den Überblick zu behalten, wenn man diverse Listing-Templates erstellt.

    Freue mich über jede weitere Info dazu.


    Liebe Grüße
     
  5. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    #5 Manni_HB, 20. Mai 2011
    Zuletzt bearbeitet: 21. Mai 2011
    Hallo MJ,

    angeregt durch deinen Betrag habe ich meinen Spiel- und Basteltrieb mal in die Freiheit entlassen - ist besser wenn er ansonsten im Keller bleibt! :)

    Mein Wunsch:
    (debug) auf jedem Client (ohne FirePHP erst zu installieren)
    Minimale Änderungen an Corefiles
    Useräbhängig debug ON/OFF

    Also habe ich eine kleine Funktion gebastelt...
    Code:
    <?php
    function mbr_debug() {
    
    //	if ($_SERVER[QUERY_STRING]=='meinKW'){
    	if ($_SESSION['customer_cid']=='meineCID'){
    		return 'true';
    	}	
    	return 'false';
    }
    ?>

    ... und in der Index.html ...
    Code:
    {php}if(mbr_debug()=='true'){{/php}{debug}{php}}{/php}
    ... diese Zeile bevor das ganze DIV-Geraffel losgeht eingesetzt.

    Nun sieht der User mit der "cid" (selber vergebene KundenNummer, nicht verwechseln mit "id"!!) auf jeder Seite das schöne SmartyDebug-Fenster.
    Ich hatte erst mit dem "QUERY_STRING" gespielt.
    Nachtteil: Dauernd die depperte Eingabe hinter der URL und ... es geht nicht bei html-Urls.

    Dass ich in der Funktion für "meineCID" natürlich nur die mir bekannte "KdNr" eingesetzt habe ist klar.
    Wenn man nun nicht alle Seiten debugen will, kann man die kleine PHP-Zeile statt in der "Index.html" z.B. auch in "content.html" oder sonstwo einsetzen.

    Jetzt sollte ich nur noch wissen, ob und wie man das SmartyDebug-Fenster gestalten kann.
    Was will mir diese Zeile bei Dir sagen...
    Code:
    <div class="debugMJ">{debug output=html}</div>
    Würde mich über Echo freuen.
     
  6. MJ

    MJ Erfahrener Benutzer

    Registriert seit:
    28. April 2011
    Beiträge:
    525
    Danke erhalten:
    54
    Danke vergeben:
    91
    #6 MJ, 31. Mai 2011
    Zuletzt bearbeitet: 31. Mai 2011
    Hallo Manfred,

    entschuldige, das ich erst jetzt antworte - ich hatte vergessen den Thread zu abonnieren.

    Diese letzte Zeile gibt mir das smarty-debug-zeuchs mit allen vars als html aus. Wenn man das output weglässt und nur das debug benutzt, erscheint stattdessen ein popup mit dem debug-zeuchs. Ich hab das in ein div gepackt um es bei Bedarf noch auszuweiten. Ich dachte dabei daran, dieses div per default auszublenden und mit nem "Spezial-Button" nur bei Bedarf wieder einzublenden. Gekoppelt mit Deiner Funktion natürlich noch besser.

    Per CSS könntest Du jetzt natürlich noch diese Ausgabe anpassen, aber da man es ja wirklich nur benötigt, wenn man das Template anpasst, wäre das vermutlich einfach zu viel Aufwand.

    Ich hatte mir das auch nur reingeschrieben, um beim Template anpassen nicht den Überblick zu verlieren wann welche include-Seite anfängt bzw zu Ende ist. Gerade bei den product-listings brauchte ich das.

    Mittlerweile bin ich da durch und kämpfe mit den nächsten Problemen :D

    Liebe Grüße, MJ