Autor | Zpráva | ||
---|---|---|---|
bajola Profil |
#1 · Zasláno: 15. 8. 2013, 10:21:40
Ahoj,
používám pro „výňatky“ (excerpts) upravený kód ve functions.php, viz níže, díky kterému můžu přímo v šabloně určit, jakou bude mít výňatek délku (můžu mít různé délky na různých stránkách). Za výňatek se přidává trojtečka. Problém je, že trojtečka se přidává i tehdy, když výňatek nedosahuje požadované délky a navíc se někdy na konci výňatku objeví tento divný znak – � Potřebovala bych vyřešit, aby se trojtečka nedávala v případě, že excerpt nedosahuje celé délky + pořešit divný znak. Zná někdo řešení? Předem díky <?php function get_excerpt($count){ $permalink = get_permalink($post->ID); $excerpt = get_the_content(); $excerpt = strip_tags($excerpt); $excerpt = substr($excerpt, 0, $count); $excerpt = $excerpt.'…'; return $excerpt; } ?> V šabloně se pak použije: <?php echo get_excerpt(220); ?> |
||
PostCC Profil |
bajola:
Ty "divné znaky" jsou pozůstatky rozdělení v místě vícebajtového znaku, typicky diakritiky. Znak, který je zapsán více bajty prostě "roztrhnete" uprostřed a zůstane pouze první z bajtů, interpetovaný následně jako nesmyslný znak. Doporučuji funkci: substr($excerpt, 0, $count); nahradit její bezpečnou variantou: MB_SubStr($excerpt, 0, $count); A řádek: $excerpt = $excerpt.'…'; upravit na: $excerpt .= MB_StrLen($excerpt) > $count ? "…" : ""; EDIT: ... což nebude dávat smysl, protože porovnáváte délku již upraveného řetězce :-) Občas je potřeba si to po sobě přečíst. Nejlépe tedy něco jako: function get_excerpt($count){ $permalink = get_permalink($post->ID); $excerpt = get_the_content(); $excerpt = strip_tags($excerpt); $OrigLength = MB_StrLen($excerpt); MB_SubStr($excerpt, 0, $count); $excerpt .= $OrigLength > $count ? "…" : ""; return $excerpt; } |
||
bajola Profil |
#3 · Zasláno: 15. 8. 2013, 12:18:50
Diky za rychlou reakci. Trojtecka uz se nepridava ke kratkym textum, mozna se vyresil i divny znak (jeste nevim zcela jiste), ale cela ta funkcnost ted nefunguje (nedela to zkracene vynatky, vypisuje se cely prispevek).
|
||
PostCC Profil |
#4 · Zasláno: 15. 8. 2013, 12:26:27
bajola:
No jo, protože dvakrát měř, jednou řež... Chyba je v tomhle řádku: $excerpt = MB_SubStr($excerpt, 0, $count); |
||
bajola Profil |
#5 · Zasláno: 15. 8. 2013, 12:39:21
Bezva, už to funguje, díky!
|
||
Časová prodleva: 2 roky
|
|||
helf Profil |
Dobrý den,
řeším podobný problém jako bajola. Potřebovala bych, aby se u příspěvků kratších než je nastavený limit pro excerpts nevkládal nakonec znak pro výňatek (v mém případě trojtečka). Používám plugin advanced-excerpt.4.2.3, který mi umožnuje zobrazovat v excerptu i obrázky či odkazy a nastavit si vlastní délku výňatku. Předem moc díky |
||
Časová prodleva: 8 let
|
0