Ansonsten noch ein paar Kniffe, über die ich mich als weniger versierter Redaxo-User als Inspiration gefreut hätte:
XForm
XForm lässt zwar eigentlich nicht zu, dass man rex_article mangels ID-Feld bearbeiten kann. Wenn man jedoch den Eintrag "rex_article" über die Datenbank direkt vornimmt, kann man auch XForm zum Bearbeiten von Artikeln bzw. Metadaten benutzen.
Ich habe mir daraus eine Übersicht gebastelt, welche Artikel eigentlich schon passende SEO-Titel haben / benötigen und ob das description-Feld ausgefüllt wurde:
Screenshot
Addcode / XForm
Außerdem wurde ja
in einem anderen Thread über die Möglichkeiten diskutiert, wie man XForm-Formulare über PHP erzeugen kann. Das war ebenfalls sehr hilfreich bei der Erstellung der Module "Kontaktformular", "Gutscheinbestellung" und "Anmeldung". Die werden mittels Addcode eingebunden, das Modul ruft dann nur noch die passende Funktion und den passenden Parameter auf.
Leider lässt sich eine aktuelle Addcode-Version immer noch nicht über den Installer ziehen :/
Code vom Kontaktformular:
Code: Alles auswählen
<?php function xform_kontakt() {
$Template = new rex_template(6); // HTML-E-Mail-Template mit Platzhaltern
$mailBody = file_get_contents($Template->getFile());
$xform = new rex_xform();
### Angaben zur Person ###
$xform->setValueField('radio', array('anrede1', 'Anrede', 'Frau=Frau,Herr=Herr'));
$xform->setValueField('text', array('name1', 'Vor- und Nachname'));
$xform->setValueField('text', array('phone1', 'Telefon'));
$xform->setValueField('text', array('email1', 'E-Mail'));
### Weitere Infos ###
$xform->setValueField('textarea', array('message', 'Anmerkungen'));
$xform->setValueField('select', array('how', 'Wie sind Sie auf uns aufmerksam geworden?', 'Bitte auswählen=0,Google=Google,Empfehlung=Empfehlung,Hochzeitsmesse=Hochzeitsmesse,Radiowerbung=Radiowerbung,Heilbronner Stimme=HSt,Sonstige=Sonstige'));
### Captcha / Absenden ###
$xform->setValueField('captcha', array('Bitte geben Sie diesen Code in das nachfolgende Feld ein','Der Code war ungültig. Bitte geben Sie erneut den abgebildeten Code ein.'));
$xform->setValueField('submit', array('submit_form', 'Absenden'));
// validate fields
$xform->setValidateField('empty', array('name1', 'form_validate_name'));
$xform->setValidateField('empty', array('email1', 'form_validate_email'));
// other stuff
$xform->setRedaxoVars($REX['ARTICLE_ID'], $REX['CUR_CLANG']);
$xform->setObjectparams("form_action", seo42::getFullUrl($REX['ARTICLE_ID'], '', 'kurs='.$_GET['kurs']));
if (($form = $xform->getForm()) == '') {
// form submitted
$formData = $xform->objparams['value_pool']['email'];
$mailFrom = 'xxx@xxxx.xx';
$mailSubject = 'Ihre Nachricht an die Tanzschule Wölbing';
// mail body
$subject = "Ihre Nachricht an uns";
$Mbody = '<p style="margin-bottom:15px;" >
vielen Dank für Ihre Nachricht. Wir werden uns in Kürze bei Ihnen melden. (Diese E-Mail wurde automatisch versendet) </p>
<p style="margin-bottom:15px;" >
Bis bald in der Tanzschule Wölbing!</p>
<p style="margin-bottom:15px;" >
<strong> Corina Henrich</strong><br style="line-height:100%;" />
und das Team der Tanzschule Wölbing</p>';
$anrede = 'Hallo '.$formData['name1'];
$Abody = '';
$T1 = 'Kontaktdaten';
$T1body = '<p>Telefon: '.$formData['phone1'].'<br />E-Mail: '.$formData['email1'].'<br />Empfehlung über: '.$formData['how'].'</p>';
$T2 = "Ihre Nachricht";
$T2body = $formData['message'];
// Platzhalter aus dem Template werden ersetzt durch den Mailtext
$mailBody = str_replace("###anrede###", $anrede, $mailBody);
$mailBody = str_replace("###subject###", $subject, $mailBody);
$mailBody = str_replace("###Abody###", $Abody, $mailBody);
$mailBody = str_replace("###Mbody###", $Mbody, $mailBody);
$mailBody = str_replace("###Atitle###", "", $mailBody);
$mailBody = str_replace("###T1###", $T1, $mailBody);
$mailBody = str_replace("###T1body###", $T1body, $mailBody);
$mailBody = str_replace("###T2###", $T2, $mailBody);
$mailBody = str_replace("###T2body###", $T2body, $mailBody);
$mailBody = str_replace("###anfahrt-url###", seo42::getFullUrl(23), $mailBody);
$mailBody = str_replace("###headerimg-url###", seo42::getBaseUrl().seo42::getImageManagerFile("intros_meta_ueber-uns-raeume.jpg", "hero"), $mailBody);
// init mailer
$mail = new rex_mailer();
if($formData['email1']) {
$mail->AddAddress($formData['email1'], $formData['name1']);
}
$mail->AddAddress($mailFrom, "Tanzschule Wölbing");
$mail->WordWrap = 80;
$mail->FromName = $mailFrom;
$mail->From = $mailFrom;
$mail->Sender = $mailFrom;
$mail->Subject = $mailSubject;
$mail->Body = $mailBody;
$mail->AltBody = strip_tags($mailBody);
// send mail
if ($mail->Send()) {
$msg = '<p><strong>Vielen Dank für Ihre Nachricht. Sie erhalten in wenigen Minuten eine Bestätigungs-E-Mail.</strong></p>
<p>Sollten Sie keine Bestätigungs-E-Mail erhalten, wurde die Nachricht möglicherweise nicht an uns zugestellt. Dies kann folgende Ursachen haben:</p>
<ul>
<li>Die angegebene E-Mail-Adresse war falsch:<br />'.$formData['email1'].'</li>
<li>Unsere E-Mail wurde von Ihrem Spamfilter blockert</li>
</li>Oder in den seltensten Fällen: Technische Probleme</li></ul>
<p>Sollten Sie keine Bestätigungs-E-Mail erhalten haben, bitten wir Sie, uns telefonisch zu kontaktieren oder uns persönlich vor Ort zu besuchen. Vielen Dank!</p>';
$class = 'notice success';
} else {
$msg = '<p>Vielen Dank für Ihre Nachricht. Leider gab es ein technisches Problem. Möglicherweise konnten wir Ihre Nachricht nicht entgegen nehmen. Wir wollen Sie nicht mit technischen Einzelheiten aufhalten und schlagen vor, dass Sie uns persönlich anrufen. Bitte entschuldigen Sie die Umstände!</p>';
$class = 'notice warning';
}
// show submit message
echo '<div class="' . $class . '">' . $msg . '</div>';
} else {
// show form
echo $form;
}
}
?>
RexSearch
Worüber ich hier wenig lese, ist, wie andere RexSearch benutzen. Nach dem Redaxo-Tag habe ich ja erst vollumfänglich das Prinzip hinter RexSearch verstanden und auch gleich mal versucht anzuwenden.
Wenn ich schon brav Meta-Felder wie Keywords und Description ausfülle, dann ist es ja nur konsequent, wenn RexSearch diese Felder berücksichtigt. In dem Fall habe ich das Such-Formular angepasst und mir einen Cronjob angelegt, der diese Felder dann auch regelmäßig indiziert.
Screenshot