Každou chvíli mi píšete o radu, jak udělat to či ono v Textpatternu. Toto je tedy první díl seriálu, ve kterém postupně popíši, jak jsem implementoval Textpattern zde na Sově a na webu Vyhledávače.info. Ale pozor! Textpattern používám sotva měsíc a PHP vůbec neumím. Nečekejte proto kvalitní návod, nýbrž prostý záznam mých pokusů (v lepších případech) a omylů (v případech ostatních).
Nejčastější dotaz zní, jak se zbavit HTML entit, které Textpattern generuje místo některých českých znaků s diakritikou. Ve skutečnosti tyto entity negeneruje přímo Textpattern, nýbrž jeho editační modul Textile. Zde jsem také tuto vlastnost změnil. Můžete mne napodobit takto:
1. V adresáři textile/lib/ si najděte soubor classTextile.php a otevřete ho vhodným textovým editorem.
2. Na řádku 679 byste měli mít toto:
htmlentities($text, ENT_NOQUOTES, "utf-8");
Přepište to tímto:
htmlspecialchars($text, ENT_NOQUOTES, "utf-8");
3. Soubor uložte, uploadujte a je hotovo. Vlastně není. Textile entity generuje už při zápisu do databáze. Pokud se jich chcete zbavit i ve starších článcích (nemělo by to být nezbytné), musíte je znovu uložit talčítkem Publish.
Textile má s češtinou i další problém. Značky pro důraz (_) a silný důraz () nefungují, pokud vyznačený text začíná nebo končí písmenem s diakritikou. Slovo *důrazný proto vidíte s hězdičkami a ne správně takto: důrazný. To zatím opravit neumím a řeším to ručním psaním značek <em> a <strong>.
Možná někdo z vás nějaký trik najde a v tom případě budu rád, podílete-li se s námi o něj v komentářích.
« MSN v CSS | Nejnovější | Firefox je hezký ale líný »
Commenting is closed for this article.
Textile je totiz plne regularnich vyrazu ktere hojne pouzivaji vyrazy typu \w, coz napr. znamena “jakykoliv slovni znak”.
Pokud budeme mit LOCALE nastaveno na anglicky mluvici zeme, nase specificke znaky jako treba č,ý,ř jsou pak pro regularni vyraz neslovni znaky a tudiz dojde k chybnemu zpracovani retezcu.
Resenim je nastavit pred volanim Textile fci LOCALE specificke pro nase oblasti, napr:
setlocale(LC_ALL, 'cs');Pokud pak zavolate metodu
TextileThis, mela by uz spravne interpretovat Vami uvadeny priklad.Uf. Doufam ze jsem to nepopsal moc zmatene. Za pripadne nepresnosti se omlouvam…
— Kopyto · 7674 days ago · #
setlocale(LC_ALL, 'cs_CS.UTF-8');Je to však trochu záludné a občas to môže spôsobiť problémy, vid komentáre k funkcii setlocale
— Ondrej Ivanič · 7674 days ago · #
— xxx · 7674 days ago · #
$returnString = preg_replace('/(\s+)\*(\S.*?)\*/', "\\1[strong]\\2[/strong]", $returnString);(bílý znak, potom hvězdička, potom znak, potom cokoliv až do další hvězdičky) Funguje to spolehlivě.
P.S. V tom preg_replace mám samozřejmě normální HTML tagy strong, jen tady na Sově jsem použil [strong], protože i v rámci kódu jsou HTML tagy vynechány (což by neměly).
— NeNe · 7674 days ago · #
Nene: Podle manuálu funkce regulárních výrazů podporují pouze jednobajtová kódován…
Neresi to modifikator \u (PCRE_UTF8)?
— Kopyto · 7674 days ago · #
— Kopyto · 7674 days ago · #
Podobné problémy ale nemá jen Textpattern, ale i WordPress a další, pro lidi neznalé je proto mnohem lepší použít BLOG:CMS, který jede v UTF-8, a veškeré komponenty tam fungují zcela korektně s češtinou…
— Radek Hulán · 7673 days ago · #
Muzu se zeptat, kde je teda ten problem?
Ja TextPattern taky neznam, ale kdyz jsem se dival do zdrojaku, tak je delany taky v UTF-8.
— Kopyto · 7673 days ago · #
Týká se to metody span()—řádek 487:
$text = preg_replace_callback("/
(?<=^|\s|[[:punct:]]|[{([])
($f)
($this->c)
(?::(\S+))?
([\S<&].*[\S]) # Zde upraveno
([[:punct:];]*)
$f
(?=[])}]|[[:punct:]]+|\s|$)
/xmU", array(&$this, "fSpan"), $text);
Co se týče entit, proč jednoduše nezakomentovat volání encodeEntities() v hlavní metodě textileThis()—o typografické jemnosti jako — se stejně stará metoda glyph()—, tj. řádek 220-221:
//$text = $this->incomingEntities($text);
//$text = $this->encodeEntities($text);
— karmi · 7673 days ago · #
Konkrétně jsem na to narazil třeba u CMS Pivot nebo v jednom návodu na ONLamp.
— llook · 7673 days ago · #
A po dalsich dvaceti minutach jsem prisel na nasledujici:
Mam nastavene clean URL mode – to jest, ze v url je defacto obsazeny title clanku a pokud se v nem objevi znak s cestinou, tak se nejak prevede na otaznik a potom jsou ve zdrojaku paznaky, pokud title ten otaznik neobsahuje, tak tam paznaky nejsou… no to jsem z toho jelen, muze mi to nekdo vysvetlit?
A druha vec, da se nejak automaticky vytvaret ta userfriendly adresa? Tedy aby to z “Název článku” udelalo “nazev-clanku” – tedy nahradilo ceske znaky a mezery, tedy abych to nemusel vsechno delat rucne… poradite?
Testovaci system mi bezi na http://petr.vaclavek.com
— Petr Vaclavek · 7668 days ago · #
— Marek Prokop · 7668 days ago · #
— Petr Vaclavek · 7667 days ago · #
Lenze ja nevidim nikde miesto, kde to urobit (som TP-lama, sorry) – kde rucne napisat to title, vo WordPresse na to bola kolonka, tu ju nevidim. Pri pisani clanku mam iba kolonku pre nazov. Neviete mi poradit, prosim?
— TOmáš Ulej · 7518 days ago · #
Máte-li zájem, pak na http://ivorius.com/textpattern/ je textpattern rc 3 v češtině a s integrovaým texy. Dále pak také návod na zprovoznění, správu a instalaci textpatternu
— Ivorius · 7509 days ago · #