Denn es ist ein Gott und ein Mittler zwischen Gott und den Menschen, nämlich der Mensch Christus Jesus, der sich selbst gegeben hat für alle zur Erlösung, daß solches zu seiner Zeit gepredigt würde;
1 Timotheus 2:5-6
autor | |
26-08-11 10:09:33 | ###PARENT_CATEGORY_TITLE### Fatal error |
Andreas Weis |
Hallo, ich möchte in der Produktliste die Eltern Kategorie der Produkt Kategorie mit anzeigen. Leider bekomme ich einen Fatal error: Fatal error: Call to undefined method tx_ttproducts_category_view::getRowCategory() in /Pfad/Zur/Installation/typo3conf/ext/tt_products/view/class.tx_ttproducts_category_base_view.php on line 88 wenn ich versuche mit dem Marker ###PARENT_CATEGORY_TITLE### auf den Titel der Eltern-Kategorie zuzugreifen In der Klasse tx_ttproducts_category_view wird versucht mit $this auf eine Methode zuzugreifen, die jedoch in der Klasse tx_ttproducts_category, bzw tx_ttproducts_category_base liegt. Liegt hier ein Fehler vor, oder habe ich irgendwo eine Konfiguration vergessen? Meine Konfiguration: TYPO3 4.5.5 tt_products 2.7.2 mbi_products_categories 0.1.4 nsb_cat2menu 0.0.1 |
26-08-11 20:44:00 | Korrektur zu tt_products 2.7.2 |
Franz Holzinger |
Die Datei view/class.tx_ttproducts_category_base_view.php muss geändert werden. Statt '$this->' muss an 3 Stellen ein '$this->getModelObj()->' kommen: --------------------------- $currentCategory = $this->getModelObj()->getRowCategory($row); $parentCategory = ''; foreach ($parentArray as $key => $parent) { do { $parentRow = $this->getModelObj()->getParent($currentCategory); $parentCategory = $parentRow['uid']; $parentPid = $this->getModelObj()->getRowPid($parentRow); $count++; --------------------------- |
26-08-11 20:58:00 | Fast am Ziel |
Andreas Weis |
Hallo Herr Holzinger, danke für die schnelle Hilfe. Der Fatal Error ist behoben (das hatte ich zwischenzeitlich auch schon korrigiert ) Allerdings wird der Marker leer ersetzt. D.h. ###PARENT_CATEGORY_TITLE### wird nicht mit dem Titel gefüllt? Wenn ich mir in tx_ttproducts_list_view $categoryTableView->getParentMarkerArray ( $catParentArray, $row, $categoryMarkerArray, $displayCat, $row['pid'], $this->config['limitImage'], 'listcatImage', $viewCatTagArray, array(), $pageAsCategory, $theCode, 1, '' ); print_r($catParentArray); ausgeben lasse bekomme ich folgendes: Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Array ( [0] => ) Das sollte nicht so sein, oder? |
26-08-11 22:53:31 | PARENT-Marker |
Franz Holzinger |
Das Array $catParentArray muss immer mit allen Kategoriefeldern befüllt sein, für die es einen PARENT-Marker im HTML Shop Template gibt. Der Inhalt des Arrays sieht sehr falsch aus. Es wird in der Datei marker/class.tx_ttproducts_marker.php erzeugt. |
26-08-11 23:06:10 | getMarkerFields |
Andreas Weis |
ich schätze das problem liegt in dieser Routine: $parentFound = strpos($tag, 'PARENT'); if ($parentFound !== FALSE) { $parentEnd = strpos($tag, '_'); $parentLen = strlen('PARENT'); $temp = substr($tag, $parentLen, ($parentEnd - $parentFound) - $parentLen); $parentArray[] = $temp; } dort wird der gesamte String gelöscht (statt nur des "PARENT", wie ich annehme) Leider weiss ich nicht was am Ende rauskommen muss, sonst hätte ich die Lösung dazugepostet. Ich habe auch probiert, das PARENT einfach rauszuschneiden, dann bekomme ich folgenden Array: Array ( [0] => CATEGORY_TITLE ) Allerdings tut sich in der Frontendausgabe trotzdem nichts. Wie muss der Array denn korrekt aussehen, damit der Marker dann auch mit den richtigen Daten befüllt wird? |
27-08-11 12:08:13 | Korrektur zu tt_products 2.7.2 |
Franz Holzinger |
marker/class.tx_ttproducts_marker.php: Am Ende: $parentArray = array_unique($parentArray); sort($parentArray); $parentArray = array('0' ==> ''); ist richtig. In der Datei view/class.tx_ttproducts_category_view.php sollte am Ende des Aufrufs von parent::getItemMarkerArray ($row, $markerArray, $variantFieldArray, $variantMarkerArray, $viewCatTagArray, $theCode, TRUE, '', $prefix, $imageRenderObj); das $markerArray richtig für den PARENT_CATEGORY_TITLE ausgefüllt sein. Das $prefix wird als Parameter übergeben. |
27-08-11 13:34:26 | leider nicht |
Andreas Weis |
leider ist dieses Feature in dieser Version offensichtlich noch gar nicht vor gesehen, da der Aufruf: $parentRow = $this->getModelObj()->getParent($currentCategory); in model/class.tx_ttproducts_category_base_view->getParentMarkerArray() Zeile 93 ins Leere läuft, da die Methode tx_ttproducts_category->getParent folgendermaßen implementiert ist: function getParent ($uid=0) { $rc = array(); return $rc; } Haben Sie da ein funktionierendes Script? Oder ist das in der kostenlosen Version von tt_products einfach nicht vorgesehen? Viele Grüße |
27-08-11 14:00:37 | Nachtrag |
Andreas Weis |
Ich habe jetzt die getParent() Funktion wie folgt erweitert: function getParent ($uid=0) { $rc = array(); if(count($this->dataArray[$uid]) && strlen(intval(trim($this->dataArray[$uid][$this->parentField])))){ $rc = $this->get($this->dataArray[$uid][$this->parentField]); } return $rc; } damit funktioniert es soweit, aber ich habe ehrlich gesagt nicht das Gefühl, dass das an dieser Stelle so richtig ist (also die direkte Abfrage des Datensatzes), da im Kommentar zur Funktion /** * gets the parent uid * * @param integer $uid * @return integer parent */ steht. D.h. eigentlich sollte ja nur die UID der Elternkategorie zurückgegeben werden. Allerdings erwartet $parentRow = $this->getModelObj()->getParent($currentCategory); ja den kompletten Datensatz. Wie auch immer - mit der Ergänzung funktioniert alles soweit, ich würde mich allerdings über eine kurze Rückmeldung Ihrerseits, bezüglich einer Korrektur, Optimierung, etc sehr freuen! Vielen Dank für Ihre Bemühungen und viele Grüße aus Nürnberg |
27-08-11 21:45:37 | Korrektur zu tt_products 2.7.2 |
Franz Holzinger |
Die Funktion getParent in model/class.tx_ttproducts_category.php fehlt noch. function getParent ($uid=0) { $result = FALSE; $row = $this->get($uid); if (isset($row) && is_array($row) && isset($row['parent_category'])) { $result = $this->get($row['parent_category']); } return $result; } Das dataArray sollte an dieser Stelle nicht ausgelesen werden, sondern nur in der Basis Klasse tx_ttproducts_table_base. |
< Zurück zum Forum |