Zum Inhalt springen

Hook für mm_forum nutzen

Erstellt am 19. Mai 2008 · 2 Antworten · letzte Antwort am 19. Mai 2008

Tags: PHP, Frage

fritzi ·

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

mwanj ·

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

fritzi ·

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