Page 1 of 2

plugin "Links des Artikels" Problem...

Posted: Wed Mar 08, 2006 1:33 pm
by kho
Hallo,

ich verwende das plugin "Links des Artikels", das bisher -nach anfänglichen Problemen- auch fehlerfrei lief.

In meinem aktuellen Beitrag funktioniert es aber nicht mehr sauber, d.h. es wird nur die Anzahl eines einzigen Links angezeigt, bei den anderen wird nichts angezeigt. Im Beitrag selbst sind 7 Links, die alle gleich aufgebaut sind.

Ich verstehe nicht, warum das plugin nur einen einzigen Link registriert.

Weiss jemand Rat?

Vielen Dank im Voraus!

Liebe Grüsse, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog

Re: plugin "Links des Artikels" Problem...

Posted: Wed Mar 08, 2006 1:54 pm
by garvinhicking
Wie sieht denn deine serendipity_exits tabelle aus für die entry_id 595?

Grüße,
Garvin

plugin links des artikels...

Posted: Wed Mar 08, 2006 5:51 pm
by kho
@Garvin

Ich habe dir einen screenshot von der Tabelle _entries gemacht:

http://k-ho.de/s9y_entries.tiff

Die anderen Links werden offensichtlich nicht erkannt...

lg, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog

Re: plugin links des artikels...

Posted: Thu Mar 09, 2006 10:51 am
by garvinhicking
Das wundert mich doch sehr. Wir müssten mal zwei Änderungen durchführen:

1. Öffne deine include/functions.inc.php
2. Suche nach "function serendipity_track_url"
3. Ändere diese Funktion in folgendes:

Code: Select all

function serendipity_track_url($list, $url, $entry_id = 0) {
    global $serendipity;

    $url_parts = parse_url($url);

    $q = sprintf(
        "UPDATE %s%s
            SET count = count + 1
          WHERE scheme = '%s'
            AND host   = '%s'
            AND port   = '%s'
            AND path   = '%s'
            AND query  = '%s'
            AND day    = '%s'
            %s",

        $serendipity['dbPrefix'],
        $list,
        serendipity_db_escape_string($url_parts['scheme']),
        serendipity_db_escape_string($url_parts['host']),
        serendipity_db_escape_string($url_parts['port']),
        serendipity_db_escape_string($url_parts['path']),
        serendipity_db_escape_string($url_parts['query']),
        date('Y-m-d'),
        ($entry_id != 0) ? "AND entry_id = '". (int)$entry_id ."'" : ''
    );

    serendipity_db_query($q);

    if (serendipity_db_affected_rows() == 0) {
          $q2 = sprintf(
            "INSERT INTO %s%s
                    (entry_id, day, count, scheme, host, port, path, query)
             VALUES (%d, '%s', 1, '%s', '%s', '%s', '%s', '%s')",

            $serendipity['dbPrefix'],
            $list,
            (int)$entry_id,
            date('Y-m-d'),
            serendipity_db_escape_string($url_parts['scheme']),
            serendipity_db_escape_string($url_parts['host']),
            serendipity_db_escape_string($url_parts['port']),
            serendipity_db_escape_string($url_parts['path']),
            serendipity_db_escape_string($url_parts['query'])
        );
        serendipity_db_query($q2);
    }
    
    $fp = fopen($serendipity['serendipityPath'] . 'exit.log', 'a');
    fwrite($fp, $q . "\n\n" . $q2 . "\n-------------------------------------\n");
    fclose($fp);
}
4. Öffne deine plugins/serendipity_plugin_entrylinks/serendipity_plugin_entrylinks.php Datei
5. Ersetze die function generate_content() mit folgendem:

Code: Select all

    function generate_content(&$title)
    {
        global $serendipity;

        $title = $this->get_config('title', $this->title);

        if (!isset($serendipity['GET']['id']) || !is_numeric($serendipity['GET']['id'])) {
            return false;
        } else {
            $id = serendipity_db_escape_string($serendipity['GET']['id']);
        }

        $target   = '';
        $newwin   = $this->get_config('newwin', 'false');
        $wordwrap = $this->get_config('wordwrap', 30);
        $maxref   = $this->get_config('maxref', 15);
        $orderby  = $this->get_config('orderby', 'fullcount');

        if ($newwin == 'true') {
            $target = ' target="_blank" ';
        }


        $counter    = array();

        if ($this->get_config('show_exits', 'true') == 'true') {
            $q          = "SELECT SUM(count) as fullcount, scheme, host, port, path, query, " . serendipity_db_concat("scheme, '://', host, ':', port, path, '?', query") . " AS fulllink FROM {$serendipity['dbPrefix']}exits WHERE entry_id = " . $id . " GROUP BY scheme,host,port,path,query";
            $exits      = serendipity_db_query($q);
            if (is_array($exits)) {
                foreach($exits AS $key => $row) {
                    $url = sprintf('%s://%s%s%s%s',
                      $row['scheme'],
                      $row['host'],
                      (!empty($row['port']) ? ':' . $row['port'] : ''),
                      $row['path'],
                      (!empty($row['query']) ? '?' . $row['query'] : '')
                    );

                    $counter[$url] = $row['fullcount'];
                }
            }
        }

        $references = serendipity_db_query("SELECT link, max(name) as name FROM {$serendipity['dbPrefix']}references WHERE entry_id = " . $id . " GROUP BY link");
        $fp = fopen($serendipity['serendipityPath'] . 'exit.log', 'a');
        fwrite($fp, $q . "\n\n" . print_r($counter, true) . "\n\n" . print_r($references, true) . "\n");
        fclose($fp);
        if (is_array($references)) {
            $links = '<ul style="margin: 5px; padding: 10px; text-align: left">';
            foreach($references AS $key => $row) {
                if (empty($row['name']) || empty($row['link'])) {
                    continue;
                }
                $count = '';
                if (isset($counter[$row['link']])) {
                    $count = '<br /><div style="text-align: right; margin: 0px">[' . $counter[$row['link']] . ']</div>';
                }
                $link_name = $wordwrap < 1? $row['name']: wordwrap($row['name'], $wordwrap, "<br />", 1);
                $links .= '<li><a href="' . $row['link'] . '" ' . $target . '>' . $link_name . "</a>$count</li>";
            }
            $links .= '</ul>';

            if ($this->get_config('markup', 'true') == 'true') {
                $entry = array('html_nugget' => $links, 'entry_id' => $id);
                serendipity_plugin_api::hook_event('frontend_display', $entry);
                echo $entry['html_nugget'];
            } else {
                echo $links;
            }
        }

        if ($this->get_config('show_referers', 'true') == 'true') {
            $ref      = serendipity_db_query("SELECT SUM(count) as fullcount, scheme, host, port, path, query, " . serendipity_db_concat("scheme, '://', host, ':', port, path, '?', query") . " AS fulllink FROM {$serendipity['dbPrefix']}referrers WHERE entry_id = " . $id . " GROUP BY scheme,host,port,path,query ORDER BY $orderby DESC LIMIT $maxref");
            if (is_array($ref)) {
                echo PLUGIN_ENTRYLINKS_REFERERS . '<ul style="margin: 5px; padding: 10px; text-align: left">';
                foreach($ref AS $key => $row) {
                    $url = sprintf('%s://%s%s%s%s',
                      $row['scheme'],
                      $row['host'],
                      (!empty($row['port']) ? ':' . $row['port'] : ''),
                      $row['path'],
                      (!empty($row['query']) ? '?' . $row['query'] : '')
                    );

                    echo '<li><a href="' . $url . '" ' . $target . '>' . wordwrap($row['host'], $wordwrap, "<br />", 1) . '</a><br /><div style="text-align: right; margin: 0px;">[' . $row['fullcount'] . "]</div></li>";
                }
                echo '</ul>';
            }
        }
    }
Wie Du vielleicht gesehen hast, sollte jetzt die Datei "exit.log" in deinem Serendipity Stammverzeichnis geschrieben werden wenn man auf einen Link klickt und wenn die Links ausgelesen werden.

Bitte klicke einmal auf einen Link und lasse dir dann den artikel nochmal anzeigen und speichere dann die exit.log Datei auf http://nopaste.php-q.net/ so dass ich sie mir mal ansehen kann.

Viele Grüße,
Garvin

plugin problem...

Posted: Thu Mar 09, 2006 8:20 pm
by kho
@Garvin

Habe ich gemacht, allerdings bekomme ich folgenden Fehler, wenn ich versuche, mir die Kommentare anzuschauen (auf der Seite sind ja die Links zum Artikel...):

Parse error: parse error, unexpected ';', expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /homepages/21/d17968920/htdocs/blog/plugins/serendipity_plugin_entrylinks/serendipity_plugin_entrylinks.php on line 206

Ich habe die Dateien erstmal wieder auf den alten Stand gebracht.

Den Inhalt der exit-Datei habe ich bei dir abgelegt. Die heisst allerdings nicht exit.log sondern exit.php.... ist das überhaupt die Richtige??

lg, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog

Re: plugin problem...

Posted: Thu Mar 09, 2006 8:28 pm
by garvinhicking
Anscheinend war dann in dem gepasteten Code in Zeile 205 oder 206 ein Fehler. Was genau stand bei Dir in Zeile 205 und 206?

Grüße,
Garvin

plugin...

Posted: Thu Mar 09, 2006 8:31 pm
by kho
@Garvin

Das kann ich nun leider nicht sagen, weil ich die Datei mit den Änderungen nicht mehr gesichert habe...


lg, kho

Re: plugin...

Posted: Thu Mar 09, 2006 8:38 pm
by garvinhicking
Könntest Du es denn bitte nochmal machen? :-)

Da wird nur ein einfacher PHP-Fehler sein, fehlende Klammer oder fehlender ";" oder so.

Grüße,
Garvin

plugin...

Posted: Thu Mar 09, 2006 8:46 pm
by kho
ok, also da steht:

/* vim: set sts=4 ts=4 expandtab : */
?>

Vorher stehen 3 geschweifte Klammern... kann es sein, das da eine zuwenig ist?

lg, kho

plugin...

Posted: Thu Mar 09, 2006 8:50 pm
by kho
So, hat geklappt, es hat bei deinem coding in der Tat eine Klammer gefehlt...

Den Inhalt der exit.log Datei habe ich hochgeladen...

Eins noch: kann ich die Dateien jetzt auf diesem Stand lassen oder muss ich die wieder zurücksetzen??

Ist ja schliesslich mein "Produktivblog", nicht, dass da was schiefläuft...

lg, kho

Re: plugin...

Posted: Thu Mar 09, 2006 9:10 pm
by garvinhicking
Wo hast Du die Datei denn hochgeladen? Wenn ich sie gesehen habe kann ich dir sagen, ob mir das an Infos ausreicht. :))

Am besten Du speicherst die veränderten Dateien auch übergangsweise mal so dass du sie nachher nochmal kurzfristig umstellen kannst...

Viele Grüße,
Garvin

plugin

Posted: Thu Mar 09, 2006 9:13 pm
by kho
Der Inhalt liegt hier:

http://nopaste.php-q.net/197251

lg, kho

Re: plugin

Posted: Thu Mar 09, 2006 9:58 pm
by garvinhicking
Der Inhalt sieht für mich okay aus...die Zahlen werden ja anscheinend in der Datenbank korrekt gespeichert und ausgelesen.

Kann es sein, dass Du das Simplecache-Plugin installiert hast?

Ich fürchte, anhand der daten werden ich so nicht weiterkommen, da bräuchte ich vermutlich FTP-Zugriff, weil ich sonst die Zeit für das Code-Pingpong nicht habe. :)

Viele Grüße,
Garvin

plugin...

Posted: Thu Mar 09, 2006 10:05 pm
by kho
Nein, das simplecache-plugin habe ich nicht installiert.... was mich wundert, ist, dass aber nur zwei Einträge in der _exit Tabelle stehen.. und dass es nur bei dem einen Beitrag nicht zu funktionieren scheint. Der Beitrag von heute hat auch einen Link, der erkannt und auch mitgezählt wird.

Würde es denn helfen, wenn ich dir die Zugangsdaten gebe?

lg, kho
kho: Bilder, Geschichten, Begegnungen...
www.k-ho.de/blog

Re: plugin...

Posted: Thu Mar 09, 2006 10:32 pm
by garvinhicking
Jau, das würde sehr helfen :)

Grüße,
Garvin