1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

jQuery idTabs in eigenes Theme integrieren

Dieses Thema im Forum "Design" wurde erstellt von infected, 17. September 2008.

  1. infected

    infected Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.816
    Zustimmungen:
    1
    Hi!

    Ich erstelle gerade ein eigenes Theme (momentan noch Rohbau :D) und möchte dabei die jQuery idTabs in die Sidebar integrieren. Im Firefox schien es eigentlich zu funktionieren, aber es hatte auch nur den Anschein. Ich habe den Code
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    (Pfad natürlich angepasst) in die header.php, vor
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    eingefügt. Danach wurde dieser Code für "javascriptless use" in die sidebar.php eingefügt:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Sollte ja nur zum Testen sein und funktionierte zunächst auch. Dann habe ich festgestellt, dass das ganze im IE7 nicht reibungslos läuft. Das äußert sich darin, dass sobald das Script aktiv ist, der Speicherverbrauch unaufhaltsam in die Höhe schießt. Den Browser normal beenden geht dann meistens nicht mehr. Es scheint als würde dort irgendwas "schleifenmäßig" in den Speicher geladen. Den Browser kann ich dann nur über den Taskmanager beenden, wo man dann genau sehen kann wie sich der Verbrauch sekündlich erhöht.

    Hier könnt ihr es selbst testen. Vielleicht kann mir jemand sagen wo der Fehler liegt?
     
    #1 infected, 17. September 2008
    Zuletzt bearbeitet: 7. November 2008
  2. flobster

    flobster Well-Known Member

    Registriert seit:
    25. August 2008
    Beiträge:
    137
    Zustimmungen:
    0
    Denke nicht, das es daran liegt, aber sollte die "jquery.idTabs.min.js" nicht erst nach dem jQuery Framework aufgerufen werden?
     
  3. infected

    infected Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.816
    Zustimmungen:
    1
    Das hat man davon, wenn man sich versucht in die Thematik zu googlen :D Habe wahrscheinlich jQuery falsch aufgerufen. Wie hier bei im-web-gefunden.de erklärt habe ich folgenden Code zum Aufruf von jQuery verwendet:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das hat das ganze aber irgendwie durcheinander gewürfelt. In der header.php war die Reihenfolge richtig, aber der Quelltext gabs genau andersherum aus. Vielen Dank für den Hinweis!

    Ich hab jQuery nun direkt in den Themeordner kopiert und rufe es dort auf. Dies funktioniert nun auch im IE7. Jetzt jedoch meine Frage, ob jQuery nun doppelt aufgerufen wird, da WordPress es ja schon mitbringt?!
     
  4. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Also bitte nicht jquery rumkopieren, sondern die WP eigene Variante benutzen. Und sicherstellen, das die jquery.idTabs.min.js auch dazu passen.

    Und ab WP 2.6 geht das so und sollte in der functions.php deines Themes stehen (Theme basiert):
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    oder für Benutzung innerhalb von eigenen Plugins, die WP erweitern (Plugin basiert):
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Erstens wird das aktuelle Theme und die URL korrekt ermittelt und das jquery.idTabs.min.js direkt von dort geladen aber nur wenn auch existent. Da es von jQuery abhängt, ist das auch mit dem 3. Parameter angegeben und sorgt dafür, das jQuery noch vorher geladen wird.
     
    #4 codestyling, 17. September 2008
    Zuletzt bearbeitet: 17. September 2008
  5. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Und noch ein Nachschlag: Man braucht nicht unbedingt eine externe Erweiterung, denn WP hat auch Tabs auf jQuery Basis im Angebot:
    Doku: UI/Tabs - jQuery JavaScript Library

    Im Theme zu haben mit:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ...und steht sogar von Haus aus zur Verfügung, ohne das man sein Theme mit zusätzlichen javascripts spicken muß.

    Ich finde, man sollte viel mehr das nutzen, was von Haus aus schon da ist und ist dann bei WP oder Plugin Updates auch immer auf der sicheren Seite.

    Ergänzung: In der header.php des Themes muß allerdings der Hook auch aufgerufen werden mit:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und man sollte die Doku ansehen, wie die class Namen von ui.tabs erwartet werden und ob man ggf. noch eine Initialisierungsfunktion aufrufen muß.
     
    #5 codestyling, 17. September 2008
    Zuletzt bearbeitet: 17. September 2008
  6. infected

    infected Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.816
    Zustimmungen:
    1
    Hallo codestyling!

    Vielen Dank für Deine Antworten! Habe beide von Dir aufgeführten Möglichkeiten auf die Schnelle mal getestet. Leider funktionierte es bei keinen von beiden (beim 1. kam ne weiße Seite mit Fehlermeldung "called undefined function current_theme_info()" und bei der 2. passierte gar nichts. Habe dabei den Beispielcode aus dem von Dir angegebenen Link getestet. Werde mich aber heute Abend nochmal dransetzen wenn ich mehr Zeit habe.

    PS: Und ja, eine interne Lösung wäre auch mir lieber, anstatt das immer irgendwelche zusätzlichen Dinge geladen werden müssen. Es war mir auch nicht bewusst, dass WordPress auch Tabs mit an Bord hat, was natürlich ne super Lösung wäre...

    Gruß
    Michael
     
    #6 infected, 17. September 2008
    Zuletzt bearbeitet: 17. September 2008
  7. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Ich hab beide oben genannten Artikel ergänzt, um das, was ich zwar gedacht aber nicht beschrieben hab :)
     
  8. infected

    infected Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.816
    Zustimmungen:
    1
    Danke für den Code! Funktioniert bestens, solange Javascript aktiviert ist. Wie sieht´s denn bei deaktiviertem JS aus? Gibt´s da auch ne Lösung für?
     
  9. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Dann bleibt dir nur auf den CSS Seiten von Stu Nicholls nachzulesen und das Ganze pur in CSS zu machen. Allerdings kann man in CSS nicht dafür sorgen, wenn z.B. der letzte Tab angeclickt wurde und die Box sichtbar ist, das ein Click in die Seite wieder auf den 1. Tab zurückspringt.
    Um dauerhaft einen Tab aktiv zu halten, braucht es js oder ein Neuladen der Seite.
     
  10. harry22

    harry22 Well-Known Member

    Registriert seit:
    29. Oktober 2008
    Beiträge:
    179
    Zustimmungen:
    0
    ... dann fasse ich nochmal alles zusammen:

    1)folgendes in das template einbauen:(wo genau?)

    wp_enqueue_script('jquery-ui-tabs');

    2) wie erstelle ich dann die tabs? ich habe gegoogle aber nur wenig infos bekommen.

    und: vielen, vielen dank für eure hilfe
     
  11. infected

    infected Well-Known Member

    Registriert seit:
    9. Juli 2006
    Beiträge:
    9.816
    Zustimmungen:
    1
    Hallo harry22!

    Habe Deinen Post erst jetzt gelesen, sorry! Also in die functions.php meines Themes habe ich folgendes integriert:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Die Tabs habe ich in meine sidebar.php mit folgendem Code eingebaut:
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Meinen Code aus der sidebar habe ich jetzt mal gelöscht. Wenn Du mit den Schnipseln nicht zurecht kommst, kann ich Dir auch gerne mal meine komplette sidebar.php zukommen lassen, oder hier posten. Vielleicht wird´s dann deutlicher.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden