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

[UNGELÖST]Weiteres Problem mit drupal_get_title()/[UNGELÖST]Neuladen eines Javascripts nach Seitenwechsel mit AJAXFunktionalität

Eingetragen von xpla (38)
am 13.08.2010 - 21:13 Uhr in
  • Views

Hallo,

folgendes Problem:

Ich lasse mir per View diverse Sachen anzeigen und habe die Anzeige auf x Beiträge beschränkt.
Möchte nun mit einer Seitennavigation auf die weiteren Ergebnisse des views zugreifen. So weit so gut,
funktioniert auch alles recht gut, jedoch verliert ein Javascript, welches auf die Elemente angewendet wird seine Wirkung
und der Breadcum gibt mir auch nur Schwachsinn zurück.

Im Detail:

Diese Funktion stellt mir die "opacity" von Bildern dynamisch bei Mouse-Over:

$(function(){
  $("span.field-content a img").css("opacity",.4) // Sets starting opacity
  $("span.field-content a img").hover(function(){
    $(this).stop().animate({opacity:1},"fast");
  }, function() {
    $(this).stop().animate({opacity:.4},"fast");
  }
  );
});

Dies funktionbiert so lange gut, bis ich per Ajax-Funktionalität die Seite der "views"-Abfrage wechsle.
Sprich das Javascript müßte nue "initialisiert" werden. Gibt es hier irgendwie die Möglichkeit eines Callbacks? Mir ist die AJAX-Funktionalität der Pager-Funktion noch ein wenig spanisches Dorf.

Natürlich müßte man die Funktion noch bennnen oder den ganzen Code neu ausführen lassen, anstatt die Funktion als Argument aufzurufen (aber das ist dann Kosmetik).

Weiters besteht ein Problem bei Verwendung der Ajax-Funktionalität mit der drupal_get_title(); Funktion. Ich lasse mir im Kopfbereich des views den Titel Ausgeben. Das funktioniert natürlich bis zum Aufruf der Ajax-Seitennavigation einwandfrei, danach wird anstatt dem Titel nur mehr das Wort "Ansichten" ausgegeben.

Natürlich könnte ich den Titel hardgecodet hinschreiben, aber es geht da um's Verständnis.

Würde mich freuen, wenn mir hier jemand helfen könnte.

Vielen Dank im Voraus

‹ Modul Views Mini-Panels und Nodes Layout ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Problem mit dem

Eingetragen von xpla (38)
am 13.08.2010 - 22:06 Uhr

Das Problem mit dem Javascript laden habe ich bereits gelöst:

/sites/all/modules/views/js/ajax.js

Nach ca. Linie 148 folgendes hinzugefügt:
$.getScript('Pfad/zum/Skript', function () { alert('geladen'); });

Natürlich ist die alert-Funktion nur für Testzwecke ;)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Event

Eingetragen von stBorchert (6003)
am 13.08.2010 - 22:28 Uhr

Hallo.
Du kannst die Funktion als zusätzliches Event-Callback an den "weiter"-Link (bzw. alle Links des Views-Pagers) hängen. Schau mal auf docs.jquery.com, da steht genau, wie das funktioniert.

Und bitte nicht die Dateien von bestehenden Modulen und dem Drupal Kern verändern.
1. baust Du somit eventuelle Sicherheitslücken ein und 2. sind Deine Änderungen nach dem nächsten Update wieder weg.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, danke für deine

Eingetragen von xpla (38)
am 14.08.2010 - 08:18 Uhr

Hallo,

danke für deine Antwort. Das Problem mit der Funktion habe ich gelöst, Sicherheitsrisiko sehe ich keines und bezüglich Update hast du natürlich vollkommen recht.

Weiters kann ich mit deiner Hilfestellung nichts anfangen.

Zitat:

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. The special thing about a callback is that functions that appear after the "parent" can execute before the callback executes. Another important thing to know is how to properly pass the callback. This is where I have often forgotten the proper syntax.

Nett, und wie baue ich das dann ein? Natürlich kannst du auf die Anleitung im Sinne von RTFM verweisen, aber die hilft nun mal nicht weiter, denn ich muss das Javascript von Views beeinflussen und wenn du mir sagst, wie ich das ohne Core-Hack mache, wäre ich dir dankbar, ansonsten habe ich die Lösung, wie gesagt, bereits gepostet.

Konkret besteht aber noch das Problem mit drupal_get_title(). Die Funktion liefert mir nach einem AJAX-Seitenwechsel einen falschen Titel.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also für mich sieht das aus

Eingetragen von wla (9461)
am 14.08.2010 - 09:21 Uhr

Also für mich sieht das aus wie "works as designed". Drupal liefert den Titel der Seite, aus einem normalen Seitenaufruf und speichert ihn in einer statischen Variablen. Offensichtlich geht Views jetzt hin und verändert den Titel beim Ajax-Aufruf auf "Views" (übersetzt: "Ansichten"). Du kannst Dich allenfalls beklagen, daß Views dieses Verhalten zeigt, aber die Funktion drupal_get_title ist nicht daran schuld. Evtl gibt es ja in Views die Möglichkeit einen passenderen Titel zu setzen (notfalls durch Themen der View).

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Event-Handler

Eingetragen von stBorchert (6003)
am 14.08.2010 - 09:31 Uhr
xpla schrieb

Sicherheitsrisiko sehe ich keines

Naja, vielleicht nicht bei dieser Änderung. Und Sicherheitsrisiken haben meistens die Eigenheit, vom Autor nicht entdeckt zu werden.

xpla schrieb

ansonsten habe ich die Lösung, wie gesagt, bereits gepostet.

Sorry, aber eine Lösung ist das nicht wirklich. Das ist ein Hack.

Versuch doch einfach mal Folgendes in einer eigenen js-Datei:

Drupal.behaviors.customEvent = function(context) {
  $('ul.pager > li > a').click(function () {
    alert('Test');
  });
}

Eventuell muss der Selektor noch ein wenig genauer spezifiziert werden, jedoch sollte das Prinzip klar sein.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das was du in der Behavior

Eingetragen von xpla (38)
am 14.08.2010 - 10:05 Uhr

Das was du in der Behavior hast, habe ich ohne der Behavior bereits versucht (auf Anraten deines Links weiter oben). Konnte jedoch das Ereignis nicht "abfangen" ...
Ich probiere es noch mal.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit -> click konnte ich zwar

Eingetragen von xpla (38)
am 14.08.2010 - 11:01 Uhr

Mit -> click konnte ich zwar das Ereignis abfangen, das bringt aber nichts, es muss ja nach Beendigung der AJAX-Funktion etwas geladen werden.
Gut -> laut deinem Hinweis auf die API -> ajaxSuccess

Das funktioniert zwar in der Theorie:

Drupal.behaviors.customEvent = function(context) {
  $('ul.pager > li > a').ajaxSuccess(function () {
    $.getScript('pathe/to/js', function () {});
  });
}

In der Praxis wird dann Firefox und Safari extrem langsam, das geladene Javascript zum Wechsel der "opacity" arbeitet extrem langsam und Seitenwechsel mit AJAX wird auch buggy und teilweise nicht ausgeführt.

Der Hack scheint bei mir die beste Lösung bis jetzt.

Nachtrag: Diese Konstellation bewirkt, dass sich bei mir Safari aufhängt (und Firefox wie gesagt auch kurz davor ist).

  • 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 1 Woche 4 Tagen
  • Hey danke
    vor 1 Woche 5 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 5 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 3 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 16 Stunden
  • In der entsprechenden View
    vor 3 Wochen 16 Stunden
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 16 Stunden
  • gelöst
    vor 5 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» 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 6 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