Hallo,
ich möchte den Hook "profileLink_postLinkGen" der Extension mm_forum in der Methode getUserProfileLink in class.tx_mmforum_pi1.php nutzen. Ich habe jetzt auch schon diverse Tutorials zum Thema Hooks gelesen und auch Google befragt. Folgendes habe ich jetzt erstellt:
eine Klasse in meiner Extension:
<?
######################################
# Hook of mm_forum #
# create link to User Profile #
######################################
class tx_pb_memberlist {
function getLink_mmForum($user) {
echo ('HI');
#return 'index.php?id=5&tx_mmforum_pi1[action]=forum_view_profil&tx_mmforum_pi1[user_id]=21';
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/pb_memberlist/class.tx_pb_memberlist.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/pb_memberlist/class.tx_pb_memberlist.php']);
}
?>
in der ext_localconf.php
// Register my hook objects
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['mm_forum']['forum']['profileLink_postLinkGen'][]='EXT:pb_memberlist/class.tx_pb_memberlist.php:getLink_mmForum';
Aber ich bekomme die Fehlermeldung:
|Class 'getLink_mmForum' was not prepended with 'user_'|
Fatal error: Call to a member function userProfileLink() on a non-object in C:\Programme\xampp\htdocs\ecointense\typo3conf\ext\mm_forum\pi1\class.tx_mmforum_pi1.php on line 5947
Ich habe auch schon versucht, das Prefix user_ vor die Klasse und auch vor die Methode zu schreiben, doch die Fehlermeldung erscheint trotzdem.
Ich bin langsam am verzweifeln und hoffe ihr könnt mir einen guten Tip geben.
Patricia
Hallo fritzi,
erstelle am besten in deiner Extension auch ein /pi1 Verzeichnis.
In diesem legst du die Datei class.ux_tx_mmforum_pi1.php an.
<?php
/* .. Copyrigth ... */
class tx_mmforum_extensionname extends tslib_pibase {
/**
* Processes profileLink_postLinkGen markers for tx_mmforum
*
* @param string $user User
* @param string $link Link
* @param tx_mmforum_pi1 $pObj Reference to parent object
* @return string Modified $link
*/
public function profileLink_postLinkGen(&$user, &$link, &$pObj) {
$conf = $pObj->conf;
return $link;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/extensionname/class.ux_tx_mmforum_pi1.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/extensionname/class.ux_tx_mmforum_pi1.php']);
}
?>
In die ext_localconf.php deiner Extension schreibst du:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['mm_forum']['forum']['profileLink_postLinkGen']['extensionname'] = 'EXT:extensionname/class.ux_tx_mmforum_pi1:&tx_mmforum_extensionname';
Cache löschen nicht vergessen.
Funktioniert für mich gut, ich werde auch bald eine größere Extension für mm_forum veröffentlichen.
Viele Grüße,
Markus
Hallo Markus,
vielen vielen Dank für Deine Antwort. Ich habe Deine Code verwendet und noch ein bisschen modifiziert und jetzt funktioniert es 😃
Hier die Klasse meiner Extension:
<?php
/* .. Copyrigth ... */
class tx_mmforum_pb_memberlist extends tslib_pibase {
/**
* Processes profileLink_postLinkGen markers for tx_mmforum
*
* @param string $user User
* @param string $link Link
* @param tx_mmforum_pi1 $pObj Reference to parent object
* @return string Modified $link
*/
public function userProfileLink(&$user, &$link, &$pObj) {
$conf = $pObj->conf;
echo ('HI');
$link='index.php?id=5&tx_mmforum_pi1[action]=forum_view_profil&tx_mmforum_pi1[user_id]=21';
return $link;
}
}
if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/pb_memberlist/class.ux_tx_mmforum_pi1.php']) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/pb_memberlist/class.ux_tx_mmforum_pi1.php']);
}
?>
Hier die ext_localconf.php
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['mm_forum']['forum']['profileLink_postLinkGen']['pb_memberlist'] = 'EXT:pb_memberlist/pi1/class.ux_tx_mmforum_pi1.php:&tx_mmforum_pb_memberlist';
Schöne Grüße
Patricia