Featurewunsch - Produkte in Contentseiten

Thema wurde von datenchaos, 26. Mai 2012 erstellt.

  1. bellpina

    bellpina Mitglied

    Registriert seit:
    30. November 2012
    Beiträge:
    7
    Danke erhalten:
    0
    Danke vergeben:
    4
    Hallo,

    ich habe jetzt nochmal alles mögliche versucht, klappt bei mir leider immer noch nicht :-(

    Muss ich Smarty erst aktivieren?

    Avenger schreibt in seiner install.txt "Den Inhalt der Verzeichnisse 'includes' und 'user_classes' in die Shop-Root kopieren." ist da wirklich richtig oder ist hier der "Smarty Root" gemeint? Ich habs jetzt mal in den Shop-Root und in den Ordner shop/includes/classes/Smarty/plugins gelegt.

    Ich verstehe nicht woher mein Shop weiß daß es da eine neue Funktion "smarty_function_pt_load_article_list" gibt.
    Muss die nicht irgendwo included werden?

    Resultat ist bei mir nach wie vor daß die { } nicht geparsed werden. Ich sehe in meiner Seite im Klartext: {pt_load_article_list article_list="'383'" style='tiled'}

    Sonnige Grüße!
     
  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    990
    Danke erhalten:
    69
    Danke vergeben:
    128
    Ich habe versucht das ganze für 2.2.0.0 updatesicher zu refactoren.. Leider komme ich nicht weiter. Meine bisherige Lösungsidee funktioniert nicht...

     
  3. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Im Prinzip wäre das so OK.

    Was mir aber auch schon mehrfach aufgefallen ist:

    Von Overload-Klassen aus kann ich nicht auf Eigenschaften zugreifen, die in der Main-Klasse als "protected" definiert sind...

    PHP:
    class ShopContentContentView extends ContentView
    {
        protected 
    $coo_seo_boost;
        protected 
    $content_group_id 0;
        protected 
    $content_id;
        protected 
    $content_heading;
        protected 
    $content_text;
        protected 
    $content_file;
        protected 
    $error_message;
        protected 
    $action;
        protected 
    $captcha;
        protected 
    $withdrawal_content;
        protected 
    $subject;
        protected 
    $name;
        protected 
    $email_address;
        protected 
    $message_body;
        protected 
    $file_flag_name;
    .....
    D.h.:

    "$this->content_file" und "$this->content_text" haben in der Overloadklasse den Wert "null".....

    Die PHP-Doku sagt zwar was anderes, aber ich musste das schon an einigen Stellen leidvoll erfahren...
     
  4. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ich nehme alles zurück, und behaupte das Gegenteil.... :)

    Mit dieser Overload-Klasse habe ich das überladen können.

    PHP:
    <?php
    /*
    Store as "user_classes\overloads\ShopContentContentView\smartySupport_ShopContentContentView.inc.php"

    Copyright (c) 2015 Avenger, apprentice@gmx.
    */

    class smartySupport_ShopContentContentView extends smartySupport_ShopContentContentView_parent{

      function 
    add_content_data()
      {
        
    parent::add_content_data();
        
    $content_body=$this->get_content_array();
        
    $content_body=$content_body['CONTENT_BODY'];
        if (
    strpos($content_body,'{')!==false)
        {
          if (!
    function_exists('smarty_function_eval'))
          {
            include_once(
    DIR_WS_CLASSES.'Smarty/plugins/function.eval.php');
          }
          
    $smarty = new Smarty();
          
    $content_body=smarty_function_eval(array('var'=>$content_body), $smarty);
          
    $this->set_content_data('CONTENT_BODY'$content_body);
        }
      }
    }
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    990
    Danke erhalten:
    69
    Danke vergeben:
    128
    Hi Avenger,

    Aber unsere Lösung unterscheidet sich lediglich in der Beschaffung von " $content_body". Dieser Wert ist bei meiner Lösung ist auch nicht leer! Aber nach dem Aufruf der smarty_function_eval ist der Wert weg...

    Hab ich sonst noch was vergessen? Brauche ich die pt_split_Results Geschichte noch?
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    990
    Danke erhalten:
    69
    Danke vergeben:
    128
    Hey, ich hab die Vorlage geliefert, du hast das Tor geschossen! Nur, ich hab nichts davon! ;) Warum läuft das bei mir nicht! Auch nicht mit deiner Variante. Eine Idee?

    Danke :)
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    990
    Danke erhalten:
    69
    Danke vergeben:
    128
    #47 Anonymous, 14. April 2015
    Zuletzt bearbeitet: 14. April 2015
    Ok, bin bei meiner Analyse einen Schritt weiter:

    Die Smarty Variable
    Code:
    {pt_load_cms_data coID=1234} 
    kann aufgelöst werden.

    Die Smarty Variable
    Code:
    {pt_load_article_list article_list_by_id='1234'}'
    kann nicht aufgelöst werden, bzw. wird einfach eliminiert.

    D.h. das Problem ist nicht die Überladung, sondern wahrscheinlich ein Problem mit der Implementierung innerhalb der Datei
    Code:
    function.pt_load_article_list
    .

    Die Implementierung nicht mehr kompatibel mit 2.2!

    @Avenger: Das ist richtig, oder? :)
     
  8. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Ich denke: ja.

    Der Aufruf der Listing-Funktion muss jetzt ganz anders geschehen.
     
  9. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    14. Juli 2011
    Beiträge:
    990
    Danke erhalten:
    69
    Danke vergeben:
    128
    #49 Anonymous, 14. April 2015
    Zuletzt bearbeitet: 14. April 2015
    Puh... da scheiterts. Alternativ könnte man den HTML-Teil händisch innerhalb der smarty function zusammen basteln und zurück liefern.

    Oder irgendwie so (leider komme ich erst morgen dazu...):

    $coo_product_listing_view = MainFactory::create_object('ProductListingContentView', array($t_category_data_array['listing_template']));
    ...
    ...
    return $coo_product_listing_view->get_html();