gelöst Neue Smarty-Variable in Overload-Class definieren

Thema wurde von Anonymous, 2. Juni 2017 erstellt.

  1. Anonymous

    Anonymous Mitglied

    Hallo,

    iwie kann ich in einer überaldenen Klasse einde Smarty Variable definieren?

    ich habe eine Klasse MyProductInfoContentView erstellt und bekomme eine Fehlermeldung :
    (Link nur für registrierte Nutzer sichtbar.)

    Wie muß ich die Variable korrekt definieren?

    Vielen Dank im Voraus.
    Andi

    -------------------------------------------------------------------------------------------
    PHP:
    class MyProductInfoContentView extends ProductInfoContentView
    {
       
       public function 
    __construct($template = 'default')
       {
           
    parent::__construct();

       }
     

       public function 
    _assignQuantity()
       {
             
           
    parent::_assignQuantity();
     
                    
    $smarty = MainFactory::create('Smarty');
                    
    $smarty->assign('IS_RING', '1');
                  
       }
    }
     
    Zuletzt von einem Moderator bearbeitet: 2. August 2017
  2. Anonymous

    Anonymous Administrator Mitarbeiter

    Hi,

    es reicht in der eigenen Klasse einfach
    PHP:
    $this->set_content_data('MEINE_VARIABLE', '1'); 
    zu setzen, dann kann in der HTML mit {$MEINE_VARIABLE} in Smarty darauf zugeriffen werden.

    Die folgenden Zeilen werden nicht benötigt:

    PS: Smarty Variablen werden immer mit $ geschrieben ohne dies ist es eine Smarty Funktion.
     
  3. Anonymous

    Anonymous Mitglied

    Super.

    Es hat jetzt geklappt.
    Danke
     
  4. icue

    icue Neues Mitglied

    Guten Tag,
    ich habe ein ähnliches Problem. Unter GXUserComponents/overloads/ habe ich einen CheckoutSuccessExtender angelegt.
    Ich habe mit dem Code von oben versucht eine Smarty Variable anzulegen, bekomme jedoch die Fehlermeldung:

    FATAL ERROR(1): "Call to undefined method MyExtenderCheckoutSuccessExtender::set_content_data()"

    Ist die Variable aus diesem Verzeichnes anders zu setzen?

    MfG
     
    Zuletzt bearbeitet: 21. Juli 2017
  5. Kai Schoelzke

    Kai Schoelzke Beta-Held

    Hallo, schau mal hier GXUserComponents\overloads\_extender_samples\CheckoutSuccessExtenderComponent da ist eine Beispiel Datei, wie es richtig sein muss, die kannst du als Basis nehmen, der Rest steht dann hier https://developers.gambio.de//tutorials.html?v=3.5.1.0&p=das-extender-system und hier https://developers.gambio.de//tutorials.html?v=3.5.1.0&p=class-overloading
     
  6. MJ

    MJ Erfahrener Benutzer

    Guten Tag,
    ich würde hier gern nochmal einhaken.

    wie kann ich in einer Klasse unter GX_Modules eine Variable festlegen?
    In der Datei mytest_ApplicationBottomExtender.inc.php

    a) Mit $this->set_content_data('foo', $this->createMyHtml()); erhalte ich den gleichen Fehler wie icue.

    b) Mit $this->v_output_buffer['foo'] = $this->createMyHtml(); erscheint der Inhalt ganz am Ende der Seite und nicht bei {$foo}

    -- Vielleicht missverstehe ich das auch.

    Der Hinweis von Kai hat mir nicht weitergeholfen - da wird nicht direkt eine Variable zugewiesen.

    Was ich erreichen möchte ist folgendes: Ich möchte an einer Stelle im Shop Content ausgeben (dabei CSS, und JS includen) und PHP ausführen (in der Klasse). Ich wollte das anhand eines Beispiels machen - hier einen Instagram-Feed einfügen im Footerbereich des Shops. Das wird auch eingefügt, aber eben nur am Ende. Ich möchte in den Templatefiles {$foo} angeben und genau dort meinen Output haben. Was könnte ich hier falsch machen?

    Vielen Dank