-
Merkzettel
Hallo Community,
gibt es jemanden, der eine Merkzettel für Contao im Einsatz hat:
Grundsätzliche Beschreibung der Idee:
1. Im Layout wird ein Button eingebunden, welcher beim Anklicken die Aktuelle Seite auf eine Merkliste setzt
2. Entweder ebenfalls als Modul oder als eigenständige Seite, wird eine Liste der gemerkten Seiten angeboten. Die Liste soll klickbare Verweise enthalten.
3. In der Liste soll ebenfalls die Möglichkeit des Löschens bestehen.
Ich habe mich an das ganze Thema gewagt und etwas mit dem EFG umgesetzt:
Wenn gewünscht, kann ich das gerne hier Posten.
Meine Probleme daran sind jedoch folgende:
1. Bekomm ich es nicht hin, dass jede Seite nur einmal Pro nutzer in der DB ist. Wenn er viermal draufklickt ist es viermal enthalten.
2. Kann ich den Hinweis, dass die Seite auf die Merkliste gesetzt wurde, nur mit einer Weiterleitungsseite anzeigen. Dann ist der Nutzer aber nicht mehr auf der Seite.
3. Weis ich nicht, wie die Performance des EFG Modul bei z.B. 1.000 verschiedenen Favoriten ist.
-
Problem 1 ist vorerst gelöst!
Nr. 2 und 3. nicht aber da 1. gelöst wurde, sollte nr. 2 nicht mehr so oft auftreten.
Für alle die es interessiert!
So habe ich es gelöst!
1. Formular erstellt
Code:
Versteckes Feld: title - Standartwert: {{env::page_name}}
Versteckes Feld: link - Standartwert: {{env::request}}
Versteckes Feld: Favoriten - leer
Absendefeld - Bildschaltfläche
Weiterleitzungziel: Merkliste-Weiterleitung
2. Modul
Code:
Merkliste Button - Formular - Formular auswählen
Merkliste Anzeige - Auflistung Formular Daten
Felder "Favoriten"
Zugriffschutz:
Anzeige: Besitzer
Bearbeitung: keine Berechtigung
Löschen: Besitzer
CSV Export: keine Berechtigung
ListenTemplate: list_fd_table_default
3. EFG Hook zum zusammenbau des Links:
Code:
Eine Datei mit den Namen EFGCallbacks.php erstellen
Nachfolgenden Inhalt übernehmen
In system/modules/efg ablegen
In DCA File folgendes ergänzen:
$GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01'] = array('EfgCallbacks', 'favoriten');
PHP-Code:
<?php
// $arrSubmitted enthalt die POST-Werte
// $arrFiles ggf. Datei-Uploads
// $intOldId die ID des bearbeiteten Datensatzes, im Falle von Frontend-Bearbeitung
// $arrForm enthaelt die 'Formular-Konfiguration'
//Registrieren des Callbacks in system/config/dcaconfig.php - $GLOBALS['TL_HOOKS']['processEfgFormData']['callback_01'] = array('EfgCallbacks', 'favoriten');
class EfgCallbacks extends Backend
{
public function favoriten($arrSubmitted, $arrFiles, $intOldId, &$arrForm)
{
// Einschraenkung auf das Formular if ($arrSubmitted['FORM_SUBMIT'] == 'auto_form_44')
{
if ($arrSubmitted['FORM_SUBMIT'] == 'auto_form_44')
// Textzusammenfassen
$arrSubmitted['Favoriten'] = '<a href="'.$arrSubmitted['link'].'">'.$arrSubmitted['title'].'</a>';
}
return $arrSubmitted;
}
}
?>
4. 2 Seiten erstellen:
Code:
1. Seite: Merkliste - Hier das Listen Modul hinterlegen
Inhaltselement Typ Text erstellen - "Der Favorit wurden Ihrem Merkzettel hinzugefügt" - CSS-ID: #mb_popup
2. Seite: Merkliste
WeiterleitungSeitentyp Weiterleitung Permanent: Adresse: index.php/merkzettel.html#popup (Diese Seite im Formular als Weiterleitungsziel auswählen)
5. PopUp erzeugen
Im Seitenlayout folgenden JS Code hinterlegen
PHP-Code:
<script type="text/javascript">
<!--//--><![CDATA[//><!--
window.addEvent('domready', function() {
var u = new URI(document.URL);
if (u == 'http://euredomain/tl/index.php/merkzettel.html#popup') {
Mediabox.open('#mb_popup', 'Favoriten', '180 40');
}
});
//--><!]]>
</script>
6. In Eurer CSS-Datei folgendes ergänzen.
Code:
#mb_popup {display:none;}
7. Jetzt müsst ihr nur noch euren Merkzettel Button ergänzen und schon sollte alles Funktionieren.
-
Hallo Acta,
für ein kommendes Projekt brauche ich eine ähnliche Funktion.
Werde mir deinen Ansatz demnächst genauer ansehen und mich wieder melden.
-
Gerne ... wenn jemand anderes noch ne bessere Idee hat bin ich dafür auch offen!