Franz Holzinger

Verse of the day

So seid nun Gottes Nachfolger als die lieben Kinder
Epheser 5:1

© Bible Gateway's Verse of the Day


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