Page 1 of 1

[SOLVED][serendipity_event_freetag] Artikel-Tags

Posted: Thu Jan 11, 2007 3:14 pm
by Dragonblast
Hey Community !

Habe mir das "serendipity_event_freetag" Plugin gezogen.
Nun möchte ich nicht, dass mir das Plugin automatisch alle Tags
bei jedem Artikel am $entry.body anhängt.
Mein Ziel wäre, die Tags von jedem Eintrag einer Smarty-Array-Variable zu übergeben, und dann im entries.tpl auszugeben.

Kann mir jemand einen Lösungsvorschlag posten, oder wenn vorhanden,
einen Link zu einem früheren Thread zu diesem Thema ( wurde per
Suche nicht fündig ) ?

Wäre euch echt dankbar !


Freundliche Grüsse
Dragonblast

Re: [serendipity_event_freetag] Artikel-Tags

Posted: Thu Jan 11, 2007 3:50 pm
by garvinhicking
Hi!

Hm, das ist derzeit im Plugin noch nicht vorgesehen; es kann nur in den body gehangen werden oder in den footer des eintrags.

Schau dir mal die Methode "function displayEntry(&$eventData, $addData)" an, die ist dafür zuständig. Du könntest recht leicht einfach ein eigenes Feld wie "tags" als $field variabe besetzten, dann wäre der Inhalt dessen in Smarty-Variablen...

Da Du dich ja schon etwas auszukennen scheinst, vielleicht hättest Du Lust mal zu schauen da eine Konfig-Variable neu anzulegen, ähnlich wie "embed_footer" die "embed_smarty" heißt und dann die Tags einfach in $eventData[...]['properties']['tags'] reinschreibst? Dann kannst Du die in Smarty via {$entry.properties.tags} aufrufen...

HTH,
Garvin

Posted: Thu Jan 11, 2007 4:12 pm
by Dragonblast
Besten Dank für deine rasche Antwort !

Nun, habe ich mein Problem beinahe gelöst ( nun ja, der Weg war
eigentlich schon vorgegeben )..

Ich habe gesehen, dass jedem Entry ein Tagliste übergeben wird.
( Per Smarty-Debug-Console ) und kann diese per foreach-Schleife
zu jedem Artikel ausgeben.

Nun wird aber jedem Tag noch ein Leerzeichen angehängt ( ist auch
ersichtlich bei der Ausgabe ). Ich möchte dieses jedoch entfernen,
habe aber in der Datei "serendipity_event_freetag.php" kein solches
gefunden... Hättest du mir einen Vorschlag ?

Code: Select all

Smarty-Debug-Console

{$entries}      properties => Array (2)
                          freetag_tags => Array (7)
                            0 => Tag 1\r
                            1 => Tag 2\r
                            2 => Tag 3\r

Posted: Thu Jan 11, 2007 4:17 pm
by garvinhicking
Hi!

Ich vermute das "\r" kommt daher weil Du mit einem Windows-Tool die Tags kommasepariert eingegeben hast und mit \n\r getrennt? Und irgendwas explodet oder ersetzt wohl die Tags anhand von "\n", so dass ein "\r" übrig bleibt?

Viele Grüße,
Garvin

Posted: Thu Jan 11, 2007 4:39 pm
by Dragonblast
Du bist echt schlau ;) Ja, habe das ganze so in die Datenbank
eingetragen wie du vorhersagtest =)

Werde das noch noch ausbessern müssen..
Momentan reicht mir $foobar|replace:"\r":""

Besten Dank nochmals !

[SOLVED]


EDIT
Habe gerade gesehen, dass wenn ich ein Eintrag "extended" habe,
keine Tags erhalte. Im Debugger zeigt es mir auch ein leeres Array
an: properties => Array (0) ...

Wüsstest du, an was das liegen könnte ?

Mein Verdacht liegt auf diese Funktion:

Code: Select all

    function importEntryTagsIntoProperties(&$eventData, $addData) {
        // we do a dual loop here, which is probably the worst thing to do.
        // A better thing might be some kind of array merge action, but I am not
        // entirely sure how do do that with the arrays we are given.
        //
        // RefactorMe Later.

        // Loop one in getTagsForEntries
        $tagGroups = $this->getTagsForEntries(array_keys($addData));

        // Loop 2
        if (is_array($tagGroups))  {
            foreach($tagGroups as $entryId => $tagList) {
                $eventData[$addData[$entryId]]['properties']['freetag_tags'] = $tagList;
                $eventData[$addData[$entryId]]['properties']['freetag_tagList'] = implode(",", $tagList);
            }
        }
    }
Die Tags werden ja nur dann im $eventData[$addData[$entryId]]['properties']['freetag_tags'] gespeichert, wenn es $tagGroups ein Array ist ( also wenn mehrere Einträge
vorhanden sind )...

Posted: Fri Jan 12, 2007 9:24 am
by garvinhicking
Hi!

Wow. Ein sehr guter "Fang", den Du da gemacht hast. Das war ein tatsächlich schwererer Bug, der nicht am Plugin sondern am Serendipity-Kern lag.

Den habe ich nun beheben können, und er wird Teil der nächste Version sein die sicher bald rauskommt. Mit folgendem Patch kannst du es schon anwenden:

http://svn.berlios.de/viewcvs/serendipi ... 8&view=rev

Vielen Dank für diese Hilfe!

Viele Grüße,
Garvin

Posted: Fri Jan 12, 2007 10:02 am
by Dragonblast
Bitte-und Dankeschön =)

Ich erhalte jedoch die Ausgabe:

Fatal error: Call to undefined function serendipity_db_time() in /var/www/bkanal.ch/v2/htdocs/app/webroot/blog/include/functions_entries.inc.php on line 475

Kann das daran liegen, dass die Blog-Software zu alt ist ? ( 1.0.4 )

Posted: Fri Jan 12, 2007 1:54 pm
by garvinhicking
Hi!

Oh, achso. Die gelinkte datei ist von Serendipity 1.1! Du müsstest Dir also das diff raussuchen was ich heute gemacht habe und manuell auf 1.0.4 transportieren.

Oooder halt auf die 1.1 aktualisieren. :)

Viele Grüße,
Garvin

Posted: Fri Jan 12, 2007 10:28 pm
by Dragonblast
Yes, lag daran ( habe den ein Upgrad durchgeführt.. ).
Die Tags werden mithilfe deines Fixes auch angezeigt =) Dankeschön !
( Ohne die Hilfe wäre unser Blog nur halb so perfekt für den Launch ;) )