plugin "Links des Artikels" Problem...

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin "Links des Artikels" Problem...

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

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

Post by garvinhicking »

Wie sieht denn deine serendipity_exits tabelle aus für die entry_id 595?

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/
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin links des artikels...

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: plugin links des artikels...

Post 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
# 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/
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin problem...

Post 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
Last edited by kho on Thu Mar 09, 2006 8:28 pm, edited 1 time in total.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: plugin problem...

Post 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
# 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/
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin...

Post by kho »

@Garvin

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


lg, kho
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: plugin...

Post 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
# 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/
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin...

Post 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
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin...

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: plugin...

Post 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
# 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/
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin

Post by kho »

Der Inhalt liegt hier:

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

lg, kho
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: plugin

Post 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
# 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/
kho
Regular
Posts: 342
Joined: Fri Mar 04, 2005 8:34 pm

plugin...

Post 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
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: plugin...

Post by garvinhicking »

Jau, das würde sehr helfen :)

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/
Post Reply