
Главная /SiteBuild/Scripts/Wordpress/ Помогите с настройкой плагина Wordpress
Есть плагин Limit Posts который режет пост по нужному количеству символов, проблема в том что он русские буквы воспринимает как не за один символ (за два или три), можно что нибудь сделать? Т.е. не он правильно обрезает текст. Вот код плагина: <?php function the_content_limit($max_char, $more_link_text = '(...)', $stripteaser = 0, $more_file = '') { $content = get_the_content($more_link_text, $stripteaser, $more_file); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); $content = strip_tags($content); if (strlen($_GET['p']) > 0) { echo "<p>"; echo $content; echo "</p>"; } else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) { $content = substr($content, 0, $espacio); $content = $content; echo "<p>"; echo $content; echo "..."; echo "</p>"; } else { echo "<p>"; echo $content; echo "</p>"; } } ?> Заранее спасибо!
Это что еще за плагин такой.. Обычно все используют плагин "automore", который обрезает текст либо по абзацу либо по числу символов, это как ты укажишь в опциях. Плагин русифицирован, нстроек минимум, но есть все что нужно.
Использовать mb_strlen вместо strlen и mb_strpos вместо strpos. На хостинге должно стоять соответствующее расширение для пхп.
Это что еще за плагин такой.. Обычно все используют плагин "automore", который обрезает текст либо по абзацу либо по числу символов, это как ты укажишь в опциях. Плагин русифицирован, нстроек минимум, но есть все что нужно. плагин "automore" нужен для разбивки поста на страницы, этот же плагин нужен например для вывода заголовков и описаний в конкретных местах с нужным тебе размером. Использовать mb_strlen вместо strlen и mb_strpos вместо strpos. На хостинге должно стоять соответствующее расширение для пхп. Не помогло, ситуация не изменилась, есть еще варианты? В шаблоне это выводится так: <a "<?php the_permalink() ?>"><?php the_title2('', '...', true, '40') ?></a> <?php the_content_limit(100, ""); ?>
Я не стал разбираться, что там, да как... просто полез в свой один плагинец и нашёл пару функций. На их основе я считаю можно сделать легко, то, что ты хочешь: // функция формирования нужного количества слов function words($text, $dl) { $arr = explode(" ", $text); $count_arr = count($arr); $out =""; if ($dl > $count_arr) $dl2 = $count_arr; else $dl2 = $dl; for ($i = 0; $i<$dl2; $i++) $out .= $arr[$i]." "; if ($dl2 != $count_arr) $out .= "..."; return ($out); } // функция убивания тегов HTML function del_tags($data) { $data = preg_replace("/<.*?>/ms","",$data); $data = str_replace("\n"," ",$data); $data = str_replace("\r"," ",$data); $data = str_replace("*"," ",$data); // здесь замена какогото странного пробела. $data = str_replace(" "," ",$data); return $data; } Просто я считаю, как-то некрасиво делить по символам, а по словам самое то... Ну а убивание тегов, это чтобы не было глюков в отображении. Надеюсь помог.
MBH спасибо конечно, но это не совсем то что надо, надо именно по символам, т.к. кое где в дизайне сайта обрезания по словам просто не подойдет. Знаю что не очень правильно, но в целом скажу что получается красиво и кликабельно) Так что до сих пор продолжаю искать способ чтобы русская буква считалась за один символ)
...Так что до сих пор продолжаю искать способ чтобы русская буква считалась за один символ) В функциях mb_strlen и mb_strpos последним параметром нужно указывать кодировку, в которой представлен текст. Что-то вроде: echo mb_strlen("Зеленый", "UTF-8"); echo mb_strpos("Зеленый", "ы", 0, "UTF-8"); 2 MBH, обратите внимание на функцию strip_tags ;)
2 MBH, обратите внимание на функцию strip_tags ;) Да знаю я её, но что-то она у меня не корректно на тот момент работала. Поэтому лёгким движением регулярки я их чищу, а вообще там ведь общая функция, она вообще чистит контент, приводя его в простой текст, без лишних пробелов и прочей херни. p.s. А вообще спасибо :) Люблю заботу :D
<a "<?php the_permalink() ?>"><?php the_title2('', '...', true, '40') ?></a> <?php the_content_limit(100, ""); ?>у меня была проблема с этой функцией - the_title2 в ней надо заменить substr на mb_substr мне помогло
Использовать mb_strlen вместо strlen и mb_strpos вместо strpos. На хостинге должно стоять соответствующее расширение для пхп. Сегодня переехал на другой хостинг (VDS) дак появилась ошибка mb_strlen () - подскажите какое расширение для php должно стоять? у меня была проблема с этой функцией - the_title2 в ней надо заменить substr на mb_substr Вы просто в коде сделали так: <?php function the_content_limit($max_char, $more_link_text = '(...)', $stripteaser = 0, $more_file = '') { $content = get_the_content($more_link_text, $stripteaser, $more_file); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); $content = strip_tags($content); if (mb_strlen($_GET['p']) > 0) { echo "<p>"; echo $content; echo "</p>"; } else if ((mb_strlen($content)>$max_char) && ($espacio = mb_strpos($content, " ", $max_char ))) { $content = substr($content, 0, $espacio); $content = $content; echo "<p>"; echo $content; echo "..."; echo "</p>"; } else { echo "<p>"; echo $content; echo "</p>"; } } ?> или еще что то дописали - поменяли?
я просто добавил mb_ но на хостинге должно быть установлено расширение, чтоб новая функция работала
я просто добавил mb_ но на хостинге должно быть установлено расширение, чтоб новая функция работала Какое расширение не подскажите?
Какое расширение не подскажите? расширение php_mbstring.dll. Надо его скопировать в папку \usr\local\Php\PECL. Взять dll можно в полном пакете PHP на офф сайте. Потом в php.ini раскоментировать строку "extension=php_mbstring.dll" и перезапустить Apache. функция сабстр применима к однобайтовым кодировкам, мб_сабстр (http://www.google.com/search?hl=ru&q=mb_substr&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=) - к многобайтовым, что и позволяет часто избежать проблем при работе со строками русского текста. P.S. есть такой ещё вариант: Проблема заключается в том, что в PHP 5.2.6 функции mb_substr() и substr() некорректно вырезают часть данных, если эти данные имеют хоть один символ кириллицы, не закодированный в UTF8. Из-за этого этими функциями невозможно вырезать нужный кусок из бинарных данных. Этого бага нет в версии PHP 5.2.5 и 4.4.1
Помогите с настройкой плагина Wordpress
Накладки на пороги в салоне в королле!
Такси....Сколько авто снималось?
ЧР. Прогноз на 9-й тур
Команда разработчиков IkonBoard ушла из Jarvis EG.
Загорается лампочка двигателя
Что за скин? и где найти?
Ищется книжка о способах решения головоломок
Вышел Wordpress 2.7.1 beta
Сборка WordPress
Нужны ТМ 11037 и 11476 (воздушные шарики, праздники, подарки) или подобные
[NWS]Каталог рипов
пак шаблонов от Templateplazza
Keeper Classic 3.6.0.6
Компонент по недвижимости, для Joomla 1.5.x (требуется)
helvetica.spiritstyle.ru
Amazing SS Mix global images (растровый клипарт)
www.astrakhan.ru
Интернет-магазин с мастер-подбором?
IKEA Home Planner v2009:1 + Bonus
jForce Suite v1.5.6 RC2 !J1.5 (TKT)
Куда можно скидывать email адреса негодяев?
board - drom - sexnarod - nulled
Архивы форумов - forum-arch.su
RuBoard