Ergebnis 1 bis 11 von 11

Thema: Kommunikation innerhalb der Website über AJAX

  1. #1
    Contao-Nutzer
    Registriert seit
    26.04.2012.
    Ort
    Landau
    Beiträge
    12

    Standard Kommunikation innerhalb der Website über AJAX

    Hallo zusammen,

    ich bin gerade am entwickeln eines Templates bei dem die Kommunikation vollständig über AJAX abgebildet werden soll.
    Nach diversen Fehlversuchen & Tests melde ich mich jetzt noch einmal hier.

    Aktuell hole ich mir via jQuery die einzelnen Menüpunkte und belege diese mit einem Click - Eventlistener.
    Sobald geklickt wird, möchte ich gerne den Inhalt der entsprechenden Seite nachladen, in die Inhaltsbox schreiben und diese aufsliden lassen.

    Ich verwende aktuell das bekannte "Ajax-Tools".

    Wie würdet Ihr vorgehen um dieses Problemstellung zu lösen? Ist das über diese Ajax Erweiterung so überhaupt möglich?

    Wäre top, wenn ihr Hinweise, Tipps oder gar Lösungswege geben könntet.

    Grüße

    Josh

  2. #2
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Das kommt immer sehr auf die Aufgabenstellung drauf an. Wenn Du nur einen Artikel hast, der nachgeladen werden muss, ist die Sache relativ easy.

    Dann nimmst Du einfach die ajax.php von Andy Schempp und registrierst dich beim dispatchAjax-Hook.
    Dann brauchst Du nichts weiter zu tun als von Controller zu extenden und die Artikel-ID zu laden:

    PHP-Code:
    class MyHookedClass extends Controller
    {
        public function 
    myHookedMethod()
        {
            return 
    $this->getArticle($this->Input->get('articleId'));
        }

    "articleId" muss natürlich als GET-Parameter von deinem jQuery übergeben werden oder Du musst sie sonst wie rausfinden. Keine Ahnung was Du genau machen willst halt :-)

    Du kannst auch eine ganze Seite laden und Sie mit einem speziellen Seitenlayout rendern lassen, das nur den Content ausgibt oder Du schreibst einen eigenen Seitentyp der das macht oder, oder, oder...
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  3. #3
    Contao-Nutzer
    Registriert seit
    26.04.2012.
    Ort
    Landau
    Beiträge
    12

    Standard

    Das mit dem eigenen Seitenlayout ist en spitzen Tipp , danke hierfür.

    Werde das mal heute Abend so bauen und Feedback geben.

    Grüße!

    EDIT:
    Unter Artikel nachladen verstehst du einen Artikel einer Page welcher diverse Unterelemente besitzen kann?
    z.B.:
    Page: Neuigkeiten
    Artikel: Neuigkeiten [Hauptspalte]
    Artikel-Unterelemente:
    - Text
    - Newsmodul
    - etc.?

    In diesem Beispiel würden dann alle Inhalte des "Neuigkeiten [Hauptspalte]" Artikels geladen werden?

    //Nochmal EDIT
    Okay, meine letzte Frage hat sich erübrigt.
    Geändert von trixz222 (15.05.2012 um 09:26 Uhr)

  4. #4
    Contao-Nutzer
    Registriert seit
    26.04.2012.
    Ort
    Landau
    Beiträge
    12

    Standard

    Also ich habs jetzt mal folgendermaßen gelößt:
    1. Habe ich in meinem Template eine Fallunterscheidung eingebaut

    Wenn Parameter "isAjax" übergeben wurde und true ist, gebe nur die main-section aus, ansonsten alles.

    2. Habe ich dann eben alle Links, bei denen "href" nicht leer und "target" ungleich "_blank" waren, observed.

    Bei klick auf einen dieser Links wird nun ein Ajax request abgeschickt und in meinen Inhaltscontainer geschrieben.
    Anschließend pushe ich noch über die history.js einen neuen State um die Browserhistory zur Verfügung zu stellen.

    3. Observe des Inhaltscontainer

    Sobald sich der Inhalt ändert, wird auf den Inhaltscontainer Schritt 2 ausgeführt, sodass auch die nachgekommenen Links observed werden.

    Habt ihr Verbesserungsvorschläge?

  5. #5
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Tönt soweit ganz gut
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  6. #6
    Contao-Nutzer
    Registriert seit
    13.12.2011.
    Beiträge
    8

    Standard dispatchAjax-Hook

    wie registriert man sich beim dispatchAjax-Hook ?

  7. #7
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    // config.php
    $GLOBALS['TL_HOOKS']['dispatchAjax'][] = array('Class''method'); 
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  8. #8
    Contao-Nutzer
    Registriert seit
    13.12.2011.
    Beiträge
    8

    Standard

    @toflar: danke;

    bei dem lösungsansatz mit dem Hook, blicke ich leider nicht durch,

    folgendes habe ich mal:

    config.php
    PHP-Code:
    $GLOBALS['TL_HOOKS']['dispatchAjax'][] = array('MyHookedClass''myHookedMethod'); 
    MyHookedClass.php - die hab ich unter system/modules/artikel_ajax/
    PHP-Code:
    class MyHookedClass extends Controller
    {
        public function 
    myHookedMethod()
        {
            return 
    $this->getArticle($this->Input->get('id'));
        }

    js-file
    PHP-Code:
    window.addEvent('domready', function() {

        var 
    myRequest = new Request.JSON({
            
    method'get',
            
    url'ajax.php'
            
    onSuccess: function(html
            {
                if($(
    'contentField'))
                {            
                    $(
    'contentField').set('html'html.content);  
                }
            } 
        });
     
        $$(
    '.WERK').addEvent('click', function(event){ 
            
    event.stop(); 
            
    myRequest.send('action=getArticle&id=11'); 
        });
    }); 
    die ajax.php habe ich ab Zeile 153 wie folgt erweitert

    PHP-Code:

    if ($this->Input->get('action') == 'getArticle')
            {
                
    $this->output($this->getArticle($this->Input->get('id')));

            } 
    Firebug antwortet mit
    PHP-Code:
    {"token":"efd5cfd546bcd1460aa4aea76d645745","content":""
    was mach ich falsch? (contao 2.11.3)

  9. #9
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Die ajax.php musst Du doch nicht erweitern?
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  10. #10
    Contao-Nutzer
    Registriert seit
    13.12.2011.
    Beiträge
    8

    Standard

    danke für den hinweis, aber hab mir jetzt schon alle möglichen beiträge durchgelesen und bin inzwischen völlig verwirrt,
    hab den Eintrag aus der ajax.php wieder rausgeschmissen. Der Request stimmt doch, oder?
    es scheint als ob das registrieren in der config.php überhaupt keine Auswirkung zeigt. Wie könnte ich das denn überprüfen?
    mthx

  11. #11
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    https://github.com/aschempp/contao-a...aster/ajax.php

    Code lesen - viel mehr kann ich dazu nicht sagen
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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