cryptex

Рейтинг
14
Регистрация
20.05.2011

ну а в чём проблема? обычная тема из репозитория, и вот блог автора

в примере немного перепиленная, но и вы тоже можете сами изменить под себя...

Hixon10:
P.S. Поставил wordpress-popular-posts.2.1.4, обновил timthumb, плагин заработал. Пойду его встраивать в верстку.

недавно кому-то его переписывал под юникод, там просто суть в том, что он не считает хиты по постам, если кликает залогиненный юзер (админ, редактор и т.д.) можно выйти из ВП, покликать по постам и всё ок. Если нужна юникод версия, вот код:


function truncate($text, $length = 100, $ending = '...', $exact = true, $considerHtml = false) {
if ($considerHtml) {
// if the plain text is shorter than the maximum length, return the whole text
if (mb_strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
return $text;
}
// splits all html-tags to scanable lines
preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER);
$total_length = mb_strlen($ending);
$open_tags = array();
$truncate = '';
foreach ($lines as $line_matchings) {
// if there is any html-tag in this line, handle it and add it (uncounted) to the output
if (!empty($line_matchings[1])) {
// if it's an "empty element" with or without xhtml-conform closing slash (f.e. <br/>)
if (preg_match('/^<(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)>$/is', $line_matchings[1])) {
// do nothing
// if tag is a closing tag (f.e. </b>)
} else if (preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $line_matchings[1], $tag_matchings)) {
// delete tag from $open_tags list
$pos = array_search($tag_matchings[1], $open_tags);
if ($pos !== false) {
unset($open_tags[$pos]);
}
// if tag is an opening tag (f.e. <b>)
} else if (preg_match('/^<\s*([^\s>!]+).*?>$/s', $line_matchings[1], $tag_matchings)) {
// add tag to the beginning of $open_tags list
array_unshift($open_tags, strtolower($tag_matchings[1]));
}
// add html-tag to $truncate'd text
$truncate .= $line_matchings[1];
}
// calculate the length of the plain text part of the line; handle entities as one character
$content_length = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|***[0-9]{1,7};|***x[0-9a-f]{1,6};/i', ' ', $line_matchings[2]));
if ($total_length+$content_length> $length) {
// the number of characters which are left
$left = $length - $total_length;
$entities_length = 0;
// search for html entities
if (preg_match_all('/&[0-9a-z]{2,8};|***[0-9]{1,7};|***x[0-9a-f]{1,6};/i', $line_matchings[2], $entities, PREG_OFFSET_CAPTURE)) {
// calculate the real length of all entities in the legal range
foreach ($entities[0] as $entity) {
if ($entity[1]+1-$entities_length <= $left) {
$left--;
$entities_length += mb_strlen($entity[0]);
} else {
// no more characters left
break;
}
}
}
$truncate .= mb_substr($line_matchings[2], 0, $left+$entities_length);
// maximum lenght is reached, so get off the loop
break;
} else {
$truncate .= $line_matchings[2];
$total_length += $content_length;
}
// if the maximum length is reached, get off the loop
if($total_length>= $length) {
break;
}
}
} else {
if (mb_strlen($text) <= $length) {
return $text;
} else {
$truncate = mb_substr($text, 0, $length - mb_strlen($ending));
}
}
// if the words shouldn't be cut in the middle...
if (!$exact) {
// ...search the last occurance of a space...
$spacepos = mb_strrpos($truncate, ' ');
if (isset($spacepos)) {
// ...and cut the text in this position
$truncate = mb_substr($truncate, 0, $spacepos);
}
}
// add the defined ending to the text
$truncate .= $ending;
if($considerHtml) {
// close all unclosed html-tags
foreach ($open_tags as $tag) {
$truncate .= '</' . $tag . '>';
}
}
return $truncate;
}

то есть, меняем ф-цию truncate в файле wordpress-popular-posts.php на эту (эт для версии 2.1.5, просто я для этой переделывал, чем отличается 2.1.4 и 2.1.5 я честно сказать не интересовался, но эта ф-ция походу копипаст из другого исходника, о чём автор плагина явно и говорит в комментах, так думаю, должно работать). Если меняете код, то тогда это нужно делать после каждого обновления плагина, поэтому, я просто его форкнул. Отличии юникод версии от обычной - при указании кол-ва символов из тайтла и поста просто умножаете на 2 для не юникод версии (т.е. хотите 20 символов в тайтле поста - пишите 40), и второй недостаток не юникод версии - некоторые баги, если совместно используете плагин wp post rating (там юникод символ, состоящий из 2х байтов, обрезается как ascii и берётся только первый байт, из-за чего, в месте обрезки появляются всякий мусор, типа знак вопроса и прочие из ascii - chr того байта, который отрезали от юникод символа ;)

если вам просто хочется вести свой блог, воспользуйтесь любым бесплатным блогохостом, благо их сотни, например http://blog.ru/, http://wordpress.com/, http://www.livejournal.com/ и т.д.

ТС, вы настолько ошиблись разделом, что даже не смешно :facepalm:

5LJRRP:
Например? Любопытно

например фриланс ) но он не является пассивным заработком и отбирает полностью всё время, и даже за пивом выйти не всегда представляется возможным, но с другой стороны, даёт развиваться именно профессионально, и не зависеть от того, что курят в гугле

по сабжу: что б не делать очередную тему, замечу, что подумываю и сам о том, что бы пойти кому-либо в рефы при следующих условиях: я сам программер, верстальщик админ и т.д. но времени именно на СЕО анализ текущих суровых реалей в привязке к дорвеям, у меня нет, поэтому могу взять на себя техническую реализацию чего-либо. То есть, "рефовод" говорит, что нужно делать, я делаю, там от написания платника, до кароч пофиг чего, кароч он рулит, я делаю. Профит обсуждается.

кому интересно, просьба писать только в личку, так же, отвечу только людям с репой, и кто по моему мнению не потратит в пустую моё время на работу.

зы: к подобным рефоводским соглашениям, могу приступить не сразу, сейчас есть много другой работы примерно на полторы-две недели, сейчас просто предлагается предварительно списаться.

зыы: в дорах много лет, но сейчас, всё что я знал, утратило свою актуальность, начинать заново нет времени, удовлетворюсь просто ролью реализатора и пассивным доходом

зыыы: с ломом и явным нелегалом (в любых проявлениях) не работаю.

ну а что вас так удивляет то ?)

самопис как самопис, немного кривоватый правда, но зато на ExtJS )

tradeinvestor:
Будет ли ВП держать 6-7 тыс. просмотров в сутки

разумеется будет, в самом ВП никакого ограничения на количество посетителей не имеется, здесь уже вопрос к вашему хостингу/дэдику, каналу и т.д.

бывает как-бы ) обычный самопис

в самых общих чертах


<style>
* {margin: 0; padding: 0; border: none;}
#cntr {width: 70%; border: 1px solid #dedede; margin: 0 auto;}
#cntr ul {background: #ccc; text-align: center; min-width: 600px;}
#cntr li {width: 32%; display: inline-block; margin: 1px; background: #fefefe; border: 1px dotted #ccc;}
</style>
<body>
<div id="cntr">
<ul>
<li>ссылка1</li>
<li>ссылка2</li>
<li>ссылка3</li>
<li>ссылка4</li>
<li>ссылка5</li>
<li>ссылка6</li>
</ul>
</body>

в ослостиле:

#cntr li {display: inline; zoom: 1;}

#cntr - здесь для удобства группирования, можете этот контейнер убрать, делегировав соотв. стили ul и скаскадировать

если правильно понял, что вы хотите, может этот подойти

только в некоторых случаях его немного пропатчить нужно для поддержки юникода (по сути заменить все strlen на mb_ аналоги)

Всего: 178