Hallo liebes Forum,
ich habe einen Hook für die Extension comments geschrieben.
In der Datei EXT:comments/pi1/class.tx_comments_pi1.php werden die Hooks in der Funktion comments_getComments() eingebunden:
<?php
// Call hook for custom markers
if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['comments']['comments_getComments'])) {
foreach($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['comments']['comments_getComments'] as $userFunc) {
$params = array(
'pObj' => &$this,
'template' => $template,
'markers' => $markerArray,
'row' => $row,
);
if (is_array($tempMarkers = t3lib_div::callUserFunction($userFunc, $params, $this))) {
$markerArray = $tempMarkers;
}
}
}
?>
Ich habe zu diesem Zweck eine Extention erstellt "ch_extendcomments".
Die hierzu gehörige Datein haben folgenden Inhalt:
EXT:ch_extendcomments/pi1/class.tx_ch_extendcomments_pi1.php:
<?php
require_once(PATH_tslib . 'class.tslib_pibase.php');
class tx_ch_extendcomments_pi1 extends tslib_pibase
{
var $prefixId = 'tx_ch_extendcomments_pi1';
var $scriptRelPath = 'pi1/class.tx_ch_extendcomments_pi1.php';
var $extKey = 'ch_extendcomments';
var $pi_checkCHash = true;
var $cachePath = 'typo3temp/ch_extendcomments/';
function comments_getComments($params, &$Obj)
{
$markerArray = $params['markers'];
$row = $params['row'];
$markerArray['###UID###'] = $row['uid'];
return $markerArray;
}
}
?>
EXT:ch_extendcomments/ext_localconf.php:
<?php
if (!defined ('TYPO3_MODE'))
die ('Access denied.');
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['comments']['comments_getComments'][] = 'tx_ch_extendcomments_pi1->comments_getComments';
?>
EXT:ch_extendcomments/ext_tables.php:
<?php
require_once(t3lib_extMgm::extPath('ch_extendcomments').'pi1/class.tx_ch_extendcomments_pi1.php');
?>
Den Marker ###UID### füge ich im comments Template ein und fülle damit einen Anker <a name="comment-###UID###"></a>.
Leere ich nun den Cache und rufe einen tt_news Artikel auf werden die Marker richtig gesetzt.
Gucke ich mir jetzt einen weiteren Artikel an, steht ###UID### im Quelltext. D.h. der erste Aufruf funktioniert, danach wird der Marker nicht mehr gefüllt.
Leider komme ich an dieser Stelle nicht weiter. Ich habe schon andere Hooks geschrieben die jedoch nicht auf dem Prinzip callUserFunktion sondern auf dem getUserObj Prinzip basieren, dabei sind solche Probleme nicht aufgetreten.
Ich hoffe jemand von euch weiß hier weiter.[/b]