Jak odstranit entity ve zdrojovém kódu a v databázi

Základní instalace Prestashopu má spoustu nedostatků. Hlavním důležitým nedostatkem je špatné zobrazování znaků í,ě,š,č. Přináším 6 důležitých úprav aby se čeština zobrazovala správně.

1) Pro správné ukládání háčků, čárek do databáze u produktů zboží
admin/tabs/AdminProducts.php –> vyhledat „tinyMCE“ a vložit jako na obr. –>
entity_encoding:"raw"

2) pro správné ukládání háčků, čárek do databáze u CMS – editace stránek
admin/tabs/AdminCMS.php –> vyhledat „tinyMCE“ –>
entity_encoding:"raw"

3) pro správné ukládání háčků, čárek do databáze
admin/tabs/AdminManufactures.php –> vyhledat „tinyMCE“ –>
entity_encoding:"raw"

4) pro správné ukládání háčků, čarek do databáze u modulu „editorial“ – hlavní stránka
modules/editorial/editorial.php –> vyhledat „tinyMCE“ –>
entity_encoding:"raw"

Pro správné zobrazování znaků ve zdrojovém kódu e-shopu
5) /tools/smarty/plugins/modifier.escape.php cca řádek 28
zaměnit

case 'htmlall':
            return htmlentities($string, ENT_QUOTES, $char_set); 

za

case 'htmlall':
            return htmlspecialchars($string, ENT_QUOTES, $char_set); 

6) /classes/Tools.php cca řádek 343
ve funkci htmlentitiesUTF8() změnit

return htmlentities($string, $type, ‘utf-8’);

za

return htmlspecialchars($string, $type, ‘utf-8’);
Příspěvek byl publikován v rubrice Návody, rady, manuály. Můžete si uložit jeho odkaz mezi své oblíbené záložky.

45 komentářů u Jak odstranit entity ve zdrojovém kódu a v databázi

  1. peto napsal:

    Ja v subore /classes/Tools.php cca řádek 343
    nemam return htmlentities($string, ENT_QUOTES, ‘utf-8’);

    ale return htmlentities($string, $type, ‚utf-8‘);
    a nahradil som to za
    return htmlspecialchars($string, $type, ‚utf-8‘);

  2. Milan napsal:

    Zdravim,

    po uskutocneni tychto zmien sa mi znaky uz vypisuju normalne s diakritikou, ale ked chcem teraz editovat produkt, tak tam uz nemam ten „wordacky“ textovy editor a musim to pisat v tagoch. Neviete ako tam ten editor dostat naspat? dakujem.

  3. Body 1,2,3 napsal:

    Body 1,2,3 rozhází tinyMCE editor ! nelze psát jako ve wordu

    dálěe přes úpravy v bodech 4,5,6 zůstávají v kodu „chybně“ zobrazené entity

    konkrétně v

    body id=“index“
    div id=“header_user“
    div id=“special_block_right“ class=“block products_block exclusive blockspecials“
    div id=“newsletter_block_left“ class=“block“
    div id=“tags_block_left“ class=“block tags_block“
    div id=“cart_block“ class=“block exclusive“
    div id=“new-products_block_right“ class=“block products_block“
    div id=“best-sellers_block_right“ class=“block products_block“
    div id=“viewed-products_block_left“ class=“block products_block“
    div id=“footer“

  4. Jan Kašpar napsal:

    to peto: děkuji takto to bylo ve starší verzi, v 1.3 je to tak jak jste popsal, opraveno v článku.

    to Milan: samozřejmě musíte odřádkovat a oddělit čárkou. Pokud neuděláte zřejmě se nebude zobrazovat tinyMCE

    body 1,2,3 jsou správně napsané, otestováno, zřejmě neumíte do zdrojáku doplnit jeden řádek.

  5. Body 1,2,3 napsal:

    ok za další „špatně“ sezobarzující entity v divech

    body id=“index“
    div id=“header_user“
    div id=“special_block_right“ class=“block products_block exclusive blockspecials“
    div id=“newsletter_block_left“ class=“block“
    div id=“tags_block_left“ class=“block tags_block“
    div id=“cart_block“ class=“block exclusive“
    div id=“new-products_block_right“ class=“block products_block“
    div id=“best-sellers_block_right“ class=“block products_block“
    div id=“viewed-products_block_left“ class=“block products_block“
    div id=“footer“

  6. Re4DeR napsal:

    zajímavé, jakmile použiju tak white screen( i admin). nesetkal se s tím někdo?

  7. Re4DeR napsal:

    jakmile použiju 6. jinak ok

  8. Assramm napsal:

    Re4DeR: Jsem na tom podobně..taktéž bílo:o).

    Je zde nějaké řešení? Zajímalo by mě, co je špatně:o(

  9. Pepík napsal:

    Zkuste vymazat všechno aktuální v compile

  10. Assramm napsal:

    Měl bych dotaz – nesouvisející, moc by mi pomohlo, kdyby mi někdo poslal vypsaný .htaccess. Snažim se rozchodit SEO URL, ale pomocí generátoru v Prestě mi to nefunguje (generátor mi vypíše chybku ohledně prázdného .htaccess a chmod666 – obojí mám, ale stejně nefunguje)
    Moc děkuji za vaší reakci.

  11. Assramm napsal:

    Omlouvám se, už je to ok (jak CZ, tak .htaccess).

  12. Levout napsal:

    Děkuji za článek. Na 1.3.1. funguje.

  13. Vojta napsal:

    Díky 5,6 funguje bezva, ostatní nebylo potřeba, v 1.2.5.0

  14. peto napsal:

    oprav si tam apostrofy z ‘utf-8’ na ‚utf-8‘

    zmenit
    return htmlentities($string, $type, ‚utf-8‘);
    na
    return htmlspecialchars($string, $type, ‚utf-8‘);

  15. všechno ok mimo é napsal:

    dal jsem body 1-5, jinak whitedeath…
    a všechny znaky až na dlouhé é jsou ok…má někdo nějaký nápad?

  16. kubbos napsal:

    Vsehno je ok, verze: 1.3.2.3
    musite udelat vsehne body 1-6
    POZOR!, musite vlozit
    entity_encoding:“raw“, //////// – dodat „,“ u konce
    v tools php dodat:
    return htmlspecialchars($string, $type, ‚utf-8‘); ////////// [radek 358]

    potom pridejte nove zbozi do vaseho obchodu – uz to bude vam fungovalo

  17. peto napsal:

    + este v subore tools.php riadok 647

    najst:
    return htmlentities($string, $type, ‚utf-8‘);
    zmenit na
    return htmlspecialchars($string, $type, ‚utf-8‘)

  18. bradcrumb napsal:

    Tento postup je super. Všetko podla neho funguje až na text, ktorý sa zobrazuje v breadcrumb.tpl. Mal som to v 1.2.5 vyriešené a teraz mi to na 1.3.2 nefunguje. stále tam mám entity a neviem sa toho zbaviť. A hlavne si neviem spomenúť čo som vtedy zmenil aby sa to zobrazovalo bez entít. Neviete niekto poradiť ?

  19. Dano napsal:

    Tak už som sa k tomu dopracoval. V tools.php je toho treba zmeniť viac. Nie len riadok 647 ako píše peto, ale aj na riadkoch 358,641,660,661. Všade treba zameniť
    return htmlentities($string, $type, ‘utf-8′);
    za
    return htmlspecialchars($string, $type, ‘utf-8′);</b

  20. DaemonCZ napsal:

    Super. Všechno funkční. Díky moc!

  21. Překódování databáze napsal:

    Dobrý den, děkuji za skvělý tip. Ale bohužel už mám databázi plnou zboží. Nedalo by se databázi nějak překódovat? Prosím maličko poraďte…

    Předem moc díky 🙂

  22. Hatex napsal:

    Jen info k poslednímu dotazu. Po úpravě češtiny (viz. víše) stačí zboží otevřít pro editaci a opět zavřít. Tím se to opravý.

  23. verze 1.3.5 napsal:

    ve verzi 1.3.5 nejde najít ad1) ad2) ad3), máte někdo podobnou zkušenost?

  24. Malkus napsal:

    Zdravím,

    mám verzi eshopu 1.3.1.1 a zkoušel jsem si najít a opravit všechny entity, ale v souboru tools.php jsem narazil na nesrovnalosti toho co tu mluvíte, asi je to jiná verze.
    Neměl by někdo tento soubor počeštěný plně pro moji verzi?
    A zároveň co jsem viděl je problém i v emailu objednávky v poli komu.

    Kdyžtak kdo by měl tu možnost, napište mejla na info@darklord.cz
    Díky moc.

  25. peto napsal:

    nejako to nefunguje vo verzii 1.4.1

  26. peto napsal:

    nejako to nefunguje vo v1.4.1

  27. Viťa napsal:

    Taky bych se připojil k dotazu, je možné nějakým způsobem modifikovat úpravu na verzi 1.4.x (konkrétně aktuální 1.4.2.5) ? Děkuji

  28. Laky napsal:

    super diky na 1.3.2.3 funguje

  29. Manon.cz napsal:

    Pro ty, kteri taky bojuji se spatnym kodem v breadcrumbs. Je treba nahradit htmlentities za htmlspecialchars, a to hned 2x – na radku 781 a 782 ve verzi 1.4.0.17 nebo na radku 832 a 833 ve verzi 1.4.4.1. Jedna se o soucast kodu, ktery obsahuje „$nCategories = (int)sizeof($categories);“ (staci zadat do vyhledavani v editoru) – radky s htmlentities jsou hned pod.

  30. Jan Kašpar napsal:

    Ve verzi 1.4.x.x je již tinyMCE opravený, takže je potřeba opravit pouze body 5 a 6 + ještě řádek navíc.. ve verzi 1.4.7.0 je to u tools.php řádek 516 a 905..

  31. Jan Kašpar napsal:

    upravený files zde: http://prestashopcesky.cz/uploads/zdrojovy-kod-1-4-7.zip stačí pouze překopírovat na verzi 1.4.7

  32. Alma napsal:

    Potřebuji dostat diakritiku na stránku contact-form na verzi 1.4.4.1 Zkoušel jsem body 5. a 6. ale bez úspěchu. Fungujete na téhle verzi?

  33. Lacca napsal:

    Zkoušel jsem zkopírovat soubor od Jana a bez úspěchu 🙁
    Nevíte někdo co dál? Verzi mám 1.4.7.3 Díky

  34. Jan Kašpar napsal:

    Pro verzi 1.4.8.2 jsou files zde http://prestashopcesky.cz/uploads/zdrojovy-kod-1-4-8-2.zip

    provedené úpravy
    tools/smarty/plugins/modifier.escape.php
    — ř. 30 htmlall – htmlentities za htmlspecialchars
    ——————————————————————————
    tools/smarty_v2/plugins/modifier.escape.php
    — ř. 29 htmlall – htmlentities za htmlspecialchars
    ——————————————————————————
    classes/Tools.php
    — ř. 538 htmlentities za htmlspecialchars viz. return htmlspecialchars($string, $type, ‚utf-8‘);
    — ř. 927 htmlentities za htmlspecialchars viz. return htmlspecialchars($end, ENT_NOQUOTES, ‚UTF-8‘);

  35. Vacsvo napsal:

    Pane J.Kašpar, Vaše řešení mi bohužel nefunguje. Nevěděl by jste v čem jiným by mohl být problém? Sám nevím, na internetu jsem nevygooglil jiné řešení na 1.4.8.2. Docela zajímavý je, že jsem včera rozjížděl testovací webstránku na jiné doméně, na které čeština fungovala bez problému, dneska jsem to instaloval na správnou doménu, kde čeština zlobí. Na obě jsem použil stejný instalační balíček, běží mi na stejným hostingu. (ještě čekám na odezvu, zdali mám stejně nastavený kódování, předtím jsem na doméně měl wordpress který šlapal bez problémů (na eshop ovšem nedostatečně)). Děkuji za případné rady & tipy.

  36. Vacsvo napsal:

    Zjistil jsem si to sám. Obě databáze jsou stejně nastavené. uttf general ci

  37. simon napsal:

    dekuji zdvorile za funkcni navod na odstraneni entit ve zdrojaku. stacil bod 5 a 6 pouzivam presta 1.4.8.2

  38. Vlastik napsal:

    Nevěděl by jste někdo nastavení na verzi 1.4.9.0 ?
    Jak to bude u souboru: tools/smarty/plugins/modifier.escape.php
    Předem díky za rady
    Vasil

  39. Pavel Janáč napsal:

    Ahojte, toto by mě taky zajímalo. Nevíte někdo jestli je potřeba upravovat tento soubor
    ve verzi 1.4.9.0 ?
    tools/smarty/plugins/modifier.escape.php

    Prosím Vás o radu

  40. Cooler napsal:

    Nikdo netuší úpravu ve verzi 1.4.9.0 ??

  41. Roman napsal:

    Prestashop zatím nepoužívám, ale nebylo by jednodušší si jej otevřít třeba v pspadu a zadat prostě hromadné nahrazení htmlentities za htmlspecialchars. Soudě podle komentářů by to v novějších verzích mělo stačit.

  42. Marián napsal:

    Pane Kašpar,
    mohl by jste zveřejnit úpravu na správné zobrazování český znaků u Presty 1.4.9.0

    Díky Marián

  43. Sebestyan napsal:

    Standardni postup(1.5)

    —1. krok————-
    cache/class_index.php (edit)
    'Tools' => 'override/classes/Tools.php'

    —2. krok————-
    override/classes/Tools.php
    class Tools extends ToolsCore
    {
    public static function htmlentitiesUTF8($string, $type = ENT_QUOTES)
    {
    return $string;
    }
    }

    Keywords: class+override+prestashop

    .

  44. Ago napsal:

    Zdravím
    Nemáte prosím návod na opravu češtiny pro Prestashop 1.6.
    Zobrazuje se špatně popis při najetí na „Kategorie“ v zápatí stránky.
    V databázi je špatně uložen popis kategorií.
    Taká je špatně uložen popis a krátký popis produktu.
    Pokud se na importuje produkt je uložen v databázi dobře, ale při opětovném editování a uložení je v databázi již uložen špatně.
    Děkuji.

  45. Martin napsal:

    Ahoj,
    mám stejný problém s kodováním jako Ago po přechodu na 1.6 . Po několika hodinách hledání jsem celý obchod manuálně přeinstaloval a vše bylo ok dokud jsem nenahrál zpět zálohu databáze. Ta mi kodování opět rozhodila.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

This blog is kept spam free by WP-SpamFree.