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!
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...
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...
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); } }}
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?
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
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?
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();