Mar
8
2012

Jak naprawić błąd w qTranslate związany z usuwaniem formatowania <p> oraz <br>?

Kilka dni temu zgłosił się do nas jeden z klientów z dość dziwnym problemem. Okazało się, że podczas zapisywania edytowanych wpisów traci część formatowania. Co ciekawe kilka dni później podobny problem pojawił się na forum Fani WordPressa (GoldenLine).

Sprawa dotyczyła w zasadzie jedynie: zakończenia paragrafów <p> oraz pustych linii <br />.

Po krótkim badaniu okazało się, że za problemy odpowiada popularna wtyczka qTranslate (służąca do wprowadzania wielojęzyczności w serwisach opartych na WordPressie).

Istnieje jednak dość proste rozwiązanie, które odnalazłem na forum użytkowników qTranslate.

Należy wyedytować plik qtranslate_wphacks.php znajdujący się w katalogu głównym wtyczki qTranslate.

W pliku tym odnajdujemy fragment rozpoczynający się komentarzem:
// do some crazy js to alter the admin view” (linia nr 89)

i kończący się komentarzem
// insert language, visual and html buttons” (linia nr 106).

Powinien wyglądać on jak poniżej:

	// do some crazy js to alter the admin view
	$content .="\n// <![CDATA[\n";
	$content .="function qtrans_editorInit1() {\n";

	// include needed js functions
	$content .= $q_config['js']['qtrans_is_array'];
	$content .= $q_config['js']['qtrans_xsplit'];
	$content .= $q_config['js']['qtrans_split'];
	$content .= $q_config['js']['qtrans_integrate'];
	$content .= $q_config['js']['qtrans_use'];
	$content .= $q_config['js']['qtrans_switch'];
	$content .= $q_config['js']['qtrans_assign'];
	$content .= $q_config['js']['qtrans_save'];
	$content .= $q_config['js']['qtrans_integrate_title'];
	$content .= $q_config['js']['qtrans_get_active_language'];
	$content .= $q_config['js']['qtrans_hook_on_tinyMCE'];

	// insert language, visual and html buttons

Tutaj musimy trochę pomieszać, aby w efekcie otrzymać następujący wynik:

        // do some crazy js to alter the admin view
	$content .="\n// <![CDATA[\n";

	// Deklarujemy funkcje globalne uzywane w roznych miejscach
	$content .= $q_config['js']['qtrans_xsplit'];
 	$content .= $q_config['js']['qtrans_is_array'];
 	$content .= $q_config['js']['qtrans_split'];
 	$content .= $q_config['js']['qtrans_integrate'];

	// Dodajemy prywatne funkcje, ktore wczesnie byly na poczatku
	$content .="function qtrans_editorInit1() {\n";

	// include needed js functions
	$content .= $q_config['js']['qtrans_use'];
	$content .= $q_config['js']['qtrans_switch'];
	$content .= $q_config['js']['qtrans_assign'];
	$content .= $q_config['js']['qtrans_save'];
	$content .= $q_config['js']['qtrans_integrate_title'];
	$content .= $q_config['js']['qtrans_get_active_language'];
	$content .= $q_config['js']['qtrans_hook_on_tinyMCE'];

	// insert language, visual and html buttons

Potem oczywiście nadpisujemy oryginalny plik i wszystko powinno być już OK!

Czy też spotkaliście się z podobnym problemem? A może znacie inne rozwiązanie?

Powiązane wpisy

O autorze: Jakub Milczarek

Miłośnik wszystkiego co związane ze sprawami użyteczności, a także specjalista z dziedziny fizykochemii kryminalistycznej. Stronami internetowymi zajmuje się od 1997 roku, a z samym WordPressem zaprzyjaźnił się już w 2007 roku. Miał zaszczyt być szefem organizacji pierwszego polskiego WordCampu w 2010 roku, a w latach 2010-2012 prowadził z sukcesami firmę WP-Expert. Obecnie pracuje jako UX Specialist w OnTheGoSystems. W wolnych chwilach zdobywa Koronę Europy, poszukuje skrzynek OpenCaching i bloguje jako Lodzermensch.

3 komentarze + Dodaj komentarz

  • do mnie tez ten klient zglaszal sie z tym pytaniem ;) jako ze nie moglem pomoc z braku czasu, odeslalem go wlasnie na GL

    • Ale u mnie to był początkowo inny klient – „własny” :)

  • mozna jeszcze dopisac cos takiego w functions.php twojego theme:
    function cbnet_tinymce_config( $init ) {

    // Don’t remove line breaks
    $init[‚remove_linebreaks’] = false;
    // Convert newline characters to BR tags
    $init[‚convert_newlines_to_brs’] = true;
    // Do not remove redundant BR tags
    $init[‚remove_redundant_brs’] = false;

    // Pass $init back to WordPress
    return $init;
    }
    add_filter(‚tiny_mce_before_init’, ‚cbnet_tinymce_config’);

Uwaga, leci reklama:



Gdzie nas czytać?

Autorzy »
Komentujący »
#wpzlecenia »