ну а в чём проблема? обычная тема из репозитория, и вот блог автора
в примере немного перепиленная, но и вы тоже можете сами изменить под себя...
недавно кому-то его переписывал под юникод, там просто суть в том, что он не считает хиты по постам, если кликает залогиненный юзер (админ, редактор и т.д.) можно выйти из ВП, покликать по постам и всё ок. Если нужна юникод версия, вот код:
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:
например фриланс ) но он не является пассивным заработком и отбирает полностью всё время, и даже за пивом выйти не всегда представляется возможным, но с другой стороны, даёт развиваться именно профессионально, и не зависеть от того, что курят в гугле
по сабжу: что б не делать очередную тему, замечу, что подумываю и сам о том, что бы пойти кому-либо в рефы при следующих условиях: я сам программер, верстальщик админ и т.д. но времени именно на СЕО анализ текущих суровых реалей в привязке к дорвеям, у меня нет, поэтому могу взять на себя техническую реализацию чего-либо. То есть, "рефовод" говорит, что нужно делать, я делаю, там от написания платника, до кароч пофиг чего, кароч он рулит, я делаю. Профит обсуждается.
кому интересно, просьба писать только в личку, так же, отвечу только людям с репой, и кто по моему мнению не потратит в пустую моё время на работу.
зы: к подобным рефоводским соглашениям, могу приступить не сразу, сейчас есть много другой работы примерно на полторы-две недели, сейчас просто предлагается предварительно списаться.
зыы: в дорах много лет, но сейчас, всё что я знал, утратило свою актуальность, начинать заново нет времени, удовлетворюсь просто ролью реализатора и пассивным доходом
зыыы: с ломом и явным нелегалом (в любых проявлениях) не работаю.
ну а что вас так удивляет то ?)
самопис как самопис, немного кривоватый правда, но зато на ExtJS )
разумеется будет, в самом ВП никакого ограничения на количество посетителей не имеется, здесь уже вопрос к вашему хостингу/дэдику, каналу и т.д.
бывает как-бы ) обычный самопис
в самых общих чертах
<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_ аналоги)