Zum Inhalt springen

Modul "Content Comments"

Erstellt am 17. Oktober 2004 · 16 Antworten · letzte Antwort am 8. März 2005

Tags: Frage

Ulrich ·

Hallo Kum,

hier eine Erweiterung des TS. Ich arbeite mit "Modern Template Building" und die Subparts heissen bei mir "content" und "colNormal":

Beispiel:
Auf der Seite mit der id 17 sollen nur die Elemente zu kommentieren sein, die sich in der Spalte mit dem Subpartnamen "colNormal" befinden.

[PIDinRootline = 17]
tt_content.stdWrap.append =< plugin.tx_rfcontentcomments_pi1
page.10.subparts.content.subparts.colNormal.stdWrap.append =< plugin.tx_rfcontentcomments_pi1
[end]

Falls Du nicht mit Subparts arbeiten solltest, versuch es doch mal mit styles.content.get etc.

----------------------------------------------

In Sachen PopUp-Fenster habe ich im letzten Teil der Datei "class.tx_rfcontentcomments_pi1.php" eine Erweiterung vorgenommen:

...
<snip>

// create link
//create link in popup-window, if typolinkpop is set
$typolinkpop=$this->conf['thelink_stdWrap.']['10.']['parseFunc.']['tags.']['link.']['typolinkpop'];
if($typolinkpop==1){
//open the window please
$theLink=$this->pi_openAtagHrefInJSwindow($this->pi_linkTP_keepPIvars($this->pi_getLL("link_comment_label"),array('contentuid'=>$this->cObj->data['uid']),0,0,$this->conf['commentFormPid']),'commentWindow',$this->conf['thelink_stdWrap.']['10.']['parseFunc.']['tags.']['link.']['typolinkpop.']['params']);
} else{
$theLink = $this->pi_linkTP_keepPIvars($this->pi_getLL("link_comment_label").' ('.$numberofcomments.')',array('contentuid' => $this->cObj->data['uid']),0,0,$this->conf['commentFormPid']);
}

// put Link into marker
$markerArray = array();
$markerArray['###THELINK###'] = $theLink;
$content = $this->cObj->substituteMarkerArray($templateCode,$markerArray);

</snip>
....

im Setup definiere ich dann
1. ob überhaupt ein Popup geöffnet werden soll
2. die Grösse des Popups.

thelink_stdWrap.10 = TEXT
thelink_stdWrap.10.parseFunc{
tags {
link = TEXT
link {
current = 1
//eigener Wert, damit sich die Seite in einem Popup-Fenster öffnet (->class.tx_rfcontentcomments_pi1.php entsprechend erweitert)
typolinkpop = 1
typolinkpop.params = width=670,height=500,status=0,menubar=0,scrollbars=1,resizable=1
}#link
}#tags
}#thelink_stdWrap.10.parseFunc

Falls Du noch Fragen hast, nur zu 🙂

Viele Grüsse

Ulrich

jk_kum ·

leider ja ...

ich denke ausführlicher geht es nicht mehr, aber ...

habe auch mit MTB gearbeiten und meine content-spalte heißt zufällig auch colNormal 😉

tt_content.stdWrap.append > 

[PIDinRootline = 36] 
tt_content.stdWrap.append =< plugin.tx_rfcontentcomments_pi1
#styles.content.get.select.where colPos = 0 
#styles.content.get.stdWrap.append =< plugin.tx_rfcontentcomments_pi1 
[end]

hatte es mit den auskommentierten zeilen probiert und dann später im script

# Substitute the ###colNormal### subpart with some example content:
subparts.colNormal < styles.content.get

dem subpart zugewiesen. das ging auch! aber jetzt kommt der knackpunkt:

wenn ein inhaltselement kommentiert werden soll, dann ist die falsche contentuid zugewiesen, und zwar einem element aus der rechten spalte. keine ahnung wo der fehler liegt????

gruss kum aus mh

jk_kum ·

komisch, nachdem ich ich mir meinen beitrag noch mal durchgelesen habe, geht mir plötzlich ein licht auf.

schon ein eigenartiges phänomen: mal grübelt stundenlang, probiert, scheitert, macht weiter... wenn nix mehr geht, dann schaut man in der community, wenn da nix zu finden, dann muss man halt sein problem formulieren. und plötzlich geht einem ein licht auf!

zu dem problem zurück:
ich denke es liegt meiner abfrage der spalte. da wird nicht der richtige content der spalte abgefragt, sondern mit styles.content.get der gesamten. dann wird der kommentar-link in der hauptspalte angezeigt, kann auch nicht anders sein, da ich sie dort dem subpart zugeordnet habe, aber der link bezieht sich auf einem element der rechten spalte....

kum

Ulrich ·

Stimmt, es wird das "falsche" Element angezeigt 😢
Ich hatte mir die Sache vor ein paar Tagen mal angeguckt und mich dann anderen Sachen gewidmet....

Vielleicht finden wir gemeinsam die Lösung?

Viele Grüsse

Ulrich

jk_kum ·

bestimmt!

habe die sache mit dem popup auch mal getestet: funktioniert, nur die kommentaranzahl hinter dem kommentar-link wird nicht angezeigt. aber das ist eine sache die man im zweiten schritt lösen sollte...

diese extension ist eigentlich ne feine sache, da sie meiner meinung nach ein wichtiges community-feature ist. daher wäre natürlich eine selektive kommentierung von inhaltselementen sinnvoll. es müssen keine formulare, gästebücher und foren kommentiert werden. da wo richtige artikel stehen, da ist es wirklich sinnvoll.

werde jetzt noch mal weiter an der konfiguartion der extension feilen .... und mich dann hier noch mal melden. trink ertma nen kaffee...

gruß kum

Ulrich ·

Upps, die Anzahl der Kommentare habe ich beim PopUp rausgeschmissen, da der Designer dat nicht haben wollte 🙂

// create link
//create link in popup-window, if typolinkpop is set
$typolinkpop=$this->conf['thelink_stdWrap.']['10.']['parseFunc.']['tags.']['link.']['typolinkpop'];
if($typolinkpop==1){
//open the window please
$theLink=$this->pi_openAtagHrefInJSwindow($this->pi_linkTP_keepPIvars($this->pi_getLL("link_comment_label").' ('.$numberofcomments.')',array('contentuid'=>$this->cObj->data['uid']),0,0,$this->conf['commentFormPid']),'commentWindow',$this->conf['thelink_stdWrap.']['10.']['parseFunc.']['tags.']['link.']['typolinkpop.']['params']);
} else{
$theLink = $this->pi_linkTP_keepPIvars($this->pi_getLL("link_comment_label").' ('.$numberofcomments.')',array('contentuid' => $this->cObj->data['uid']),0,0,$this->conf['commentFormPid']);
}

Ulrich ·

Hi kum,

ich habe mal versucht eine, Lösung zu bauen. Bei mir klappt´s es anscheinend 🙂

1.
im SETUP definiere ich die Seite und die contentuids, die mit den Kommentar- Links versehen sein sollen:

[PIDinRootline = 17]
tt_content.stdWrap.append >
tt_content.stdWrap.append =< plugin.tx_urcontentcomments_pi1
plugin.tx_urcontentcomments_pi1.thelink_stdWrap.10.listNum = 4, 3
[end]

2.
in der class.tx_rfcontentcomments_pi1.php werden die Werte, die ich via TS definiere, abgefragt und verarbeitet:

--------------------------------

if($typolinkpopup==1){

....
}

$markerArray = array();
//get the list with choosen contentuid-values
$listElementsTS = $this->conf['thelink_stdWrap.']['10.'][listNum];
//we have a list with contentuid-values
if($listElementsTS != ""){
$listElementsTS = trim($listElementsTS);
$listElements = explode(",",$listElementsTS);
if(in_array($this->cObj->data['uid'],$listElements)){
// put Link into marker
$markerArray['###THELINK###'] = $theLink;
} else {
//put nothing into marker
$markerArray['###THELINK###'] = "";
}
//default: no values in the list -> we have all contentuid-values
} else {
// put Link into marker
$markerArray['###THELINK###'] = $theLink;
}
$content = $this->cObj->substituteMarkerArray($templateCode,$markerArray);

------------------------------------

Ist nicht der Königsweg, aber vielleicht erst mal zu gebrauchen?

Viele Grüsse

Ulrich

jk_kum ·

hallo ulrich,

in der tat eine lösung des problems. die abfrage über ts-definierte contentuids zu machen. nur kann man es keinem redakteur zumuten in typoscript eigenhändig gewünschte elemente zum kommentieren einzutragen, wenn er denn überhaupt was mit contentuids anfangen kann bzw. woher er sie bekommt.

eine halbwegs vertratbare lösung war schon dein ansatz mit der pidinrootlevel, weil mein schon vorher weiß welcher baum im menü standardmäßig mit artikeln gefüllt werden wird. ich sträube mich auch davor andere große extensions zu installieren, die auch eine kommentierfkt. bieten, aber die machen das ganze system umfangreicher, noch mehr inhaltelemente ...

diese extension ist klein, leicht einzubinden und macht genau das, was sie sie soll (in unserem fall: oder auch nicht). werde also noch weiter an einer lösung basteln.

gruß kum

Ulrich ·

Man könnte allerdings auch ein eigenes Contentelement einbinden, das z.B. auf einem normalen Textelement basiert und nur dieses mit dem Kommentarlink versehen.
Oder aber man erweitert das Eingabeformular der Inhaltselemente um ein Flag und fragt der Wert per TS ab.

jk_kum ·

das wäre auch eine gute idee, nur leider ist typo3 groß und an vielen stellen gibt es noch sachen die auch noch zum laufen gebracht werden müssen. da stelle ich mir die frage wie lange soll ich hier noch an der lösung dieses einen problems verweilen, wo doch noch andere baustellen zu bearbeiten sind. vielleicht stelle ich die kommentierfkt. auf meine to-do-liste erstmal wieder nach hinten und kümmer mich um die anderen baustellen. soll heißen das ich vorerst die flinte ins korn werfe. werde mich aber bei gelegenheit wieder darum kümmern, wenn ich mehr luft habe ... möchte schließlich selbst eine lösung ... wenn ich bei dieser sache weitergekommen bin, werde ich mich wieder hier melden...

gruß kum

jk_kum ·

hallo,

für das spaltenproblem noch keine lösung gefunden, dafür schon wieder eine neue hürde:

beim comment-link werden für das pop-up fehlerhafte variablen übergeben, bzw. die ampersands der url sind fehlerhaft. durch die anbindung an typolinkpopup wird im array der tx..pi.php das "&" in "&amp;" noch einmal ersetzt und es kommt "&amp;amp;" heraus....

für den explorer kein problem, aber für browser im strict-mode (firefox) schon...

wenn jemand eine idee hat?

gruss kum

jk_kum ·

... kleiner nachtrag zur verdeutlichung:

in der class.tx_rfcontentcomments_pi1.php wird per pi_openAtagHrefInJSwindow der link für das pop-up erzeugt. die zu übergebenen variablen sind schon per .htmlspecialchars xhtml tauglich. jetzt wird der array aber nochmals durch pi_openAtagHrefInJSwindow geschleust, dabei werden bereits umgewandelte ampersands (& --> &amp😉 nochmals per htmlspecialchars umgewandelt (aus &amp; wird--> &amp;amp😉.

hat jemand eine idee wie ich das verhindern kann???

kum

SLAng ·

Hallo auch...

tüftele ebenfalls schon seit einiger Zeit an dem Problem wie ich eine kommentarfunktion nur für ein Element einer bestimmten Seite erreiche.

Übernaommen habe ich bisher:
PIDinRootline = 824
tt_content.stdWrap.append >
tt_content.stdWrap.append =< plugin.tx_urcontentcomments_pi1
plugin.tx_urcontentcomments_pi1.thelink_stdWrap.10.listNum = 6697

Das bedeutet also das auf der Seite 824 kkommentarefunktionen angezeigt werden sollen und zwar für das Inhaltselement mit der ID 6697...

Leider haut das nicht hin...
Hat einer von euch eine Ahnung, wie ein enzelnes Inhaltselement ansprechen kann?

Wie sieht das aus, wenn auf der Seite 456, 789, 453, 123 und 345 (bsw) und nur die Elemente auf der Seite 456, das Elemnt mit der ID 5 auf der Seite 789 das Elemnt 6 usw ansprechen möchte? Geht das auch...?

Irgendwie scheint mir die Extension von hinten aufgezäumt... MAn will doch niemals alle Elemnte einer Seite eine Kommentarfunktion verpassen...