Ergebnis 1 bis 16 von 16

Thema: [gelöst] Kommentarformular ändern: <label> vor <input>

  1. #1
    Contao-Nutzer Avatar von Manuel
    Registriert seit
    25.06.2009.
    Ort
    Berlin
    Beiträge
    31

    Standard [gelöst] Kommentarformular ändern: <label> vor <input>

    Hallo allerseits,
    ich würde gerne das Kommentarformular so ändern, dass es in etwa so aussieht wie in der Grafik im Anhang. Am wichtigsten ist mir dabei, dass die Beschriftungen vor den Eingabefeldern stehen und dass das Kommentarfeld auch eine Beschriftung bekommt.

    Ich nehme an, dass die Änderungen in der Datei ce_comments.tpl vorgenommen werden müssen, und zwar in dem Bereich:
    PHP-Code:
    <?php foreach ($this->fields as $objWidget): ?>
    <div class="widget">
      <?php echo $objWidget->generateWithError(); ?> <?php echo ($objWidget instanceof FormCaptcha) ? $objWidget->generateQuestion() : $objWidget->generateLabel(); ?><?php if ($objWidget->required): ?><span class="mandatory">*</span><?php endif; ?> 
    </div>
    <?php endforeach; ?>
    Oder/und muss ich dafür Änderungen in der Datei ContentComments.php vornehmen?

    Kurz: was muss ich tun, um das gewünschte Ergebnis zu erreichen? Hat schon jemand Erfahrungen damit gesammelt?

    Viele Grüße
    Manuel
    Angehängte Grafiken Angehängte Grafiken
    Geändert von Manuel (28.09.2009 um 12:26 Uhr)

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Manuel,

    die Frage hatte ich auch schon mal gestellt. https://community.contao.org/de/showthread.php?t=589

    Ich glaube zum label vor den inputs kannst du hier im Forum so einiges finden. Wie ich eine Beschriftung fürs Kommentarfeld bekomme habe ich auch noch nicht rausbekommen.

    Andreas

  3. #3
    Contao-Nutzer Avatar von Manuel
    Registriert seit
    25.06.2009.
    Ort
    Berlin
    Beiträge
    31

    Standard

    Die Beschriftung für das Kommentarfeld habe ich jetzt so vorgenommen, wie du sie in dem Thread beschrieben hast - dass das nicht updatesicher ist, spielt momentan bei mir keine Rolle. Also schonmal vielen Dank für den Hinweis!
    Ich habe schon viel zu diesem Thema gesucht, aber eine konkrete Lösung wie ich bei dem News-Kommentarformular die Labels vor die Inputs bekomme, konnte ich noch nicht finden.

    Ein paar Überlegungen:

    In der Datei mod_newsreader.tpl ist offensichtlich folgender Teil für die Widgets zuständig:
    PHP-Code:
     <?php echo $objWidget->generateWithError(); ?>
    Ich bin nicht sehr fit in PHP und kann deshalb leider nur raten. Ich gehe davon aus, dass dieses $objWidget aus ModuleNewsReader.php (Zeile 269) kommt:
    PHP-Code:
    $objWidget = new $strClass($this->prepareForWidget($arrField$arrField['name'], $arrField['value'])); 
    Könnte ich da irgendwas vertauschen, damit die Labels vor den Inputs stehen? Die Reihenfolge der Widgets kann ich in der Datei ja auch ändern (ab Zeile 206)... Ich weiß einfach nicht mehr weiter.

  4. #4
    Contao-Fan Avatar von Stephan
    Registriert seit
    19.06.2009.
    Ort
    Berlin
    Beiträge
    349

    Standard

    Hallo Manuel,

    in der mod_newsreader.tpl bist du auf jeden Fall richtig. Hier werden deine DIVs mit den Inputs und Labels folgendermaßen zusammengebastelt:
    PHP-Code:
    <?php foreach ($this->fields as $objWidget): ?>
    <div class="widget">
      <?php echo $objWidget->generateWithError(); ?> <?php echo ($objWidget instanceof FormCaptcha) ? $objWidget->generateQuestion() : $objWidget->generateLabel(); ?><?php if ($objWidget->required): ?><span class="mandatory">*</span><?php endif; ?> 
    </div>
    <?php endforeach; ?>
    Nun hast du einmal das Input-Feld, das mittels $objWidget->generateWithError() erstellt wird und dann $objWidget->generateLabel() für das Label.

    Deinem Wunsch entsprechend – erst Label dann Input – müsste das Ganze demnach so aussehen:
    PHP-Code:
    <?php foreach ($this->fields as $objWidget): ?>
    <div class="widget">
      <?php echo ($objWidget instanceof FormCaptcha) ? $objWidget->generateQuestion() : $objWidget->generateLabel(); ?><?php if ($objWidget->required): ?><span class="mandatory">*</span><?php endif; ?><?php echo $objWidget->generateWithError(); ?>
    </div>
    <?php endforeach; ?>
    Der Rest (Abstände, Breite, Höhe, etc.) dürfte dann durch CSS zu lösen sein.

  5. #5
    Contao-Nutzer Avatar von Manuel
    Registriert seit
    25.06.2009.
    Ort
    Berlin
    Beiträge
    31

    Standard

    Hallo Stephan,
    vielen Dank, es funktioniert!

    Eine Frage hätte ich noch: Könnte man die Sicherheitsabfrage folgendermaßen darstellen?:

    Gegen Spam*: |___| = die Summe aus x+y

    Man würde praktisch die Feldbeschreibung aufteilen müssen. Die Sicherheitsfragen an sich lassen sich ja in der Datei default.php (system/modules/frontend/languages/de) ändern. Das <label> wäre dann "Gegen Spam*:", daraufhin das <input> und danach die Rechenaufgabe in ein <span> oder so. Wenn mir jemand sagen könnte, wie/ob das geht, wäre ich erstmal wunschlos glücklich

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Vielleicht hilft dir dieser Artikel weiter
    Sicherheitsfrage (form_captcha) barrierefreier machen

  7. #7
    Contao-Nutzer Avatar von Manuel
    Registriert seit
    25.06.2009.
    Ort
    Berlin
    Beiträge
    31

    Standard

    Hallo Andreas,
    ich hatte mir das schon angeschaut. Bin mir gerade noch nicht ganz sicher ob/wie ich das beschriebene Verfahren für mich einsetzten kann.

    Letztendlich habe ich das Hauptziel erreicht, das mit dem Feld für die Sicherheitsfrage wäre jetzt noch ein "Nice to have", aber nicht notwendig.

    Viele Grüße und Danke für eure Hilfe!

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Manuel Beitrag anzeigen
    Bin mir gerade noch nicht ganz sicher ob/wie ich das beschriebene Verfahren für mich einsetzten kann.
    Label, $this->generateWithError() und $this->generateQuestion() sind ja getrennt, du brauchst sie also nur nach deinen Wünschen anzuordnen. Was ich aber nicht verstehe ist, dass Nina schreibt "Normalerweise steht die Frage erst nach dem Eingabefeld", und das wäre doch das, was du möchtest. Hat sich das Standardverhalten denn geändert?

    Andreas

  9. #9
    Contao-Nutzer Avatar von Manuel
    Registriert seit
    25.06.2009.
    Ort
    Berlin
    Beiträge
    31

    Standard

    Die Anleitung bezieht sich auf normale Formulare, nicht auf das Kommentarformular an dem ich herumschraube. Wenn man beim Kommentarformular im Template die <labels> vor die <input>s packt, gilt das für alle Felder. Ob man das Sicherheitsfrage-Feld separat editieren kann weiß ich nicht.
    Momentan sieht mein Template so aus:
    PHP-Code:
    <form action="<?php echo $this->action?>" method="post">
    <div class="formbody">
    <h3>Kommentar verfassen</h3>
    <input type="hidden" name="FORM_SUBMIT" value="tl_news_comment" />

    <?php foreach ($this->fields as $objWidget): ?>
    <div class="widget">
      <?php echo ($objWidget instanceof FormCaptcha) ? $objWidget->generateQuestion() : 
    $objWidget->generateLabel(); ?>
    <?php 
    echo $objWidget->generate();
    ?>
    </div>
    <?php endforeach; ?> 

    <div class="submit_container">
      <input type="submit" class="submit" value="<?php echo $this->submit?>" />
    </div>
    </div>
    </form>
    So wie ich das verstehe (und dass kann durchaus falsch sein ), werden innerhalb des Widges die Feldbezeichnungen (also die Sicherheitsfrage und die <labels>) ausgegeben, und danach die <inputs> (die Error-Messages habe ich vorrübergehend "deaktivert"). Das ist ja schonmal schön so, aber ob man die Sicherheitsfrage plus dazugehörendes <input> getrennt bearbeiten kann, weiß ich wie gesagt nicht. Auf die meisten Experimente folgte ein leerer, weißer Bildschirm

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Information

    Hallo Manuel,

    ich hab mir das jetzt nochmal genauer angesehen. Ich hab auch eine Lösung, möchte aber vorweg noch was sagen. Leider wird die Formulargenerierung an unterschiedlichen Stellen vorgenommen, das bringt einen natürlich irgendwie sehr durcheinander. Das Formular unter den News wird in mod_newsreader.tpl aufgebaut, danach musst du noch ce_comments.tpl genauso abändern, wenn du auch in Inhaltselementen eine Kommentarfunktion benutzen willst. Leider greifen beide Templates nicht auf form_widget.tpl und form_captcha.tpl zu, welche man für seine anderen Formulare dann nochmal ändern muss.

    Nun zur Lösung, deine updateUNsichere Änderung kannst du damit wieder rückgängig machen. Ich habe zusätzlich noch ein DIV Element um die LABELs gelegt zur einfacheren Formatierung. Das FORM hat noch eine Klasse für YAML. Die Mandatory-Sternchen habe ich mit in die LABELs gepackt. Die Question habe ich auch direkt in das LABEL gepackt. Kannst du aber ganz leicht anders plazieren.

    mod_newsreader.tpl nur das Formular:
    PHP-Code:
    <form id="add_a_comment" action="<?php echo $this->action?>" method="post" class="yform columnar">
    <div class="formbody">
    <input type="hidden" name="FORM_SUBMIT" value="tl_news_comment" />

    <?php foreach ($this->fields as $objWidget): ?>

    <?php if ($objWidget instanceof FormCaptcha): ?>
    <div class="widget captcha">
      <div class="label_wrap">
        <label for="ctrl_captcha">{{iflng::en}}Security question{{iflng}}{{iflng::de}}Sicherheitsfrage{{iflng}}<sup class="mandatory">*</sup>&nbsp;<strong><?php echo $objWidget->generateQuestion(); ?></strong>&nbsp;</label>
      </div>
      <?php echo $objWidget->generateWithError(); ?>
    </div>

    <?php elseif ($objWidget instanceof FormTextArea): ?>

    <div class="widget">
      <div class="label_wrap">
        <label for="ctrl_comment">{{iflng::en}}Comment{{iflng}}{{iflng::de}}Kommentar{{iflng}}<sup class="mandatory">*</sup></label>
      </div>
      <?php echo $objWidget->generateWithError(); ?>
    </div>

    <?php else: ?>

    <div class="widget">
      <div class="label_wrap"><?php echo str_replace('</label>'''$objWidget->generateLabel()); ?><?php if ($objWidget->required): ?><sup class="mandatory">*</sup><?php endif; ?></label>
      </div>
      <?php echo $objWidget->generateWithError(); ?>
    </div>
    <?php endif; ?>

    <?php endforeach; ?>
    <div class="submit_container">
      <input type="submit" class="submit" value="<?php echo $this->submit?>" />
    </div>
    </div>
    </form>
    Der Vollständigkeit halber noch meine dazu passenden form_widget.tpl und form_captcha.tpl
    PHP-Code:
    // form_widget.tpl
    <div class="widget">
      <div class="label_wrap">
      <?php echo str_replace('</label>'''$this->generateLabel()); ?><?php if (strpos($this->class'mandatory') !== false): ?><sup class="mandatory">*</sup><?php endif; ?></label>
      </div>
      <?php echo $this->generateWithError(); ?>
    </div>
    PHP-Code:
    // form_captcha.tpl
    <div class="widget captcha">
      <div class="label_wrap">
      <?php echo str_replace('</label>'''$this->generateLabel()); ?><sup class="mandatory">*</sup>&nbsp;<strong><?php echo $this->generateQuestion(); ?></strong>&nbsp;</label>
      </div>
      <?php echo $this->generateWithError(); ?>
    </div>
    Andreas
    Angehängte Grafiken Angehängte Grafiken

  11. #11
    Contao-Nutzer Avatar von Manuel
    Registriert seit
    25.06.2009.
    Ort
    Berlin
    Beiträge
    31

    Standard

    Ein großes Danke für deine Hilfe, Andreas!

    So funktioniert's Der Fall wäre nun gelöst.
    Viele Grüße
    Manuel

  12. #12
    Contao-Fan
    Registriert seit
    10.11.2010.
    Beiträge
    480

    Standard

    Hallo,

    ich grabe mal diesen alten Eintrag wieder aus, da mein Problem sich hier evt. einordnen lässt.

    Bei den Kommentaren kommen immer erst die Kommentare, dann das Eingabeformular. Lässt sich dies auch umdrehen, so dass man nicht immer nach unten scrollen muss, um einen Kommentar zu hinterlassen?

    Danke für Eure Antworten!

  13. #13
    Buchautor 'Websites erstellen mit Contao' Avatar von pmmueller
    Registriert seit
    19.06.2009.
    Ort
    Groningen (NL)
    Beiträge
    1.523

    Standard

    EDIT: Oops. Ich hatte nicht genau gelesen. Ich dachte, du meintest "erst die Formularfelder und dann die Beschriftungen". Das kann man wie unten beschrieben umdrehen in "erst Label, dann Eingabefeld":

    Im Template mod_comment_form.html5 wirst du fündig.

    Ergebnis siehe z. B. im Blog auf http://pmueller.de/blog/vortrag-cont...dtag-2013.html ganz unten auf der Seite.

    ===

    Nachtrag:
    Die Reihenfolge von Kommentaren und Formular müsstest du im Template mod_newsreader.html5 ändern können.
    Geändert von pmmueller (11.09.2013 um 17:55 Uhr)

  14. #14
    Contao-Fan
    Registriert seit
    10.11.2010.
    Beiträge
    480

    Standard

    Hi pmmueller,

    leider scheint die mod_newsreader.html5 nicht die korrekte Datei zu sein. Hast Du (oder jemand anders) noch eine Idee?

    Grüße,

    Dublay

  15. #15
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.706
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Kommt natürlich drauf an, wo was kommentiert werden soll, Inhaltselemente, News, FAQs, Events usw.

    Die Zeile, die das Formular einbindet ist
    PHP-Code:
    <?php include $this->getTemplate('mod_comment_form''html5'); ?>
    Suche in allen *.html5 Dateien nach z.B. mod_comment_form

    Bei mir sind diese Templates im Suchergebnis
    Code:
    contao-3.1.2\system\modules\calendar\templates\modules\mod_event.html5
    contao-3.1.2\system\modules\comments\templates\elements\ce_comments.html5
    contao-3.1.2\system\modules\faq\templates\modules\mod_faqreader.html5
    contao-3.1.2\system\modules\news\templates\modules\mod_newsreader.html5
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  16. #16
    Contao-Fan
    Registriert seit
    10.11.2010.
    Beiträge
    480

    Standard

    Vielen Dank - jetzt hab ichs!

    Grüße,

    Dublay

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Ähnliche Themen

  1. Backend-Label ändern !?
    Von RoGer im Forum Sonstiges zu Contao
    Antworten: 8
    Letzter Beitrag: 12.04.2017, 17:18
  2. Antworten: 4
    Letzter Beitrag: 20.01.2011, 11:24
  3. Label Passwort im Modul Registrierung ändern
    Von eddifuh im Forum Sonstiges zu Contao
    Antworten: 1
    Letzter Beitrag: 03.12.2010, 12:40
  4. [i18nl10n] Wie URL ändern? [gelöst]
    Von HaraldC im Forum Mehrsprachigkeit
    Antworten: 5
    Letzter Beitrag: 02.11.2010, 19:03
  5. [Gelöst] cufon Schriftfarbe ändern
    Von mcxico im Forum Sonstige Erweiterungen
    Antworten: 1
    Letzter Beitrag: 29.07.2010, 15:16

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •