• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Помогите с настройкой плагина Wordpress

Статус
В этой теме нельзя размещать новые ответы.

Деймос

Гуру форума
Регистрация
29 Ноя 2008
Сообщения
192
Реакции
55
Есть плагин 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(']]>', ']]&gt;', $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", который обрезает текст либо по абзацу либо по числу символов, это как ты укажишь в опциях. Плагин русифицирован, нстроек минимум, но есть все что нужно.
 
Это что еще за плагин такой.. Обычно все используют плагин "automore", который обрезает текст либо по абзацу либо по числу символов, это как ты укажишь в опциях. Плагин русифицирован, нстроек минимум, но есть все что нужно.
плагин "automore" нужен для разбивки поста на страницы, этот же плагин нужен например для вывода заголовков и описаний в конкретных местах с нужным тебе размером.

joefast написал(а):
Использовать mb_strlen вместо strlen и mb_strpos вместо strpos. На хостинге должно стоять соответствующее расширение для пхп.
Не помогло, ситуация не изменилась, есть еще варианты? В шаблоне это выводится так:

Код:
<a href="<?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 спасибо конечно, но это не совсем то что надо, надо именно по символам, т.к. кое где в дизайне сайта обрезания по словам просто не подойдет. Знаю что не очень правильно, но в целом скажу что получается красиво и кликабельно) Так что до сих пор продолжаю искать способ чтобы русская буква считалась за один символ)
 
  • Заблокирован
  • #7
...Так что до сих пор продолжаю искать способ чтобы русская буква считалась за один символ)

В функциях mb_strlen и mb_strpos последним параметром нужно указывать кодировку, в которой представлен текст. Что-то вроде:
PHP:
echo mb_strlen("Зеленый", "UTF-8");
echo mb_strpos("Зеленый", "ы", 0,  "UTF-8");

2 MBH, обратите внимание на функцию strip_tags ;)
 
2 MBH, обратите внимание на функцию strip_tags ;)

Да знаю я её, но что-то она у меня не корректно на тот момент работала. Поэтому лёгким движением регулярки я их чищу, а вообще там ведь общая функция, она вообще чистит контент, приводя его в простой текст, без лишних пробелов и прочей херни.

p.s. А вообще спасибо :) Люблю заботу :D
 
<a href="<?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 должно стоять?

azzepis написал(а):
у меня была проблема с этой функцией - 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(']]>', ']]&gt;', $content);
    $content = strip_tags($content);

   if ([B]mb_strlen[/B]($_GET['p']) > 0) {
      echo "<p>";
      echo $content;
      echo "</p>";
   }
   else if (([B]mb_strlen[/B]($content)>$max_char) && ($espacio = [B]mb_strpos[/B]($content, " ", $max_char ))) {
        $content = substr($content, 0, $espacio);
        $content = $content;
        echo "<p>";
        echo $content;
        echo "...";
        echo "</p>";
   }
   else {
      echo "<p>";
      echo $content;
      echo "</p>";
   }
}

?>
или еще что то дописали - поменяли?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху