bbpress Plugin für WordPress konfigurieren: Sprache und Template

25. Oktober 2011

Meine Google Recherche diesbezüglich war sehr unergiebig. Die meisten Infos, die man bekommt, beziehen sich auf alte Versionen von bbpress oder solche, die kein WordPress Plugin. Deshalb hier eine kurze Erklärung, wie man das bbpress Plugin konfiguriert.

1. Template

Wenn man bereits ein eigenes Template hat, und nun auch das Aussehen von bbpress entsprechend anpassen will, muss man die Daten aus plugins/bbpress/bbp-themes/bbp-twentyten in seinen Theme Ordner (also themes/THEMENAME) kopieren. Vorsicht: die Dateien functions.php und style.css sind doppelt, diese natürlich nicht überschreiben, sondern die bbpress Inhalte in die entsprechenden Dateien kopieren. Damit sollte nicht länger das Standardtemplate in bbp-themes verwendet werden, sondern bbpress greift nun auf die Template Files im THEME Ordner zu.

2. Sprache

Drei einfache Schritte:

  • plugins/bbpress/bbp-languages/bbpress.pot kopieren
  • nach wp-content/languages/bbpress/ kopieren (dieser Ordner existiert wahrscheinlich noch nicht, einfach erstellen)
  • die Datei in bbpress-de_DE.po umbenennen und übersetzen

Es sollte natürlich schon eine Übersetzung irgendwo geben, wichtig ist halt, dass die Datei bbpress-de_DE.mo heißt und in languages/bbpress/ liegt. Um das rauszufinden, musste ich mich Schritt für Schritt durch den Sourcecode arbeiten.

jquery waterwheel carousel

12. Oktober 2011

Ich brauchte ein jquery plugin, das mir diverse bilder in rotiert. Das jquery waterwheel carousel war schon ziemlich perfekt für meine Zwecke und ich kann es eigentlich nur jedem empfehlen. Ich musste für meine Zwecke noch zwei kleine Änderungen machen:

1. das carousel verarbeitet nur images, ich brauchte allerdings unbedingt dieselbe Funktionalität für divs (mit Bildern als Hintergrundbild).

Lösung: im Quellcode wird direkt nach Bildern gesucht. Man muss also überall nur nach .find(‘img’) suchen und dies durch .find(‘div’) bzw. find(‘div.klassenname’) ersetzen. Das ganze funktionierte dann zuerst nicht mehr in Chrome, das lag an der preload Funktion. Da es sich um Hintergrundbilder handelt und ich nicht weiß, wie man die vorlädt, habe ich das ganze einfach auskommentiert:

  1. function preload(callback) {
  2. callback();
  3. }

Das wars schon. Dann spielt auch Chrome das Spiel mit.

2. das carousel kann immer nur um ein item weiterscrollen, ich brauchte aber die Möglichkeit, mit jedem Klick um 3 Items weiterzuscrollen.

Die Pfeile werden mit einer Funktion namens moveOnce belegt. Um nun nicht ein Item weiterzuscrollen sondern drei, habe ich mir eine neue Funktion moveThrice geschrieben:

  1. function moveThrice(direction) {
  2. var currentCenterIndex = data.currentCenterItem.data().index;
  3. if ((currentCenterIndex < 3 && direction === true) || (currentCenterIndex > (data.totalItems-3) && direction === false)) {
  4. clearTimeout(data.autoPlayTimer);
  5. if (options.edgeReaction === 'reset') {
  6. rotateCarousel(!direction,data.totalItems-1);
  7. } else if (options.edgeReaction === 'reverse' && options.autoPlay !== 0) {
  8. rotateCarousel(!direction,3);
  9. options.autoPlay *= -1;
  10. }else{
  11. if(direction == true){
  12. new_number = currentCenterIndex;
  13. }else{
  14. new_number = data.totalItems - currentCenterIndex - 1;
  15. }
  16. rotateCarousel(direction, new_number);
  17. }
  18. } else {
  19. rotateCarousel(direction,3);
  20. }
  21. }

Probleme mit den Permalinks

12. Oktober 2011

Aktuell hatte ich ab und an mal Probleme mit den WordPress Permalinks. Es war nicht so, dass sie gar nicht funktioniert hätten, sondern eher dass einzelne Links nicht funktionieren wollten. Bei Projekt M war das Problem, dass sich die funktionierenden Permalinks abgewechselt haben. Es gab zwei Arten von Links: http://www.projekt.at/seitenname/ für alle Content Seiten, sowie spezielle Seiten für den Custom Post Type namens CPT, die über die Url http://www.projekt.at/ctp/name-132/ aufgerufen wurden. Und es ging immer nur eines von beiden, nach jedem Update der Permalinks ging das eine, das andere aber nicht und umgekehrt.

Problem war, dass das Plugin “custom post type” installiert war. Der custom post type CTP war allerdings aus Performancegründen zwar mit dem plugin erstellt worden, wurde aber in der functions.php noch einmal definiert. Wie genau sich das auswirkt, konnte ich nicht nachvollziehen und warum es dafür sorgt, dass sich die Permalinks abwechseln, ist mir auch nicht klar. Aber nach einem Auskommentieren der Definitionen in der functions.php hat sich das Problem erledigt.

Außerdem ist noch festzuhalten, dass WordPress generell und Permalinks speziell nicht gut auf posts reagieren, die in der Zukunft liegen. Ich habe einen kleinen Veranstaltungskalender programmiert mit Einträgen in der Zukunft und auch da wollten die Permalinks nicht so, wie ich das wollte.

Error Code 191 mit oauth

06. Oktober 2011

Ich versuche, mit oauth Permissions vom Facebook User zu holen und bekomme den error code 191.
Man muss in den Einstellungen der Applikation neben dem “Seitenreiter” auch die Option “Webseite” auswählen und die Url ausfüllen. Danach kommt der Fehler nicht mehr.

Facebook Tabs: signed_request leer nach Seitenreload

06. Oktober 2011

Ich habe ein Facebook iframe, index.php. Dort gibt es 4 Links, die alle auf index.php?p=PARAMETER verweisen. Sobald einer dieser Links geklickt wird, ist der signed_request leer. Offenbar wird dieser signed_request nur ein einziges Mal übergeben und zwar beim erstmaligen Laden des iFrames. Bei genauer Betrachtung macht das auch Sinn, man muss sich selber darum kümmern, seine Parameter weiterzugeben, wenn man auf weitere Seiten navigiert. Aber früher hat das problemlos geklappt und das macht die Sache so ärgerlich. Das Weitergeben der Parameter macht man entweder, indem man POST oder GET Parameter mitgibt, oder man macht es so, wie ich es gemacht habe: COOKIES!

Ganz oben auf der index.php Seite mache ich vor dem getSignedRequest folgendes:

  1. if($_REQUEST['signed_request']){
  2. $inTwoMonths = 60 * 60 * 24 * 60 + time();
  3. setcookie('fbrequest', $_REQUEST['signed_request'], $inTwoMonths);
  4. }else{
  5. $_REQUEST['signed_request'] = $_COOKIE['fbrequest'];
  6. }

Leck mich, facebook. Mittendrin die Spielregeln ändern is scheiße, so sieht’s aus.

der WordPress “more” Link

03. Oktober 2011

Die Funktion the_excerpt ist ja doch relativ beschränkt und bietet keine Möglichkeiten der Spezifizierung, was genau man haben möchte. Daher tut man gut daran, besser the_content mit seiner more Funktion zu nutzen. Bei Custom Post Types will das aber nicht immer gleich, bei mir hatte the_content(‘mehr lesen’) erstmal keinen Erfolg, obwohl ich nach kurzer Google Suche oben global $more definiert habe. Warum? $more muss in der Schleife selbst definiert sein!

Falsch:

  1. global $more;
  2. $more = 0;
  3. $args = array( 'post_type' => 'referenzen');
  4. $loop = new WP_Query( $args );
  5. while ( $loop->have_posts() ) : $loop->the_post();
  6. echo the_content('meeeeehr', TRUE);
  7. endwhile;

Richtig:

  1. $args = array( 'post_type' => 'referenzen');
  2. $loop = new WP_Query( $args );
  3. while ( $loop->have_posts() ) : $loop->the_post();
  4. global $more;
  5. $more = 0;
  6. echo the_content('meeeeehr', TRUE);
  7. endwhile;
open sidebar