[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Kommentarfunktion - 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/
Sven B
Beiträge: 13
Registriert: 9. Feb 2016, 10:56

Kommentarfunktion

19. Feb 2016, 08:41

Guten Morgen,

ich brauche einen denkanstoß zur Umsetzung einer Kommentarfunktion.
Ich weiß auch für Redaxo 5 ist die Community Demo in Arbeit aber mir rennt grade die Zeit davon, da es sich um einen kleinen Privaten "Reise"-Blog handelt, könnte ich erst nach der Reise auf das Addon wechseln.


Folgendens habe ich bisher realisiert.

Per yForm wurde eine Tabelle angelegt. rex_comments
id, articelid, name, text, date, email, ip, active


Die Ausgabe hab ich über ein einfaches Template erledigt.

Code: Alles auswählen

<?php
$sql = rex_sql::factory();
$sql->setTable(rex::getTablePrefix().'comments'); 
$sql->setWhere([ 'pid' => $this->getValue('article_id'), 'active' => '1']);

$sql->select();
?>


<div class="row">
<div class="col-sm-12">
<h3>Kommentare</h3>
</div><!-- /col-sm-12 -->
</div><!-- /row -->    
    
<?php

if($sql->getRows()) { 
    while($sql->hasNext()) {

        ?>
    
<div class="row">    
<div class="col-sm-1">
<div class="thumbnail">
<img class="img-responsive user-photo" src="https://ssl.gstatic.com/accounts/ui/avatar_2x.png">
</div><!-- /thumbnail -->
</div><!-- /col-sm-1 -->

<div class="col-sm-11">
<div class="panel panel-default">
<div class="panel-heading">
<strong><?php echo $sql->getValue('name'); ?></strong> - <span class="text-muted"><?php echo date("d/m/y h:i", strtotime($sql->getValue('date')));?></span>
</div>
<div class="panel-body">
<?php echo $sql->getValue('text'); ?>
</div><!-- /panel-body -->
</div><!-- /panel panel-default -->
</div><!-- /col-sm-5 -->
</div>
    <?php
        
        $sql->next(); 
    }
}

?>
 
Testweise eigetragende Artikel (direkt über die Datenbank) werden so zumindest schonmal in den richtigen Beträgen angezeigt.
Aber wie kann ich nun eine simple Eingabe für neue Kommentare anlegen / erstellen?

Klar ich könnte nun in jedem Artikel einen yForm Modul einbauen mit der Action in Datenbank rex-comments speichern, aber das wäre ja wirklich unpraktisch.

gupi
Beiträge: 286
Registriert: 20. Nov 2008, 13:49
Wohnort: Elsdorf/Rheinland

Re: Kommentarfunktion

19. Feb 2016, 12:59

Hey,
Sven B hat geschrieben:Klar ich könnte nun in jedem Artikel einen yForm Modul einbauen mit der Action in Datenbank rex-comments speichern, aber das wäre ja wirklich unpraktisch.
Was ist unpraktisch daran?
Das Modul erzeugst Du nur einmal und hängst dies in deiner artikel-slice Kette als letzten slice. Oder als vorletzten, wenn du erst im letzten slice die bisherigen Kommentare anzeigst.

Oder zielt deine Anfrage wo anders hin und ich habe dich falsch verstanden.

lg
Gunter
read the manual first

Ingo
Beiträge: 782
Registriert: 24. Jun 2010, 00:34

Re: Kommentarfunktion

19. Feb 2016, 13:39

Alternativ könnte man den Kommentarkram auch einfach ins Template setzen.

Sven B
Beiträge: 13
Registriert: 9. Feb 2016, 10:56

Re: Kommentarfunktion

20. Feb 2016, 12:05

Gibt es zu yForm eine ausführliche Dokumentation?
Also wie man es über PHP anspricht?

Sven B
Beiträge: 13
Registriert: 9. Feb 2016, 10:56

Re: Kommentarfunktion

22. Feb 2016, 15:02

Damit auch jemand anderes eine Lösung zu meinem Thema findet, hier mal mein Weg:

per yForm eine Tabelle rex_comments anlegen.
Name / Type
id integer
pid integer
active checkbox
date datestamp
name text
text textarea
ip text
email email


Folgendes als Template oder Modul anlegen

Code: Alles auswählen

<div class="row">
<div class="col-sm-12">
<h3>Kommentar schreiben</h3>
</div><!-- /col-sm-12 -->
</div><!-- /row -->    


<?php
$yform = new rex_yform();
$yform->setDebug(true);
$yform->setObjectparams('real_field_names', true);


$yform->setValueField('text', array("name","Ihr Name *"));
$yform->setValidateField('empty', array('name', 'Bitte geben Sie einen Namen ein!'));

$yform->setValueField('email', array("email","Ihre Email *"));
$yform->setValidateField('email', array('email', 'Keine gültige Email-Addresse!'));
$yform->setValidateField('empty', array('email', 'Es muss eine Email-Adresse angebenen werden!'));
    
$yform->setValueField('textarea', array("text","Ihre Nachricht *"));
$yform->setValidateField('empty', array('text', 'Bitte geben Sie einen Nachricht ein!'));

$yform->setValueField('ip', array("ip"));
$yform->setValueField('hidden', array("pid", REX_ARTICLE_ID));
 



$yform->setObjectparams('form_action', rex_getUrl(REX_ARTICLE_ID,REX_CLANG_ID));
$yform->setObjectparams("main_table","rex_comments");
$yform->setActionField("db", array("rex_comments"));
echo $yform->getForm();





/** Kommentare anzeigen **/
$pid = $this->getValue('article_id');

$sql = rex_sql::factory();
$sql->setTable(rex::getTablePrefix().'comments'); // rex_foo_bar
#$sql->setWhere(['id'=>'2']);
$sql->setWhere([ 'pid' => $pid, 'active' => '1']);

$sql->select();
?>


<div class="row">
<div class="col-sm-12">
<h3>Kommentare</h3>
</div><!-- /col-sm-12 -->
</div><!-- /row -->    
    
<?php
$grav_url  ="";
$default = ""; 
$size = "48";

if($sql->getRows()) { // nicht 0!
    while($sql->hasNext()) {
        

$grav_url = "http://www.gravatar.com/avatar/" . md5( strtolower( trim( $sql->getValue('email') ) ) ) . "?d=" . urlencode( $default ) . "&s=" . $size;        
        ?>
    
<div class="row">    
<div class="col-sm-1">
<div class="thumbnail">
<img class="img-responsive user-photo" src="<?php echo $grav_url; ?>">
</div><!-- /thumbnail -->
</div><!-- /col-sm-1 -->

<div class="col-sm-11">
<div class="panel panel-default">
<div class="panel-heading">
<strong><?php echo $sql->getValue('name'); ?></strong> - <span class="text-muted"><?php echo date("d/m/y h:i", strtotime($sql->getValue('date')));?></span>
</div>
<div class="panel-body">
<?php echo $sql->getValue('text'); ?>
</div><!-- /panel-body -->
</div><!-- /panel panel-default -->
</div><!-- /col-sm-5 -->
</div>
    <?php
        
        $sql->next(); // nächster Eintrag laden. 
    }
}

?>
   

Benutzeravatar
Jan.Kristinus
Admin
Beiträge: 2166
Registriert: 24. Aug 2004, 22:11
Wohnort: Frankfurt
Kontaktdaten: ICQ Website

Re: Kommentarfunktion

23. Feb 2016, 16:50

Sven B hat geschrieben:Gibt es zu yForm eine ausführliche Dokumentation?
Also wie man es über PHP anspricht?
Nein .. freue mich aber über MIthilfe.

Hier wäre ein guter Start:

https://github.com/yakamara/redaxo_yform/wiki

lg
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/

Zurück zu „Allgemeines [R5]“