[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
comment_rank für Newskommentare anpassen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

comment_rank für Newskommentare anpassen

1. Jul 2007, 16:55

Ich nutze das Newsaddon von Polarpixel, was leider keine Kommentarfunktion beinhaltet. Also wollte ich mir etwas entsprechendes basteln (was vernünftigeres als eine Batelei wird's wohl kaum) :D

Dazu habe ich nun im Newseintrag einen Link hinzugefügt, der einen neuen Artikel aufruft und zusätzlich einen Parameter (ID des Newseintrages) enthält. In der folgenden Form geschieht das:

Code: Alles auswählen

index.php?article_id=47&news_id=15
In dem aufgerufenen Artikel wird mittels der ID der Eintrag nochmal einzeln angezeigt.
Ich hab hier mal den Code:

Code: Alles auswählen

<?php

$sql = new sql();

  $thequery = '
  SELECT *
  FROM rex_105_news
  WHERE id="'.$_GET['news_id'].'"';

$sql->setQuery($thequery);

  echo '
          <a id="n'.$sql->getValue("rex_105_news.id").'"></a>
          <div class="newswrapper">';
  echo '
          <div class="newstop">
          <div class="newsheader"><p>';
  echo $sql->getValue("news_title").'<br />';
  echo '<span>'.strftime("%d.%m.%Y", $sql->getValue("news_date")).'</span></p></div>
          </div>';
  echo '
          <div class="newsmain">';

  $input = $sql->getValue("news_text");
  $textile = new Textile; 
  $text = "";
  if ($sql->getValue("news_text") != "") $text = $textile->TextileThis($input);
  $text = str_replace("###","&#x20;",$text);
  print $text;

  echo '<p class="autor">von Pik</p>';
  echo '</div>';
  echo '<hr />';
  echo '</div>';

?>
Stammt fast alles aus dem Newsaddon von Polarpixel und ist sicher auch verbesserungswürdig, was die Datenbankabfrage angeht, aber besser bekomme ich es (noch) nicht hin :)

Für die Kommentare habe ich nun das comment_rank-Addon von franz007 gewählt und das Modul in dem angesprochenen Artikel unter die Newsausgabe gehängt.
Soweit so gut. Das Problem ist nun, daß sich das Kommentar-Addon an der Artikel-ID orientiert, weshalb ich bei allen Newseinträgen die gleichen Kommentare stehen habe. Es müsste sich also stattdessen an dem übergebenen Parameter "news_id" orientieren.
Bisher hab ich's ohne (menschliche) Hilfe geschafft, aber jetzt bräuchte ich doch einen Tip, wie ich das bewerkstelligen kann.

Dr KillerJoe
Beiträge: 1711
Registriert: 24. Nov 2005, 22:29
Kontaktdaten: ICQ Website Yahoo Messenger

2. Jul 2007, 01:29

Hi.

Probier mal die neuste Version vom Comment_rank (1.5), da kann man eine Id angeben, da kannst Du mehrere mal das Modul in einem Artikel einbinden

mfg
Flo
Die Doku und Wiki sind Deine Freunde!!!

Benutzeravatar
franz007
Beiträge: 276
Registriert: 16. Aug 2006, 00:36

2. Jul 2007, 10:43

Ja, und die oben setzt du einfach als wert für $uid deine news_id damit müsste es funktionieren

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

2. Jul 2007, 15:09

Damit klappt es! Danke euch :D

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

11. Jul 2007, 16:18

Ich wollte jetzt noch die Kommentaranzahl im Kommentarlink ergänzen, habe aber Probleme mit der Datenbankabfrage.

Code: Alles auswählen

  $thequery = '
  SELECT *
  FROM rex_105_news
  WHERE news_online = "1"
  AND news_date <= UNIX_TIMESTAMP()'.$zeitfilter.'
  AND news_date2 >= UNIX_TIMESTAMP()'.$order;
Das ist die Abfrage der Newseinträge. Jetzt müßte ich noch Spalten aus der Tabelle 'rex_111_comment_rank_overview' auslesen, aber mir ist nicht klar, wie ich das mit der vorhandenen Abfrage arrangieren kann. Die Abfragebedingungen passend ja nicht zu der anderen Tabelle. Wenn ich eine neue Abfrage starte wird die alte ja überschrieben.
Kann man mehrere SELECT-Anweisungen innerhalb einer Abfrage einbauen? Einen passenden SQL-Befehl für eine zweite Abfrage habe ich auch nicht gefunden.

Benutzeravatar
franz007
Beiträge: 276
Registriert: 16. Aug 2006, 00:36

12. Jul 2007, 10:41

Hallo, den link machst du am einfachsten folgendermaßen:
such ungefär bei zeile 629 "#popup link", dort wird so ein link mit der kommentaranzahl für das popup erzeugt du musst das nur kopieren und die url ändern.
eventuell musst du noch die dateien includen. und das msg objekt erzeugen, oder du ersetzt alles durch text.

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

12. Jul 2007, 16:15

Der Link an sich ist ja nicht das Problem, nur die DB-Abfragen an sich, die sich in die Quere kommen :D
Der Link befindet sich in dem Artikel mit dem Modul zur Newsausgabe, ohne Modul für die Kommentarausgabe. Zu dem gelangt man erst über den Link.
Wenn ich jetzt aber die Tabelle für die Kommentaranzahl entsprechend auslesen will ist ja schon die Abfrage für die News (siehe oben) "im Weg".
Die Abfrage mit $thequery2 und $sql2 hat irgendwie nicht funktioniert.

Benutzeravatar
franz007
Beiträge: 276
Registriert: 16. Aug 2006, 00:36

12. Jul 2007, 16:37

Der $thequery oder $sql oder wie auch immer dient nur der übersichtlichkeit damit du den string nicht gleich in die funktion schreiben musst.

Dann schickst du die abfrage mit

Code: Alles auswählen

 $result = mysql_query($sql);
ab und erhältst eine id die auf das ergebnis zeigt. Den Inhalt der Abfrage kannst du dann mit mysql_result($result) anzeigen oder abspeichern. das ist die standartmethode

Bei redaxo ist das ganze objektorientiert gekapselt und damit einfacher zugänglich.
zuerst wird mit

Code: Alles auswählen

$db = new sql;
ein sql objekt erzeugt, dieses kannst du dann immmer nutzen.
Um wieder die Abfrage in $sql abzusetzen musst du hier nur noch

Code: Alles auswählen

$db->setQuery($sql);
ausführen und erhältst wieder einen zeiger den du nützen kannst oder

Code: Alles auswählen

$db->get_array($sql);
um das ergebnis gleich in einen array zu speichern.

Wenn du also mehere verschiedene selects hast einfach einen nach dem anderen ausführen jeweils das ergebins gleich in einer variable abspeichern oder mit den verschiedenen zeigern arbeiten.

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

12. Jul 2007, 16:59

Ok, danke, ich werde mich mal dran versuchen :)

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

12. Jul 2007, 20:08


Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

13. Jul 2007, 14:52

Ich hab jetzt die jeweilige Anzahl der Kommentare in 'nem Array gespeichert, dessen Werte dann der Reihe nach (in der Newsausgabeschleife) ausgegeben werden. Funktioniert immerhin.

Ich werde wohl noch bisschen rumprobieren müssen, ehe ich die ganze Sache einwandfrei verstehe :D
Aber das wird schon noch, danke :)

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

24. Aug 2007, 13:38

Ich brauche mal wieder Hilfe :)

Ich wollte in die Kommentare einen automatischen Zeilenumbruch mittels nl2br einbauen. Ich habe also in der comment_1.5.php etwa in Zeile 174 (unterhalb des Punktes #sonderzeichen der html-tags wieder umwandeln (< und >))

Code: Alles auswählen

$_POST['comment_text'] = nl2br($_POST['comment_text']);
eingefügt (nach den str_replace-Anweisungen für diesen Punkt). Allerdings funktioniert das leider nicht.

Benutzeravatar
franz007
Beiträge: 276
Registriert: 16. Aug 2006, 00:36

24. Aug 2007, 16:35

Das ist doch schon drin. Version 1.5 omment_rank/pages/comment_1.5.php zeile 168. Da wird doch genau das gemacht. Was genau willst du machen?

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

24. Aug 2007, 17:09

Hast recht, das ist schon da. Funktioniert komischerweise aber bei mir nicht.
Die Zeilenumbrüche im Textfeld werden nach dem Abschicken nicht in den Kommentaren dargestellt. Da ist nur der zusammenhängende Text da.

Benutzeravatar
franz007
Beiträge: 276
Registriert: 16. Aug 2006, 00:36

24. Aug 2007, 18:21

OK sry. es funktioniert wirklich nicht.
Folgendes um den Fehler zu beheben:
In zeile 127 (vor '$_POST['comment_name'] = mysql_real_escape_string($_POST['comment_name']);') folgendes einfügen:

Code: Alles auswählen

$_POST['comment_text'] = str_replace("\r\n", "[break]", $_POST['comment_text']);
Und zeile 168 diesen code

Code: Alles auswählen

$_POST['comment_text'] = str_replace("\r\n", "<br />", $_POST['comment_text']);
mit diesem ersetzen

Code: Alles auswählen

$_POST['comment_text'] = str_replace("[break]", "<br />", $_POST['comment_text']);
Ich werds auch in der nächsten Version reparieren.

Pik
Beiträge: 38
Registriert: 17. Mai 2007, 23:21
Wohnort: Dresden
Kontaktdaten: Website

24. Aug 2007, 21:06

Funktioniert jetzt, danke :D

Benutzeravatar
franz007
Beiträge: 276
Registriert: 16. Aug 2006, 00:36

23. Sep 2007, 11:40

Habs in Version 1.5.1 korrigiert, download unter http://franz007.at/89-0-commentrank-kom ... addon.html

Zurück zu „Allgemeines [R3]“