PHP

Problem: Auf einer Kundenseite war auf den meisten Seiten im Footer des Themes die Übersetzung von Strings mittels WPML String translation und

1
_e('der Text der übersetzt wird', 'Sprachdomain')

in der richtigen Sprache sichtbar. Auf einigen wenigen Seiten war nur der deutsche String sichtbar, die Übersetzung in französisch funktionierte dort nicht. Die Tips aus den WPML-Foren halfen allesamt nicht, Stichwort „Look for strings while pages are rendered“ auf der String Translation Seite, bewirkte zwar das gewünschte Ergebnis, ist aber nur eine temporäre Lösung. Bei weiteren Recherchen fand ich heraus, dass das Problem nur auftrat, wenn das Plugin Contact Form 7 installiert ist.

Lösung:

Das Plugin Contact Form 7 Multilingual muss installiert und aktiviert sein, nur so wird der richtige String ausgegeben. Keine Ahnung warum ich damals diesen Plugin nicht verwendet habe, nach dem Aktivieren desselben funktioniert nun alles wie erwartet.

Manchmal möchte man eine Landingpage der eigentlichen Webseite vorschalten, damit Besucher nicht den Passwortschutz oder die Baustelle der Webseite sehen. Somit wird beim Aufruf der Seite direkt index.html aufgerufen, durch Anhängen von index.php an die URL kann die WordPress Seite angezeigt werden.

Eigentlich sehr einfach machbar in dem File .htaccess:

1
DirectoryIndex index.html index.php

ABER: WordPress ignoriert dies, darum im functions.php des Themes folgende Zeile einfügen:

1
remove_filter('template_redirect', 'redirect_canonical');

Anschliessend Browser-Cache löschen und neu laden.

Menü mit aufklappbarer Suche

Immer wieder benötigt: Ein Such-Icon am Ende der horizontalen Navigation, welches sich auf Klick öffnet/schliesst.

Bearbeitet werden 3 Dateien: functions.php, searchform.php (falls vorhanden, ansonsten neu anlegen) und style.css (oder das jeweilige Stylesheet).

functions.php

Fügt am Ende des Hauptmenüs einen zusätzlichen Menüpunkt mit der Suche ein.

1
2
3
4
5
6
7
8
9
function fb_add_search_box ( $items, $args ) {
 
       // only on primary menu (or your menu-name)
       if( 'main-nav' === $args -> theme_location )
             $items .= '<li class="menu-item menu-item-search">' . get_search_form( FALSE ) . '</li>';
 
       return $items;
 }
 add_filter( 'wp_nav_menu_items', 'fb_add_search_box', 10, 2 );

searchform.php

Angepasstes Suchfeld.

1
2
3
4
5
6
<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
	<label>
	<input type="submit" class="search-submit button" value="<?php echo esc_attr_x( 'Search', 'yourtheme' ) ?>" />
		<input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Suchen...', 'yourtheme' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'yourtheme' ) ?>" />
	</label>
</form>

style.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
.menu-item-search .search-field {
	background-color: transparent;
	background-image: url(../images/lupe.svg);
	background-position: 5px center;
	background-repeat: no-repeat;
	background-size: 24px 24px;
	border: none;
	cursor: pointer;
	height: 37px;
	margin: 3px 0;
	padding: 0 0 0 34px;
	position: relative;
	-webkit-transition: width 400ms ease, background 400ms ease;
	transition:         width 400ms ease, background 400ms ease;
	width: 0;
}
 
.menu-item-search .search-field:focus {
	background-color: #fff;
	border: 1px solid #32B561;
	cursor: text;
	outline: 0;
	width: 200px;
}
.search-form
.search-submit { 
display:none;
}

Zusammengestellt aus folgenden Quellen:

Wieder einmal ein leidiges RealUrl Problem: Eine Multidomain-Seite funktionierte prinzipiell prächtig, nur bei fehlerhaften Einloggen oder beim Ausloggen der Fe-User trat das lästige „Segment 1 was not a keyword for a postVarSet as expected“ auf. Felogin ohne RealUrl funktionierte jedoch anstandslos.

Lösung:

In der RealUrl-Config fehlte in der Sektion init der Wert

1
'postVarSet_failureMode' => ' '

Nachdem Einfügen dieses Wertes funktioniert nun alles wie gewünscht.

Ab und zu benötigen wir mehr als nur das Standard-RTE Feld im Backend von wordPress. Das Plugin Multiple Content Blocks ist eine einfache Möglichkeit mehrere Inhaltsblock pro Template zu erstellen.

An gewünschter Stelle wird lediglich

1
the_block(' Label des Blocks ');

eingefügt.

Wenn nach dem Einfügen der neue Block im Backend nicht gezeigt wird,  reicht es die entsprechende Seite einmal im Frontend aufzurufen. Dann erscheint der Block auch im Backend.

Bei einer TYPO3 4.7.4 Installation funktionierte der Crawler für die Indexed Search nicht, es gab folgenden Error:

Fatal error: Call to undefined method t3lib_div::view_array() in /yourPath/typo3conf/ext/crawler/class.tx_crawler_lib.php on line 1731

Nach etwas recherchieren und Hilfe von Freund sushie.net half ein ersetzen der Funktion

1
 t3lib_div::print_array()

durch

1
t3lib_utility_Debug::viewArray

im file class.tx_crawler_lib.php in Zeile 1731