[TYPO3-UG Denmark] Extende en enkelt metode i en extension

Sune nospam_sune at talefod.dk
Wed Jun 28 10:46:41 CEST 2006


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_pb
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.

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.

Eller gør jeg noget helt forkert?

/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