Ähnliche Themen Plugin

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
Nesti
Regular
Posts: 25
Joined: Fri May 11, 2007 3:33 pm

Ähnliche Themen Plugin

Post by Nesti »

Hi,

ich habe 2 Fragen zu dem "Ähnliche Themen" Plugin, hab zwar einiges selber probiert doch leider hat bis jetzt nichts funktioniert.

1. Ist es irgendwie möglich die Ähnlichen Themen auf der Startseite unter einem Eintrag einzubauen?
Sie werden ja nur angezeigt wenn man auf den Eintrag klickt, also nur auf der Kommentar-Seite usw. Ich würde sie jedoch gerne auf der Startseite anlegen. Ist das irgendwie möglich?


2. Ähnliche Themen auch in den Statische Seiten?
Kann man dieses Plugin auch irgendwie für die statischen Seiten nutzen? Da ich viele Seiten nutze, ist es sehr aufwendig das alles per Hand zu machen. :oops:


Danke und beste Grüße
Nesti
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Ähnliche Themen Plugin

Post by garvinhicking »

Hi!

1. Ja. Stelle dazu im Plugin ein, dass Du Smarty zur Positionierung nutzen willst. Dann editierst Du die entries.tpl datei deines templates, und packst {$RELATEDLINKS} an die Stelle, wo Du es gerne hättest.

2. Nein, das geht nicht, da das Plugin auf die Datenbankspalten der Einträge hin programmiet ist. Dafür müsste man das Plugin komplett mit anderem Code erweitern, der auch bei statischen Seiten ausgeführt wird.

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Nesti
Regular
Posts: 25
Joined: Fri May 11, 2007 3:33 pm

Post by Nesti »

Hallo Garvin,

danke für deine Antwort!

Ein Problemchen hab ich leider noch, welches Plugin ist es denn? Da bei mir nur der "Freie Artikel Tags" Plugin in Frage kommt, bei dem finde ich aber keine Einstellungsmöglichkeiten?

Beste Grüße
Nesti
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Wie, was meinst Du? Du hast doch vom Plugin "Verwandte Artikel" (Ähnliche Themen oder wie auch immer) gesprochen?!? Was hat das mit dem Tagging-Plugin zu tun?

Grüßew,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
stm999999999
Regular
Posts: 1531
Joined: Tue Mar 07, 2006 11:25 pm
Location: Berlin, Germany
Contact:

Post by stm999999999 »

Auch die Freetags bieten einen "verwandte Artikel"-Block, eben auf Basis übereinstimmender Tags.

Nicht zu verwechseln mit dem Plugin, mit dem man manuell "verwandte" Artikel ein- und ausgeben kann.
Ciao, Stephan
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Aaah, achso. Da habe ich wohl Plugins verwechselt.

Beim Freetag plugin geht es leider nicht, die verwandten Einträge direkt auf der Startseite anzuzeigen, ohne den PHP-Code des Plugins anzupassen. Aus Performancegründen wird das immer nur für einen einzelnen Artikel gemacht, das bereits in der Übersicht zu machen würde für sehr viel Datenbanklast sorgen. Ich würde also stark empfehlen, darauf lieber zu verzichten?

Wenn es denn garnicht anders geht, müsste man sich die serendipity_event_freetag.php zur Brust nehmen und den Code

Code: Select all

            for ($i = 0; $i < $elements; $i++) {
               if (empty($eventData[$i]['properties']['freetag_tags'])) {
                    continue;
                }
(ungefähr zeile 968) ändern in:

Code: Select all

            for ($i = 0; $i < $elements; $i++) {
               if (empty($eventData[$i]['properties']['freetag_tags'])) {
                    continue;
                }
                    $passvar = $this->getRelatedEntries($eventData[$i]['properties']['freetag_tags'], $eventData[$i]['id']);
                    if (is_array($passvar)) {
                        $eventData[$i]['related_entries'] .= $this->getRelatedEntriesHtml($passvar);
                    }
    
                    if (!isset($eventData[$i]['add_footer'])) {
                        $eventData[$i]['add_footer'] = '';
                    }
Dann kann man in seiner entries.tpl die Variable {$entry.related_entries} da platzieren wo man mag (innerhalb der foreach-schleife).

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Nesti
Regular
Posts: 25
Joined: Fri May 11, 2007 3:33 pm

Post by Nesti »

Hallo Garvin,

vielen Dank für die Klasse antwort! Werde das ganze mal am Wochenende testen.

Auf der Startseite/Übersicht wird auch nur ein Text angezeigt, sodass es mit der Performance funktionieren sollte. Aber wie gesagt, werde testen und dann mal berichten :)

Viele Grüße
Nesti
A.Stark
Regular
Posts: 28
Joined: Tue Oct 21, 2008 4:17 pm

Re: Ähnliche Themen Plugin

Post by A.Stark »

Hallo Garvin,
garvinhicking wrote:(ungefähr zeile 968) ändern in:

Code: Select all

                    $eventData[$i]['related_entries] .= 
Gibt Fehler, weil bei ['related_entries] ein Hochkomma am Ende fehlt, also

Code: Select all

$eventData[$i]['related_entries'] .=
Funktioniert bei mir aber leider trotzdem nicht. So sieht bei mir der Abschnitt in der serendipity_event_freetag.php aus:

Code: Select all

$skeys = array();
                for ($i = 0; $i < $elements; $i++) {
                   if (empty($eventData[$i]['properties']['freetag_tags'])) {
                        continue;
                    }
                    $ctags = explode(',', $eventData[$i]['properties']['freetags_tags']);
                    $passvar =& $this->getRelatedEntries($ctags, $eventData[$i]['id']);
                 if (is_array($passvar)) {
                    $eventData[$i]['related_entries'] .= $this->getRelatedEntriesHtml($passvar);
                }
                $cont = sprintf($msg, $this->getTagHtml($eventData[$i]['properties']['freetag_tags']));
                if ($field == 'add_footer') {
                    $skeys[$i] =& $eventData[$i]['add_footer'];
                } elseif ($field == 'freetag') {
                    $skeys[$i] =& $eventData[$i]['freetag'];
                } elseif (strlen($eventData[$i]['extended']) > 0) {
                    $skeys[$i] =& $this->getFieldReference('extended', $eventData[$i]);
                } else {
                    $skeys[$i] =& $this->getFieldReference('body', $eventData[$i]);
                }
                $skeys[$i] .= $cont;
            }
Und so der Abschnitt in meiner entries.tpl

Code: Select all

            <div class="tags">
            {if $entry.categories}
                <p>{$jpost} {$CONST.IN} {foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}</p>
            {/if}
            {$entry.freetag}
            {$entry.related_entries}
            </div>
Related-Entries funktioniert normal im Erweiterten Eintrag.
Was kann ich tun?

Grüße, Andreas
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Ähnliche Themen Plugin

Post by garvinhicking »

Hi!

Und wenn Du aus $eventData[$i]['related_entries'] ein $eventData[$i]['properties']['related_entries'] machst und dann $entry.properties.related_entries?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
A.Stark
Regular
Posts: 28
Joined: Tue Oct 21, 2008 4:17 pm

Re: Ähnliche Themen Plugin

Post by A.Stark »

Geht leider nicht. Unverändert.

So sieht es jetzt aktuell aus.

Code: Select all

for ($i = 0; $i < $elements; $i++) {
                   if (empty($eventData[$i]['properties']['freetag_tags'])) {
                        continue;
                    }
                    $ctags = explode(',', $eventData[$i]['properties']['freetags_tags']);
                    $passvar =& $this->getRelatedEntries($ctags, $eventData[$i]['id']);
                 if (is_array($passvar)) {
                    $eventData[$i]['properties']['related_entries'] .= $this->getRelatedEntriesHtml($passvar);
                }
entries.tpl

Code: Select all

            {$entry.freetag}
            {$entry.properties.related_entries}
            </div>
lg, Andreas
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Ähnliche Themen Plugin

Post by garvinhicking »

Hi!

Okay, da waren zwei Bugs drin. Korrekt muss der einzufügende Teil so lauten (ich hab den ursprünglichen Eintrag korrigiert):

Code: Select all

                    $passvar = $this->getRelatedEntries($eventData[$i]['properties']['freetag_tags'], $eventData[$i]['id']);
                    if (is_array($passvar)) {
                        $eventData[$i]['related_entries'] .= $this->getRelatedEntriesHtml($passvar);
                    }
    
                    if (!isset($eventData[$i]['add_footer'])) {
                        $eventData[$i]['add_footer'] = '';
                    }
Dann $entry.related_entries nutzen.

Habs auch ins offizielle plugin (auskommentiert) eingefügt, damit man es so in zukunft leichter "freischalten" kann.


Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
A.Stark
Regular
Posts: 28
Joined: Tue Oct 21, 2008 4:17 pm

Re: Ähnliche Themen Plugin

Post by A.Stark »

Hallo Garvin,

alles im grünen Bereich! Klappt super!
Habs auch ins offizielle plugin (auskommentiert) eingefügt, damit man es so in zukunft leichter "freischalten" kann.
Perfekt.

Vielen Dank für Deine Hilfe.

Grüsse, Andreas
Post Reply