[Typo3-german] USER object

Elmar Hinz elmar.DOT.hinz at team.MINUS.red.DOT.net
Tue Nov 22 02:01:52 CET 2005


Andreas Bulling wrote:
> Hallo Elmar,
> 
> danke für deine Antwort!
> 
> | Das hängt vom Plugin ab und kann einfach bis schwiereig sein.
> 
> Warum genau bzw. was genau kann einfach/schwierig sein?
> 
> | Die wichtige Frage ist zunächst, warum der Entwickler wohl USER_INT 
> | gewählt hatte und ob Du es ändern solltest.
> 
> Das klingt so, als ob du meinen Namen mit der "Modern Linklist"
> in Verbindungs gebracht hast - was auch richtig ist ;)

Gar nicht. Die Frage steht hier grundsätzlich zuerst.

Ich  werfe mal einen Blick rein. *installier*

> Der usprüngliche Autor (von dessen Code mittlerweile aber eh
> praktisch nichts mehr übrig ist), hatte Caching nicht ermöglicht,
> ich würde es aber gerne in meiner Extension verfügbar machen
> und hab deswegen entsprechend umgeschrieben.
> Leider werden jedoch nicht alle Links um den cHash Parameter ergänzt -
> d.h. konkret bei denen nicht, die ich mit pi_getPageLink() erzeuge.
> Ich dachte jetzt, ich könnte das durch den Wechsel auf ein USER-Obj
> lösen, aber leider ist das nicht der Fall :(
> 
> | Ist in ext_localconf.php eine Function
> | t3lib_extMgm( ....., $cached = 0); ?

Upps, da hab' ich irgend was weggelöscht.

Aha, ist hier ja schon richtig eingestellt:

t3lib_extMgm::addPItoST43( $_EXTKEY, 'pi1/class.tx_ablinklist_pi1.php', 
"_pi1", 'list_type',1);

Damit müßte es als USER Object eingebunden werden.

Wird's aber nicht. Nanu!!!

Der Object Browser zeigt:

[plugin][tx_ablinklist_pi1]=USER_INT

Aha, wird im TS Setup nochmals angelegt.

Gut so! Funktioniert dann auch mit anderen als css_styled_content.

> 
> nope.
> 
> | Ggf. mußt Du das plugin im TS auf USER_INT setzen.
> 
> Um das Caching einzuschalten? Ich dachte ich hätte gelesen bzw. auch
> in den Sourcen gesehen, dass gerade bei USER_INT Objekten _nicht_
> gecasht wird?! *verwirrt*

Hast ja recht. Mein Fehler.

Und genau das ist auch der Punkt. In  ext_typoscript_setup.txt steht 
noch USER_INT. Das mußt Du also ändern.

> 
> | In der Plugin-Klasse muss
> | $this->pi_USER_INT_obj=0;
> |gesetzt werden.
> 
> Das hab ich drin (war ja grad ein entsprechendes Posting in der englischen
> ML)...

und gestern in der developer von mir ...

> 
> | Außerdem muß evtl. für alle Link Funktionen das Cachen  
> | aktiviert werden.
> 
> Und das ist genau das Problem, s.o.
> Hab ich soweit möglich getan, nur klappt es leider nur bei manchen Links...
> 
> Viele Grüße,
>   Andreas

Mal schaun, was so in pi1/class.tx_ablinklist_pi1.php steht:

// Configure caching
$this->allowCaching = $this->conf['allowCaching'] ? 1 : 0;
if ( !$this->allowCaching )	{
	$GLOBALS['TSFE']->set_no_cache();
	$this->pi_USER_INT_obj = 1;
} else	{
	$this->pi_USER_INT_obj = 0;
}

Aha, Du mußt das Caching im Setup mit 'allowCaching' aktivieren.

Sonst hängt es den no_cache Parameter an die Links an. Also eleganter 
wäre es wenn schon anders herum mit 'denyCaching'. Weil das sollte ja 
die Ausnamesituation sein.

Ich würde das aber ganz rausnehmen. No_cache kann man im Extramfall 
genausogut im Seitenheader setzen. Und weil Du sowieso USER einrichten 
willst, könntest Du den ganzen Block gleich entfernen.

Immerhin steht allowCaching = 1 als Default. Hier sollte es zumindest 
keine akuten Probleme geben.

WEITER:

Dann finde ich irgendwo sowas:

$this->pi_getPageLink( $GLOBALS['TSFE']->id, '', array( 
'tx_ablinklist_pi1[action]' => 'getviewdetailsforlink', 
'tx_ablinklist_pi1[uid]' => "$uid", 'tx_ablinklist_pi1[category_uid]' => 
"$categoryUID" ) );

Also ein Link auf die Seite *selbst*. Aber bei dieser Funktion kann man 
kein $cache=1 setzen. Ohne sie zu testen, würde ich erwareten, daß sie 
kein cHash erzeugt. Sie ist wohl nur gedacht, um auf *andere* Seiten zu 
verlinken, wo der dann normalerweise kein cHash gebraucht wird. Trotzdem 
eine Schwäche von pi_base.

Hier wäre pi_linkTP($str,$urlParameters=array(),$cache=0) wahrscheinlich 
angebrachter.

Also mir scheint beim Einsatz der Linkfunktionen noch der Wurm drin zu 
sein. Ich denke Du solltest einfach die Klasse class.tslib_pibase.php 
nochmals genau unter die Lupe nehmen und die Linkfunktionen entsprechend 
verbessern.

TIP: Du findest einen Link zur API nach Installation von extdeveval am 
oberen Rand des BE.

Gruß

Elmar































-- 
Climate change 2005: Mexico, Guatemala, New Orleans, Sahel, Bangladesh,
Spain, Portugal, Austria, Swiss, France, ...
Production of CO2 is killing people.
Production of CO2 just for fun is killing people just for fun.



More information about the TYPO3-german mailing list