Ergebnis 1 bis 22 von 22

Thema: Katalog Merkliste

  1. #1
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard Katalog Merkliste

    Hallo ich bin neu bei Typolight (komme von Typo3 und Drupal). Bin aber bereits sehr angetan von der Transparenz und klaren Struktur sowie Geschwindigkeit in der man mit Typolight Sachen fertig bekommt!

    Ich ertelle gerade eine Tourismusseite bei der es Reiseangebote gibt. Dafür habe ich den Catalog benutzt. Nun möchte ich gerne das der Nutzer sich Katalogeinträge "merken" kann. Also das diese "vorerst" in einem Cookie gespeichert werden und anschließend über eine Katalog-Liste wieder ausgegeben werden können.

    Idealerweise will ich das ganze in einem Modul verpacken und wenn's klappt auch in ein Community-Modul verwandeln. Dazu muss ich aber erstmal rausfinden, wie ich die Bedingung einer Katalogliste dynamisch abändern kann. Wäre das theoretisch mit insert-tags möglich? Wenn ja, wie mache ich ein eigenes Insert-tag? Falls es anders möglich ist, dann wäre ich über einen Hinweis in die richtige Richtung sehr froh.

    Das inserttag Modul möchte ich aus Sicherheitsgründen nicht verwenden.

    Mit freundlichen Grüßen,

    der On

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo der_On,
    das klingt nach einem spannenden Projekt was du vorhast.
    Ich kann da nicht wirklich viel zu sagen... aber schau dir mal den neuen Catalog an.
    Dort kann man als Entwickler viel besser seine eigenen Erweiterungen zum Catalog einbringen. Und der selber kann natürlich auch schon wieder eine ganze Menge mehr ;-)

    http://code.google.com/p/typolight-catalog/

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  3. #3
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    Danke MacKP,

    wie stabil ist die Alpha? Ich kann mir hier leider kein instabiles Release leisten, da die Zeit drängt und eventuell auftretende Fehler viel Ärger bedeuten könnten.

  4. #4
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Dann rate ich davon ab. Aus reiner Vorsicht.
    Im FE Editing gibt es noch einige glitches.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  5. #5
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard Mehr oder weniger geschafft

    Hallo mal wieder.

    Ich habe es nun geschafft ein Merklistenmodul für den Katalog zu erstellen. Allerdings noch nicht 100% so wie ich es gern hätte. Das Modul besteht aus einer statischen Klasse welche z.B. den "merken" button generiert etc. und einem auf der ModuleCatalogList aufbauenden ModuleWatchlist Klasse. Für jeden Katalog wird je ein Cookie angelegt, in welchem die IDs der gemerkten Katalogeinträge gespeichert werden.

    Es gibt die Möglichkeit einen Javascript-basierten "merken" button zu erzeugen oder einen Formular-basierten. Beim Formularbasierten habe ich momentan das Problem, dass ich die vom Formular abgeschickten Daten derzeit direkt im Template, also zur Ausgabe, verarbeite. Würde das aber gern vor der Ausgabe machen. Hab leider dafür noch keinen vernünftigen Hook gefunden.

    Vielleicht kann mir hier ja jemand helfen.

    Hier noch ein wenig Pseudocode der verdeutlich, wie es in meinem Katalogeintrag-Ausgabe-Template aussieht:

    Code:
    <?php 
    /* prüfen, ob ein merken-button geklickt wurde und wenn ja, 
    dann Eintrag merken. Damit Ansicht aktualisiert wird muss 
    Seite neu geladen werden.
    */
    
    if(CatalogWatchlist::evalRequest()) $this->reload(); 
    ?>
    
    Ausgabe
    
    <?php
    /*merken-button erzeugen
    CatalogWatchlist->getAddForm($entryID,$cat_tablename,$button_title,$button_class);
    */
    
    echo CatalogWatchlist::getAddForm($entry['id'],$entry['tablename'],'Reise merken','last');
    ?>

    Eigentlich hatte ich ja vor das Modul dann als community-extension einzubringen, aber da ja nun die neue Version des Katalogs vor der Tür steht, macht das vermutlich keinen Sinn mehr, da meine Extension damit sicherlich nicht mehr kompatibel wäre.

  6. #6
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von der_On Beitrag anzeigen
    Eigentlich hatte ich ja vor das Modul dann als community-extension einzubringen, aber da ja nun die neue Version des Katalogs vor der Tür steht, macht das vermutlich keinen Sinn mehr, da meine Extension damit sicherlich nicht mehr kompatibel wäre.
    Wenn du es fertig hast, koennte man auch ueberlegen es in den upstream vom Katalog aufzunehmen. Sofern Interesse deinerseits besteht.
    Wir sind Patches von Anderen gegenyber aufgeschlossen.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  7. #7
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    @xtra: Erst einmal ein gesundes Neues. Und ja, ihr dürft sehr gern das Modul als Patch von mir bekommen. Ich sage mal es ist zu 90% fertig. Wie gesagt fehlt mir noch der Hook für das Auswerten von POST-Variablen.

  8. #8
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard Hier wären wir

    Naja hier nun mal mein modul in einer zip.

    Es ist noch nicht 100% fertig, aber ich setzte es so erstmal ein.
    Die Benutzung ist relativ einfach:

    Am Anfang des Ausgabetemplates muss diese Zeile:
    Code:
    if(CatalogWatchlist::evalRequest()) { 
        $this->reload(); 
    }
    CatalogWatchlist::evalRequest(); prüft ob mittels POST oder GET ein Katalogeintrag auf die Merkliste gesetzt wurde und setzt anschließend das Cookie. Anschließend sollte $this->reload(); aufgerufen werden, damit die eventuelle Darstellung der Merkliste aktualisiert wird.

    Der Merklistenlink wird wie folgt erstellt:

    Code:
    echo CatalogWatchlist::getAddForm($entry['id'],$entry['tablename'],'Eintrag merken','css-klasse');
    CatalogWatchlist::getAddForm($id,$tablename,$label ,$class)

    $id = ID des Katalogeintrages
    $tablename = Name der Tabelle des Katalogs, in welchem sich der Eintrag befindet. Die Merkliste erzeugt für jeden Katalog ein eigenes Cookie.
    $label = Beschriftung des merken Links/Buttons
    $class = css-Klasse die dem Link/Button vergeben wird. (optional)

    Im Backend ist nun ein neues Frontend-Modul "Katalog-Merkliste" enthalten, welches die gemerkten Reisen ausgiebt. Das Modul baut auf der normalen Katalogliste auf und ist in der Bedienung gleich.

    Ich bin Verbesserungen gegenüber sehr aufgeschlossen. Insbesondere würde ich gerne vermeiden "evalRequest()" im Template aufrufen zu müssen. Stattdessen wäre es besser wenn diese Funktion noch vor der Template-Ausgabe ausgeführt werden könnte.
    Angehängte Dateien Angehängte Dateien

  9. #9
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Ort
    Oberbayern
    Beiträge
    129

    Standard

    Hallo,

    ich habe diesen älteren Thread gefunden und wollte mich erkundigen, ob an der Erweiterung weiter gemacht wurde (kann es nicht in der Erweiterungsliste finden) oder ob es schon im Katalog aufgenommen ist.

    Gruß
    Thomas

  10. #10
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    Zitat Zitat von tubu Beitrag anzeigen
    Hallo,

    ich habe diesen älteren Thread gefunden und wollte mich erkundigen, ob an der Erweiterung weiter gemacht wurde (kann es nicht in der Erweiterungsliste finden) oder ob es schon im Katalog aufgenommen ist.

    Gruß
    Thomas
    Ich habe das Modul nie ins Repo aufgenommen, vorallem da von den Catalog-Entwicklern selbst ebenfalls ein ähnliches Modul entwickelt wird. Dieses war für meine Zwecke allerdings nicht brauchbar und deshalb habe ich mein eigenes noch ein wenig weiter entwickelt, wenn auch nicht sehr. Ich habe es mit angehänt. Es muss unter /system/modules/catalog_watchlist/

    Die Benutzung ist im Prinzip die gleiche geblieben, also einfach ins Template einbauen und für die Ausgabe die Katalog-Merkliste verwenden.
    Angehängte Dateien Angehängte Dateien

  11. #11
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Ort
    Oberbayern
    Beiträge
    129

    Standard

    Guten Morgen,

    vielen Dank für die aktuelle Version. Ich werde es heute Abend mal einspielen und mir anschauen.

    Gruß
    Thomas

  12. #12
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Hallo der_On,

    ich wollte Deine Erweiterung mal eben testen, aber brauche bei dem Template Deine Hilfe, oder hast du ein Beispieltemplate, wie und an welcher Stelle genau das eingebaut werden muss? In welches Template muss das überhaupt?

    Danke
    thepixture

  13. #13
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    Zitat Zitat von thepixture Beitrag anzeigen
    Hallo der_On,

    ich wollte Deine Erweiterung mal eben testen, aber brauche bei dem Template Deine Hilfe, oder hast du ein Beispieltemplate, wie und an welcher Stelle genau das eingebaut werden muss? In welches Template muss das überhaupt?

    Danke
    thepixture
    Hier mal ein Beispielcode. Der muss ins Katalogeintrag-template.
    PHP-Code:
    if(canAddToWatchlist($entry['id'])) {
      print 
    CatalogWatchlist::getAddForm($entry['id'],'[catalog-tabelle]',array('title'=>'auf die Merkliste setzen','class'=>'merken'));
    } else print 
    CatalogWatchlist::getRemoveForm($entry['id'],'[catalog-tabelle]',array('title'=>'von der Merkliste entfernen','class'=>'merken entfernen')); 
    canAddToWatchlist() ist hier eine fiktive funktion, welche testet ob der Eintrag nicht schon auf der merkliste ist. [catalog-tabelle] ist ein platzhalter für die tabelle des Katalogs, auf den sich die merkliste bezieht.

  14. #14
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Was ist bei dir das Katalogeintrag-Template?

    Könntest Du bitte eine kleine Anleitung schreiben, ich kapiers nicht

    Aktuell hab ich eine Merkliste nach dem Schema erstellt http://de.contaowiki.org/Catalog_Merkzettel_erstellen. Baut deine Erweiterung darauf auf?

  15. #15
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    Ich versuche mal ne Kurzanleitung zu schreiben:

    Also meine Merklistenerweiterung hat erstmal nix mit der von dir verlinkten zu tun.
    Meine Erweiterung bietet neue Frontendmodule: Katalog-Merkliste und Katalog-Merkliste-Leser

    Katalog-Merkliste: erzeugt eine "Katalog-Liste" allerdings nur mit einträgen aus der Merkliste
    Katalog-Merkliste-Leser: ist das gleiche wie "Katalog-Leser" nur eben für die Merklisteneinträge.

    Nun brauchst du als erstes ein "Katalog-Leser" Modul, dessen template du anpasst und dort mittels folgendem Code einen Button einfügst, mit dem man den Eintrag zur Merkliste hinzufügen kann:

    PHP-Code:
    if(canAddToWatchlist($entry['id'])) {
      print 
    CatalogWatchlist::getAddForm($entry['id'],'[catalog-tabelle]',array('title'=>'auf die Merkliste setzen','class'=>'merken'));
    } else print 
    CatalogWatchlist::getRemoveForm($entry['id'],'[catalog-tabelle]',array('title'=>'von der Merkliste entfernen','class'=>'merken entfernen')); 
    Wie bereits geschrieben ist "canAddToWatchlist" eine eigene Funktion und sieht bei mir etwa so aus:

    PHP-Code:
    function canAddToWatchlist($id null)
    {
        if(
    $id!=null) {
            if(
    in_array(intval($id),CatalogWatchlist::getEntries('[catalog-tabelle]'),false)) return false; else return true;
        } else return 
    false;

    Hoffe das hilft dir weiter. Du brauchst auf jeden Fall PHP-Kenntnisse um diese Erweiterung zu benutzen. Aber ich empfehle PHP-Kenntnisse Prinzipiell für Contao.

  16. #16
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Danke erstmal für deine Mühe.
    Meine PHP-Kenntnisse reichen zumindest soweit, das mich mich in den Code reinfitzen kann

    Ich hab den Button jetzt schonmal in den Katalog-Leser reinbekommen.
    Es fehlte zwar noch der Text für den Button, aber das hab ich auch hinbekommen.
    [catalog-tabelle] hab ich auch mit dem Tabellennamen meines Kataloges ausgetauscht.
    Mein Katalog-Leser-Template sieht jetzt so aus:
    PHP-Code:
    <?php if (count($this->entries)): ?>

    <?php function canAddToWatchlist($id null) { ?>
    <?php 
    if($id!=null) { ?>
    <?php     
    if(in_array(intval($id),CatalogWatchlist::getEntries('[produkte]'),false)) return false; else return true?>
    <?php 
    } else return false; } ?>

    <div class="layout_full">

    <?php foreach ($this->entries as $entry): ?>
    <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''?> <?php echo $entry['data']['produkt_kategorie']['ref'][0]['alias']; ?>">
    <?php foreach ($entry['data'] as $field=>$data): ?>
    <?php 
    if (strlen($data['raw']) && !in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <?php 
    if ($data['value'] != null): ?>
    <!-- Klasse clearfix hinzugefügt -->
    <div class="field <?php echo $field?> clearfix">
        <div class="label"><?php echo $data['label']; ?></div>
        <div class="value"><?php echo $data['value']; ?></div>
    </div>
    <?php endif; ?>
    <?php 
    endif; ?>
    <?php 
    endforeach; ?>
    </div>
    <?php if(canAddToWatchlist($entry['id'])) { ?>
    <?php   
    print CatalogWatchlist::getAddForm($entry['id'],'[produkte]',array('text'=>'auf die Merkliste setzen','title'=>'auf die Merkliste setzen','class'=>'merken')); ?>
    <?php 
    } else print CatalogWatchlist::getRemoveForm($entry['id'],'[produkte]',array('text'=>'von der Merkliste entfernen','title'=>'von der Merkliste entfernen','class'=>'merken entfernen')); ?>  
    <?php endforeach; ?>
    </div>

    <?php else: ?>
    <p class="info">Invalid item reference for catalog.</p>
    <?php endif; ?>
    Aber wenn ich in den Button anklicke, wird keine Eintrag in der Merkliste angezeigt und auch der Button ändert sich nicht auf "von Merkliste entfernen".

    Für die Merkliste hab ich Dein Modul "Katalog-Merkliste" verwendet und das Template "catalog_simple".

  17. #17
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    Die eckigen klammern um die Katalog-Tabellennamen müssen weg. Die waren zur Verdeutlichung des Platzhalters in meinem Code gedacht.
    Geändert von der_On (22.02.2011 um 17:27 Uhr)

  18. #18
    Contao-Fan Avatar von thepixture
    Registriert seit
    24.06.2009.
    Ort
    Dresden
    Beiträge
    536

    Standard

    Super, jetzt läuft das Ganze
    Danke nochmal für Deine Hilfe.

    Hab auf die Merkliste selber gleich noch für jeden Eintrag den entfernen-Button eingebaut
    PHP-Code:
    <?php print CatalogWatchlist::getRemoveForm($entry['id'],'produkte',array('text'=>'X','title'=>'von der Merkliste entfernen','class'=>'merken entfernen')); ?>
    Das müsste ja reichen, weil ja nicht abgefragt werden muss, ob der Eintrag schon auf der Merkliste ist, oder?

  19. #19
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo der_On,

    erstmal ganz grosses Danke für die tolle Erweiterung, läuft phantastisch.

    Ich habe die SVN-Version vom Catalog und 2.9.3 im Einsatz.

    Bei Deinem Modul Katalog-Merkliste habe ich catalog_simple gewählt, die rechte Spalte Katalog-Template ist leer, dort kann ich nichts auswählen.

    (beim Standard-Modul Katalog-Liste würde ich rechts ja mod_cataloglist stehen haben)

    Funktionieren tut es trotzdem, was mich selbst wundert

    Hast Du dort eine Auswahl für mod_cataloglist zur Verfügung?
    Grüße Jenna

  20. #20
    Contao-Nutzer
    Registriert seit
    30.11.2009.
    Beiträge
    37

    Standard

    Zitat Zitat von thepixture Beitrag anzeigen
    Super, jetzt läuft das Ganze
    Danke nochmal für Deine Hilfe.

    Hab auf die Merkliste selber gleich noch für jeden Eintrag den entfernen-Button eingebaut
    PHP-Code:
    <?php print CatalogWatchlist::getRemoveForm($entry['id'],'produkte',array('text'=>'X','title'=>'von der Merkliste entfernen','class'=>'merken entfernen')); ?>
    Das müsste ja reichen, weil ja nicht abgefragt werden muss, ob der Eintrag schon auf der Merkliste ist, oder?
    Exakt. Freut mich, dass es klappt. Happy coding dann noch.

    Zitat Zitat von Jenna Beitrag anzeigen
    Hallo der_On,

    erstmal ganz grosses Danke für die tolle Erweiterung, läuft phantastisch.

    Ich habe die SVN-Version vom Catalog und 2.9.3 im Einsatz.

    Bei Deinem Modul Katalog-Merkliste habe ich catalog_simple gewählt, die rechte Spalte Katalog-Template ist leer, dort kann ich nichts auswählen.

    (beim Standard-Modul Katalog-Liste würde ich rechts ja mod_cataloglist stehen haben)

    Funktionieren tut es trotzdem, was mich selbst wundert

    Hast Du dort eine Auswahl für mod_cataloglist zur Verfügung?
    Die Merkliste basiert komplett immer auf dem Normalen Katalog-Leser, bis auf den kleinen Unterschied, welche Einträge ausgelesen werden. Wenn du Themes verwendest, dann erklärt sich das verhalten aber, da der Katalog gepatched werden muss, damit Templates aus Themes verwendet werden können. Derzeit nimmt er nur Templates die direkt im Template ordner liegen. Habe dem Katalog-Team schon meinen Patch angeboten, aber scheinbar ist der noch nicht eingearbeitet worden. Naja. Vielleicht nochmal nachhaken?

  21. #21
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Habe dem Katalog-Team schon meinen Patch angeboten, aber scheinbar ist der noch nicht eingearbeitet worden
    ahh, danke.

    bin grad total begeistert, wollte das erst gar nicht anfangen, da ich nicht sicher war ob es sich für die SVN eignet, 1000 Dank nochmal!
    Grüße Jenna

  22. #22
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    348

    Standard

    Hallo der_On,

    jetzt habe ich doch noch eine Frage zu der Katalog-Merkliste.

    Wenn ich dort eine Bedingung eingebe, Beispiel: cat_immo_typ=3, damit sollen nur Mietobjekte angezeigt werden und z.B. Kaufobjekte nicht, bekomme ich eine Error-Meldung.

    Beim normalen Katalog-Lister funktioniert das Ganze.

    Liegt vermutlich auch daran, das kein "Katalog-Template" ausgewählt werden kann?

    Oder kann der Bezug so nicht funktionieren?
    Grüße Jenna

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. gibt es eine Merkliste
    Von Jumpingpixel im Forum isotope
    Antworten: 5
    Letzter Beitrag: 02.11.2015, 08:25
  2. Antworten: 2
    Letzter Beitrag: 19.10.2010, 22:57

Lesezeichen

Lesezeichen

Berechtigungen

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