[TYPO3-UG Denmark] Extende en enkelt metode i en extension
Stefan Kreisberg
stefan at linkfactory.dk
Wed Jun 28 11:36:33 CEST 2006
Onsdag den 28. juni 2006 10:46 skrev Sune:
> Hej S,
>
> Nu har jeg fået det til at virke delvist:
>
> TS:
> plugin.tx_pbsurvey_pi1.includeLibs =
> typo3conf/ext/fb_extendedsurvey/pi1/class.tx_fbextendedsurvey_pi1.php
> plugin.tx_pbsurvey_pi1.userFunc = tx_fbextendedsurvey_pi1->main
>
> Herved benytter jeg min nye klasse.
>
> PHP:
> require_once('/var/www/talefod/htdocs/typo3conf/ext/pbsurvey/pi1/class.tx_p
>b survey_pi1.php');
> ....
> function main($content,$conf) {
> //t3lib_div::debug($conf);
> return parent::main($content,$conf);
> }
>
>
> Dette virker sådan set også fint nok, men der er bare nogle ting i plugin
> som ikke virker, f.eks kan den ikke hente værdier fra LL, hvilket betyder
> plugin'et ikke virker.
? Er det ikke bare din TS for det oprindelige plugin der måske er røget? Den
funktionalitet du får ud af det, burde jo kun adskille sig ved den funktion
du har overskrevet. Du behøver f.eks. ikke overskrive main som du gør i
eksemplet medmindre det er i main funktionen du vil ændre noget (og det gør
du ikke her).
> Kan det virkelig være rigtigt at det er så svært at overskrive en enkelt
> metode i en extension? Det er jo ligefør det er nemmere for mig bare at
> overskrive i den originale extension, selvom det vil være slammet at gøre.
tjaa ... endelig er der hooks - en fed måde at udvide uafhængigt af hvad andre
måtte opdatere originalen med. Men ikke alle ext har de rette hooks eller
hooks overhovedet.
> Eller gør jeg noget helt forkert?
Måske kan du i stedet for at overskrive din eksisterende "kopier" den ind i
din nye udvidelse?
Altså noget i retning af
plugin.minye < plugin.mingamle
... men nu gætter jeg. Ellers tag en søgning på XCLASS ...
vh Stefan :-)
> /Sune
>
> "Stefan Kreisberg" <stefan at linkfactory.dk> skrev i en meddelelse
> news:mailman.5955.1151482941.30412.typo3-ug-denmark at lists.netfielders.de...
> Hej Sune,
>
> Onsdag den 28. juni 2006 09:57 skrev Sune:
> > Hej S,
> >
> > Jeg kan ikke se stavefejl (bruger faktisk selv TSOB hvis jeg kan slippe
> > afsted med det), men kan det være fordi jeg ikke includer den nye klasse
> > nogle steder, men alligevel peger userFunc til den?
> >
> > Problemet er bare at jeg kun kan include et script pr extension så vidt
>
> jeg
>
> > kan se. Men så skal jeg måske bare lave en require_once i min phpklasse?
>
> Men du kan jo godt inkludere din nye som jo er en class xxx extend original
> og
> derved selv henter den?
>
> > /Sune
> >
> >
> > "Stefan Kreisberg" <stefan at linkfactory.dk> skrev i en meddelelse
>
> news:mailman.5906.1151480026.30412.typo3-ug-denmark at lists.netfielders.de...
>
> > Hej igen,
> >
> > Template --> TSOB = TypoScript Object Browseren er fantastisk til at
> > finde stavefejl i det man peger hen på. Et stærkt men noget overset
> > værktøj for TypoScriptere - det er ikke kønt, men det virker.
> >
> > Tjek i TSOB om dit setup slår igennem ... den viser sat TS for hver side
>
> du
>
> > vælger.
> >
> > vh Stefan
> >
> > Onsdag den 28. juni 2006 09:17 skrev Sune:
> > > Hej Stefan,
> > >
> > > Det giver meget godt mening :)
> > >
> > > Men jeg kan bare ikke helt få det til at virke. Jeg har prøvet
> > > følgende:
> > >
> > > plugin.tx_pbsurvey_pi1.userFunc = tx_fbextendedsurvey_pi1->main
> > > og
> > > plugin.tx_pbsurvey_pi1.userFunc = EXT:tx_fbextendedsurvey_pi1->main
> > >
> > > Ingen af delene virker. Går ud fra det er fordi jeg peger på den anden
> > > måde, for jeg kan sagtens se logikken i at det burde virke på den måde
>
> du
>
> > > forklarer. Så det må vel være fordi jeg peger forkert!
> > >
> > > /Sune
> > >
> > >
> > >
> > > "Stefan Kreisberg" <stefan at linkfactory.dk> skrev i en meddelelse
>
> news:mailman.5242.1151415513.30412.typo3-ug-denmark at lists.netfielders.de...
>
> > > Hej Sune,
> > >
> > > Tirsdag den 27. juni 2006 15:22 skrev Sune:
> > > > Hej liste,
> > > >
> > > > Jeg vil gerne ændre i metoden "setUserName()" i klasse
> >
> > "tx_pbsurvey_pi1".
> >
> > > > Det er jo ligetil, da jeg bare kan ændre direkte i plugin'ets kode.
>
> Men
>
> > > > nu er mit spørgsmål så om jeg ikke kan extende denne metode istedet
>
> for
>
> > > > at ændre i det oprindelige plugin. På den måde kan jeg jo opdatere
> > > > "pbsurvey" uden hver gang at skulle redigerer i filerne.
> > > >
> > > > Jeg er helt sikker på jeg har set en guide til dette på et tidspunkt,
> >
> > men
> >
> > > > kan ikke finde den mere. Er der nogen der kan hjælpe her.
> > > >
> > > > Jeg har forsøgt blot at oprette en ny extension og gjort følgende:
> > > >
> > > > class tx_fbextendedsurvey_pi1 extends tx_pbsurvey_pi1 {
> > > > var $prefixId = 'tx_fbextendedsurvey_pi1'; // Same as class name
> > > > var $scriptRelPath = 'pi1/class.tx_fbextendedsurvey_pi1.php'; //
> > > > Path
> >
> > to
> >
> > > > this script relative to the extension dir.
> > > > var $extKey = 'fb_extendedsurvey'; // The extension key.
> > > >
> > > > /**
> > > > * The main method of the PlugIn
> > > > *
> > > > * @param string $content: The PlugIn content
> > > > * @param array $conf: The PlugIn configuration
> > > > * @return The content that is displayed on the website
> > > > */
> > > > function main($content,$conf) {
> > > > parent::main();
> > > > echo "extended";
> > > > }
> > > > }
> > > >
> > > > Dette er på sin vis fint nok, problemet er bare at jeg skal
> > > > installere "min" extension på siden før det virker, og ikke have
> > > > pbsurvey på siden. Dermed mister jeg mulighederne for at konfigurere
> > > > i BE.
> > >
> > > Du er helt på rette vej og det eneste jeg kan se du mangler er blot at
> > > definere den funktion du vil udvide og så via TS pege dit plugin hen på
> >
> > din
> >
> > > nye klassefil. På den måde bevarer du BE konfiguration fra dit gamle
> >
> > plugin
> >
> > > som jeg ser det.
> > >
> > > altså noget i retning af
> > >
> > > plugin.pgsurvey_pi1 {
> > > userfunc = peg på din ext i stedet for pbsurvey
> > > }
> > >
> > > Håber _det_ giver mening, og håber det kan lade sig gi' sig :-)
> > >
> > > > Håber det giver mening....
> > > >
> > > > /Sune
--
Venlig hilsen
Stefan Kreisberg
LinkFactory | + 45 70 22 23 22
stefan at linkfactory.dk
TYPO3 Open Source CMS - Enterprise CMS uden licensomkostninger, læs mere
på www.linkfactory.dk
More information about the TYPO3-UG-denmark
mailing list