So seid nun Gottes Nachfolger als die lieben Kinder
Epheser 5:1
autor | |
10-09-20 06:43:26 | Eigener Marker in eigener Erweiterung |
Matthias Leiser |
Hallo Herr Holzinger Ich habe eine eigene Erweiterung mit der ich mehrere neue Marker befülle. Ausgangslage: TYPO3 7.6.32, tt_products 2.8.14 In der eigenen Erweiterung rufe ich das script mit: $TYPO3_CONF_VARS['EXTCONF']['tt_products']['PRODUCT'][] = 'EXT:tt_products_extends/Classes/class.tx_ttproductsextends_addmarker.php:&tx_ttproductsextends_addmarker'; auf. Im Script steht dann: class tx_ttproductsextends_addmarker { function getRowMarkerArray(&$parent, &$markerArray, $item, $catTitle, $imageNum, $imageRenderObj, $forminfoArray, $theCode, $id) { ... $markerArray['###PRODUCT_FLAGNEW###'] = 'BlaBla'; ... return $markerArray; } } Das funktioniert soweit perfekt. In TYPO3 8.7.32, tt_products 2.9.10 funktioniert die Erweiterung mit den neuen individuellen Marker nicht mehr. Ich erhalte die Fehlermeldung: Oops, an error occurred! Class 'EXT:tt_products_extends/Classes/class.tx_ttproductsextends_addmarker.php:&tx_ttproductsextends_addmarker' not found Was hat sich da geändert und wie kann das wieder zum laufen bringen? Ich freue mich auf Ihre Hilfe. Freundliche Grüsse Matthias |
8-09-20 19:52:10 | Namespace |
Franz Holzinger |
Sie müssen Ihre PHP Datei auf das Namespace Format umstellen, auch die Hook Zuweisung. TYPO3 8.7 macht das erforderlich. Und die Extension tt_products_extends muss auch eine composer.json Datei haben. |
10-09-20 07:05:02 | Marker wird nicht ersetzt |
Matthias Leiser |
Hallo Herr Holzinger Vielen Dank für den Hinweis. Ich habe die Erweiterung umgeschrieben und erhalte keine Fehlermeldung mehr. Der Marker wird aber nicht ersetzt. composer.json: { "name": "meinefirma/tt-products-extends", "type": "typo3-cms-extension", "description": "Extends the Shop System tt_products with many features.", "homepage": "MeineDomain", "license": ["GPL-2.0+"], "require": { "typo3/cms-core": ">=8.7.0" }, "autoload": { "psr-4": { "MeineFirma\\TtProductsExtends\\": "Classes" }, } } ext_localconf.php: <?php if (!defined('TYPO3_MODE')) { die ('Access denied.'); } $_EXTCONF = unserialize($_EXTCONF); $TYPO3_CONF_VARS[] = $_EXTKEY; $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['tt_products']['PRODUCT'][] = 'MeineFirma\\TtProductsExtends\\Marker'; ?> Classes/Marker.php: <?php namespace MeineFirma\TtProductsExtends\; class Marker { public function getRowMarkerArray ($pObj,&$markerArray,&$cObjectMarkerArray,$functablename,$row,$imageNum,$imageRenderObj,&$forminfoArray,$theCode,$basketExtra,$id,&$linkWrap,$bEnableTaxZero) { $markerArray['###PRODUCT_FLAGNEW###'] = 'NEU - NEU - NEU'; return $markerArray; } } ?> Ich erhalte im Frontend ###PRODUCT_FLAGNEW### anstatt wie im Test NEU - NEU - NEU mach ich was falsch? Freundliche Grüsse Matthias |
10-09-20 07:20:59 | debug |
Franz Holzinger |
Es sieht alles richtig aus. Deshalb muss es über die debug Funktion im Code von tt_products innerhalb von function getRowMarkerArrayHooks untersucht werden. tt_products/view/class.tx_ttproducts_table_base_view.php debug($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][TT_PRODUCTS_EXT], '$GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][TT_PRODUCTS_EXT]'); Und weitere debug Zeilen über die zurückerhaltenen Werte. |
< Zurück zum Forum |