sebthom.de

Menu
  • Home
  • Über mich
  • Impressum
    • Datenschutzerklärung
  • Gästebuch
Menu

DD Sitemap Generator Plug-in und mehrsprachige Blogs

Posted on May 1, 2008December 18, 2012 by sebthom

Um ein zweisprachiges Blog mit WordPress betreiben zu können, verwende ich das Language Switcher Plug-in. Dieses erlaubt es, durch die Verwendung spezieller Tags in den üblichen Titel und Inhaltsfeldern zu deklarieren, welche Teile in welcher Sprache geschrieben sind (z.B. “[ lang_en]Hello World[ /lang_en][ lang_de]Hallo Welt[ /lang_de]”). Wenn ein solcher Beitrag im Browser angezeigt wird entfernt das Plug-in diese Tags sowie die Inhalte in den nichtausgewählten Sprachen.

Ich verwende das DD Sitemap Generator Plug-in für WordPress zur automatischen Erzeugung einer Sitemap basierend auf den Beiträge und Kategorien meines Blogs. Auf dieser generierten Sitemap werden jedoch bei den Kategorienamen und Beitragstiteln die Übersetzungen in allen Sprachen auf einmal angezeigt inklusive der speziellen Tags.

Um dies zu beheben habe ich mich etwas im Code von WordPress und dem Language Switcher Plug-in umgesehen. Das Language Switcher Plug-in entfernt die Tags und überflüssigen Übersetzungen indem es sich der Filters API bedient – eine Art ereignisbasierter RückrufmMechanismus. Plug-ins können Ihr Interesse an bestimmten Textfilterereignissen signalisieren indem sie die Funktion add_filter(the_event_id, the_name_of_a_function_to_callback) unter Angabe der ID eines Filterereignisses und des Namens der aufzurufenden Funktion im Falle des Auftretens des entsprechenden Ereignis. Neben dem Registrieren für Filterereignisse können Plug-ins auch selbst solche Textfilterereignisse auslösen indem sie Funktion apply_filters(the_event_id, the_text_to_be_filtered) unter Angabe einer ID des Filterereignisses und des zu filternden Textes aufrufen. WordPress führt dann alle für dieses Ereignis registrier Filtermethoden auf dem übergebenen Text aus und die apply_filters Funktion gibt als Ergebnis den “gefilterten” text zurück. Wenn WordPress beispielsweise die Titel von Beiträgen oder Seiten darstellt löst es ein Filterereignis mit der ID “the_title” aus. Dies ermöglicht Plug-ins den Titel zu prozessieren/modifizieren bevor er dargestellt wird. Das Language Switcher Plug-in registriert sich daher selbst für dieses und eine Reihe anderer Filterereignisse um mehrsprachig eingegebene Texte vor der Darstellung um die Sprachtags und die nicht relevanten Übersetzungen zu entfernen.

Leider löst das DD Sitemap Generator Plug-in die entsprechenden Filterereignisse bei der Erstellung der Sitemap nicht aus. Daher ist auch das Language Switcher Plug-in nicht in der Lage die Kategorienamen und Beitragstitel zu bearbeiten.

Um das Problem zu lösen habe ich daher den Quellcode des DD Sitemap Generator Plug-in analysiert und die fehlenden apply_filters Aufrufe an den entsprechenden Stellen hinzugefügt. Wer ebenfalls von diesem Problem betroffen ist kann sich wie folgt behelfen:

  1. Die Datei <wordpress_root>/wp-content/plugins/sitemap-generator/sitemap-generator.php (oder <wordpress_root>/wp-content/plugins/dd-sitemap-gen/dd-sitemap-gen.php) in einem Editor öffnen
  2. Den folgenden Text lokalisieren
       $tmp_array[‘title’] = $pages[$k]->post_title;
    und ersetzen durch
       $tmp_array[‘title’] = apply_filters(‘the_title’, $pages[$k]->post_title);
  3. Den folgenden Text lokalisieren
       $tmp_array[‘title’] = $cat_data[$c][‘cat_name’];
    und ersetzen durch
       $tmp_array[‘title’] = apply_filters(‘the_category’, $cat_data[$c][‘cat_name’]);
  4. Den folgenden Text lokalisieren
       $tmp_array[‘title’] = $posts[$k]->post_title;
    und ersetzen durch
       $tmp_array[‘title’] = apply_filters(‘the_title’, $posts[$k]->post_title);
  5. Die Änderungen speichern. Das sollte es gewesen sein.

Mit diesem Verfahren kann man auch andere Plug-ins für ein gutes Zusammenspiel mit dem Language Switcher Plug-in korrigieren.

3 thoughts on “DD Sitemap Generator Plug-in und mehrsprachige Blogs”

  1. nlx says:
    16 July 2008 at 20:22

    Good post.

  2. nlx says:
    16 July 2008 at 21:03

    If you have the time and feel like helping me, here the link :
    http://wordpress.org/support/topic/189461?replies=1#post-805561

  3. Mathieu says:
    1 October 2008 at 21:27

    for me i make it work with : $tmp_array[‘title’] = apply_filters(‘widget_title’, $pages[$k]->post_title);

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Language

    English English    Deutsch Deutsch    

Categories

  • IT (25)
    • Entwicklung (15)
      • Java (7)
      • Jython (3)
      • Visual Basic (5)
    • Freeware Tipps (1)
    • Linux (3)
    • WebSphere Portal (2)
    • Windows (1)
    • Wordpress (4)
  • My Freeware (2)
  • My Music (3)

Recent Posts

  • [Solved] Windows 7 “Safely Remove Hardware” pop-up menu horrendously slow
  • Bash: Capturing stderr in a variable while still printing to the console.
  • Configuring EMF Teneo with Hibernate, Commons DBCP, Spring Hibernate Transaction Manager, and the OpenSessionInViewFilter
  • Using EMF ECore model objects with Wicket components
  • Installing Tomcat 6 on Debian Squeeze
  • Leveraging PyDev’s auto-completion for indirectly created objects
  • OVal 1.40 released
  • Installing WebSphere Portal in a local network
  • Comparing version numbers in Jython / Python
  • Running TomCat 6 in Debug Mode under Windows

Blogroll

  • E L S U A
  • elektrofever.de
  • OVal
  • Sweettt.com
  • Twins’ Running Blog

Recent Comments

  • Pierre on Lotus Notes [Send only] und [Send and File] Schaltflächen für Outlook 2003
  • Yereverluvinunclebert on MyPad v1.1.6 – ein PHP Editor
  • Sebastian Thomschke on MyPad v1.1.6 – ein PHP Editor
  • Jack on MyPad v1.1.6 – ein PHP Editor
  • Dark-Star on Album: elektrofever – Hornado, the Soundtrack (2001)

Archives

  • May 2012
  • January 2011
  • October 2010
  • September 2010
  • March 2010
  • February 2010
  • September 2009
  • July 2009
  • March 2009
  • February 2009
  • November 2008
  • September 2008
  • May 2008
  • April 2008
  • September 2007
  • July 2007
  • July 2004
  • March 2003
  • August 2002
  • April 2002
  • January 2002
© 2019 sebthom.de | WordPress Theme by Superbthemes