Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

AJAX-Frage vom Anfänger

Eingetragen von ka3ax (9)
am 10.12.2014 - 16:29 Uhr in
  • Modul-Entwicklung

Hallo, ich versuche in einem Vorhanden Modul (search_api) die Suchergebnisse in einem DIV-Element zu öffnen.

Dazu wollte ich die AJAX-Exampels von Drupal verwenden. Also habe ich diesen Code in search_api.module eingefügt

function search_api_link_ajax() {
 
  // A menu callback is required when using ajax outside of the Form API.
  $items['search_api_link_callback'] = array(
    'page callback' => 'search_api_ajax_response',
    'access callback' => 'user_access',
    'access arguments' => array('access content'),
    'type' => MENU_CALLBACK
  );
 
  return $items;
}
 
function search_api_ajax_response($type = 'ajax') {
  if ($type == 'ajax') {
    $output = t("This is some content delivered via ajax");
    $commands = array();
    // See ajax_example_advanced.inc for more details on the available commands
    // and how to use them.
    $commands[] = ajax_command_append('l-region--detail', $output);
    $page = array('#type' => 'ajax', '#commands' => $commands);
    ajax_deliver($page);
  }
  else {
    $output = t("This is some content delivered via a page load.");
    return $output;
  }
}

Damit wollte ich ein Hook erstellen.

Und die Funktion "getItemUrl" in "includes/datasource_entity.inc" habe ich damit ersetz

  public function getItemUrl($item) {
    if ($this->entityType == 'file') {
      return array(
        'path' => file_create_url($item->uri),
        'options' => array(
          'entity_type' => 'file',
          'entity' => $item,
        ),
      );
    }
   
    $url = entity_uri($this->entityType, $item);
    $url['#type'] = 'link';
      // Note the /nojs portion of the href - if javascript is enabled,
      // this part will be stripped from the path before it is called.
    $url['#id'] = 'ajax_link';
    $url['#ajax'] = array(
      'wrapper' => 'l-region--detail',
      'method' => 'html',
      'callback' => 'search_api_link_ajax',
    );
  
    return $url ? $url : NULL;
  }

Damit sollten die Parameter für den Link übergeben werden, denke ich mal. Was aber genau hier passiert, habe ich keine Ahnung.

Jetzt habe ich es soweit das das Ding mir keine Fehler ausgibt. Funktionieren tut es aber beim weiten noch nicht. War mir auch klar, das es so schnell nicht laufen wird.

Jetzt versuche ich verzweifelt rauszufinden, wie das beim Drupal mit den Hooks funktioniert.
Habe ich bereits den Hook in search_api.modulerichtig erstell?
Wie greife ich jetzt auf diesen Hook aus datasource_entity.inc zu?

Danke für jede Hilfe

‹ [gelöst] Best practice: auf DB (Inhaltstypen-Felder) zugreifen am Beispiel von Google Maps API (Geocodierung) AJAX-Frage vom Anfänger ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Du hast in das Modul search_api was reingeschrieben?

Eingetragen von maen (547)
am 12.12.2014 - 14:06 Uhr

Wenn ich das so richtig verstehe, dann ein paar grundsätzliche Sachen.

Hooks werden dazu genutzt, in eigenen Modulen sich in bestehende Prozesse einzuhängen. Zwar kannst Du das auch in einem anderen Modul drin machen, wenn das aber geupdatet wird sind die overrides von Dir wahrscheinlich weg. Google danach, wie ein Modul gebaut wird, in deinem Fall scheinst Du (ich analysiere deinen Code nicht!) nur YOURMODULE.info und YOURMODULE.module zu brauchen.

In der *.module Datei haust Du obigen Code rein, aktivierst das Modul und schaust was passiert.

Das Ersetzen von Code eines bestehenden Moduls sollte AUF JEDEN FALL vermieden werden. Hooks sind dazu da, wenn gegeben, sich da reinzuhängen und den Prozess umzugestalten (erweitern, verändern etc.).

Ohne Hintergrundwissen was die searchapi jetzt macht kommt mir das aber im Grundgedanken Deines Tuns ein wenig komisch vor.

Falls ich Dich richtig verstehe möchtest Du nicht die Ergebnisse als solches verändern, sondern themen??? Also das Resultat in css packen.

Und das macht man nicht mittels Funktionsänderung sondern mittels Theming. D.h. Du greifst auf die Ausgabe am Schluss zu, da wo gerendert wird. Am besten setzt Du das search_api Modul neu auf und suchst darin nach einer tpl.php Datei.

Stichworte wie das Ganze funktioniert sind in Google theming und tpl.php. Das kannst Du auf verschiedene Weise lösen.

Viel Spaß.

Marc

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 5 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 2 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20452

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 29 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association