| |||||||
| Registrieren | Lexikon | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| PostRank: 0 ![]() Registriert seit: 02.01.2006
Beiträge: 3
| Kommentare werden nicht immer angezeigt Bei meiner WordPress-Installation tritt seit etlichen Monaten ein seltsames Phänomen auf: die meisten Besucher können die Kommentare zu einem Beitrag nicht sehen, obwohl die Kommentare in der Datenbank vorhanden sind. Das Ganze wird vollkommen mysteriös durch die Tatsache, daß diese Probleme nie auftreten, wenn mein Weblog von meinem heimischen Internet-Zugang aus besucht wird. Ich habe meine Website kürzlich von meinem Service Provider auf meinen eigenen lokalen Webserver verschoben, um diesem Phänomen eventuell leichter auf die Schliche zu kommen, aber auch diese „Übersiedlung“ hat nichts geholfen. Mit reiner Logik ist dieses Phänomen nicht zu begreifen: entweder gibt es Anmerkungen, oder es gibt keine – unabhängig davon, welcher Besucher mit welchem Browser aus welcher Ecke des Internets auch immer das PHP-Script startet, das seinerseits wiederum die Datenbank abfragt. Sollte man meinen Mein Weblog findet sich hier: http://www.berghofer.com/wordpress/ Ich verwende bewußt noch WordPress Version 1.5.1.3, der Webserver ist ein Apache 1.3.33 für Darwin (Mac OS X 10.4.3) mit PHP 4.3.11 und mySQL 4.0.21. Das Problem gibt es auch dann, wenn ich die Datei „comments.php“ von anderen Themen bzw. „skins“ verwende. „comments.php“ von der WordPress-Version 2.0 bringt auch keine Abhilfe. Hat jemand eine Idee, woran das liegen könnte? Vermutlich verursacht die Variable „$comments“ die Probleme: mit der Abfrage „if ($comments)...“ überprüft WordPress, ob Kommentare darzustellen sind. Ich versuche gerade, die Datei „comments.php“ so zu modifizieren, daß ich „zu Fuß“ aus der Datenbank alle Kommentare lese, die zum aktuellen Beitrag gehören und anschließend die Anzahl der darzustellenden Kommentare an die Variable „$comments“ übergebe. Das funktioniert auch recht gut, nur kann ich leider aus den restlichen WordPress-Modulen nicht genau ersehen, welcher Datentyp von der Schleife „foreach ($comments as $comment)“ als „$comments“ erwartet wird. Die direkte Zuweisung des aktuell aus der Datenbank geholten Records in der Form „$comments[] = $row“ funktioniert leider nicht. Gibt es hier vielleicht mit PHP-Programmierung vertraute Menschen, die mir in dieser speziellen Frage etwas auf die Sprünge helfen könnten? Besten Dank, Werner. Geändert von Werner Berghofer (02.01.2006 um 11:57 Uhr). |
| | |
| | #2 (permalink) |
| PostRank: 4 ![]() Registriert seit: 28.12.2004
Beiträge: 258
| Benutzerrechte hmm, ist nur so eine schnelle Idee: schonmal die Chmod Rechte überprüft, so von wegen schreiben und lesen für Eigentümer und Benutzer? Mehr fällt mir da leider auch nicht zu ein, aber vielleicht warst du ja bei der vergabe der Rechte zu geizig damit FNJ Oliver |
| | |
| | #3 (permalink) |
| PostRank: 0 ![]() Registriert seit: 02.01.2006
Beiträge: 3
| Oliver, > schonmal die Chmod Rechte überprüft klar, die wurden für Debug-Zwecke sogar auf 0777 gesetzt. Ich kann mir nicht vorstellen, daß die Benutzerrechte damit in Zusammenhang stehen. Der Inhalt der WordPress-Variablen „$comments“ ist beim Zugriff der meisten Besucher anders als beim Zugriff aus meinem LAN, das ist die Teufelei dabei. Vergiß nicht: das wirkliche Phänomen ist ja, daß die meisten Besucher die Anmerkungen nicht sehen können, während sie von jedem Rechner aus meinem LAN, der – gleichgültig ob lokal oder über das Internet – auf meine Website zugreift, sehr wohl dargestellt werden. Bei meinem Internet-Provider trat dieses Problem auf, als meine HTML- und PHP-Files auf den gleichen Server verschoben wurden, auf dem auch der mySQL-Server läuft. In dem Moment, wo Web- und mySQL-Server wieder zwei verschiedene Rechner waren, ist dieses Phänomen verschwunden. Ich werde mal versuchen, dieses Szenario auch bei mir lokal nachzubilden. Wüßte ich, welche Datenstruktur WordPress beim Codeteil if ($comments) und der anschließenden Schleife foreach ($comments as $comment) in der Variablen $comments erwartet, würde ich sie durch eine eigene Datenbank-Abfrage entsprechend präparieren. Mich erschüttert auch die nicht vorhandene Trennung von (lokalisierter) Sprache und Anweisungen im WordPress-PHP-Code ziemlich. Die WordPress-Entwickler könnten sich vom Sourcecode des phpBB-Forums eine Menge Inspiration holen. Herzlichen Dank für’s Kopfzerbrechen, Oliver Werner. Geändert von Werner Berghofer (02.01.2006 um 15:31 Uhr). |
| | |
| | #4 (permalink) |
| PostRank: 0 ![]() Registriert seit: 02.01.2006
Beiträge: 3
| Oliver, ich hab’s behoben. In der Datei „comments.php“ wird jetzt der Inhalt des Objekt-Arrays $comments von einer eigenen Routine präpariert, bevor sich WordPress daran macht, ihn auszulesen, zu formatieren und darzustellen. Diese Zeilen haben geholfen: Code: <?php
include_once "/Library/WebServer/Documents/lib/constants.inc.php";
unset($comments);
$postID = $post->ID;
$db = @mysql_connect(MY_SQLSERVER, MY_DBUSER, MY_DBPW);
$sql = "SELECT * FROM wp_comments WHERE (comment_post_ID = " . $postID . ") AND (comment_approved = '1') ORDER BY comment_date ASC";
$result = @mysql_db_query(MY_DBNAME, $sql, $db);
$recs = @mysql_num_rows($result);
if ($recs > 0)
{
while ($row = @mysql_fetch_object($result))
{
extract($row);
$comments[] = $row;
}
}
@mysql_close($db);
reset($comments);
?>
Werner. Geändert von Werner Berghofer (02.01.2006 um 20:48 Uhr). |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |