Закатываем фиды и кросспосты|Кат в RSS и LJ-кросспосте
По умолчанию Wordpress предлагает отдавать посты на глагне и в фиде либо неудобоваримой «простыней», либо утлым «анонсом» с унылым троеточием в конце. Оба метода, честно говоря, ужасны. Первый — потому что никому неохота скроллить унылые посты в своем ридере, если не хочется читать в очередной раз про Хром или влезать в чужую бдабскую свару. А второй (который можно включить и специальной функцией feedburner для отдачи в фид) превращает записи в нечто ужасное и неудобоваримое, как в плане читабельности, так и в заметности.
Лучшее решение — использование уже привычного ката, под который можно прятать все то, что надо скрыть внутри поста. При этом сам анонс будет хорошо отформатирован, понятен, и можно будет легко добавлять текст тизера, ссылки-завлекалочки внутрь блога.
По умолчанию это срабатывает при использовании псевдотега <!--more--> в тексте поста в нужном месте, а чтобы избавиться от унылых «дальше», можно легко вносить в анкор ката свой текст — вписывая его прямо перед закрывающей последовательностью. Например, так: <!--moreТысяча ссылок-->, благо движок с помощью нехитрых регэкспов это предусматривает. Все это можно делать, конечно, только в не-визуальном редакторе. Все равно он удобней.
Но вот незадача, в фид будут отдаваться полные посты (такой вот глюк). Да и в случае кросспоста есть стопроцентная вероятность того, что в ЖЖ, лиру или куда там вы кросспостите для ссылочек на себя любимого, уйдет полный текст поста. Тут даже поисковик может задуматься о том, кто первоисточник — никому не известный стэндэлон-блог или же Живой Журнал. А если дальнейший кросспост по сервисам идет не с RSS блога, а из ЖЖ, то полный текст разойдется вообще по всем Интернетам.
Исправлений в коде Wordpress будет минимум (правда, обновляться уже нежелательно), точнее все, что потребуется — одно условное выражение в соответсвующем месте.
Залазим в файл post-template.php и находим вот такой код в функции get_the_content ():
if ($more){
$output .= '<span id="more-'.$id.'"></span>'.$content[1];
И правим его до такого состояния:
if ($more && !is_feed()){
$output .= '<span id="more-'.$id.'"></span>'.$content[1];
В настройках («Чтение»), конечно же, устанавливаем отдачу «Полный текст». Вуаля — в фиде будет только то, что нам надо.
Однако беда в том, что небезызвестный плагин ljxp (в русификации Арсения Иванова, да и оригинал тоже) не захочет учитывать наши изменения. Точнее, если поставить в настройках «до тега more» он попробует работать, но заткнется, если вы попробуете использовать свой анкор ката. Все потому, что создатель не учел регэкспы. Его код:
if(strpos($post->post_content, "<!--more-->") === false){
$the_event .= apply_filters('the_content', $post->post_content);
}
else{
$content = explode("<!--more-->", $post->post_content, 2);
...
Должен превратиться в:
if(preg_match('/<!--more(.*?)?-->/', $post->post_content, $matches)){
$content = explode($matches[0], $post->post_content, 2);
...
}
else{
$the_event .= apply_filters('the_content', $post->post_content);
}
Ну и, конечно, до кучи надо, чтобы в ЖЖ выводился и сам анкор ката, введущий на ваш блог, вместо унылого «Read the rest of this entry».
if (!empty($matches[1]))
$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
...
$the_event .= sprintf('<p><a href="%s#more-%s">', get_permalink($post_id), $post_id) .
__($more_link_text.' »', LJXP_DOMAIN) .
'</a></p>';
Все, пока блог не вырастет до того состояния, что можно будет отказаться от кросспоста — будет прекрасно работать.
В итоге получился маленький ремикс плагина LJ-crosspost ►, который можно (естественно, да) скачать на отдельной страничке. Вдруг кому понадобится.




а чего у тебя здесь заголовок один, а в ленте совсем другой?
Ке-ке, ты только заметил? Если посмотришь на серенькую полоску под хедером, увидишь, что каждая запись имеет заголовок и подзаголовок. Соответственно, подзаголовок более точно определяет тему и показывается только на самой странице (хотя, думаю, надо его в свежак и подписку сделать).
И хватит уже спамить записи, я жду впечатлений по ВП Тайпо.
терпения мой друг, терпения.
а подписка на каменты так и не работает
«терпение, мой друг, терпение».
Какой клиент под почту? Потому как на комментарии, оставленные мною неавторизованным — приходят. И в гмэйл, и в яндекс. Единственное, и раньше были задержки в отправке уведомлений.
клиента нету, почта перенаправляется из ukr.net на гуглевский аккаунт. в спамах нету. попробую поменять емейл подписки
чек.
а пока ты пишешь мне ответ, можешь помочь, в моем блоге в сайдбаре есть два таба, я их честно скопипастил с сайта jquery, но в сочетании с моим css'ом шаблона он ведет себя не так как надо. Я уже почти все исправил, но никак не могу прижать к нижней границе неактивный таб. Знаешь как это сделать?
На яндексе, стали резать ВПшные уведомления — саппорт отмазывается «сменой правил в отношении массовых рассылок» и «работой программистов».
Ну, у нас тут уже ночь вообще ). Не могу сказать точно, но виноват точно flora.tabs.css (для уверенности его последним подгружай в списке цссок). И скорее всего, ошибка в том, что везде высота блоков 20px, а в .ui-tabs-selected задано height: 27px; и line-height: 27px;. Попробуй поправить либо это (пропадут уголки внизу активной скорее всего), либо остальные (не факт, что все).
Хе. Обнаружила случайно (в первый раз посмотрев свой RSS), что у меня очень забавно получилось случайно и с RSS и c Livejournal.
И туда и туда, и в поле meta description отдаётся поле excerpt, которое и является анонсом поста.
При этом в RSS и так понятно, что есть больше, а в жж, если длинна excerpt'a больше, чем поста — ставится ссылочка «рид море».
У меня обычно анонс отличается просто от текста до read more.
Хотя дело вкуса и лени)
Ну, я тут не рассматривал использование эксерпта вообще. С ним вообще интересные вещи можно делать — краткое содержание поста, или перечисление рассматриваемых тем. Или реализовать фишку с комментами как здесь (я вот подумываю полностью убрать комменты на отдельную страницу).
А с wp2.7 он работает нормально?
Понятия не имею. Но если они не поправили это в 2.7, то да.
Ну вот почему у тебя на блоге нету поиска???
приходится за этой статьей лезть в яндекс и заставлять его искать по твоему сайту
Потому что на бложеке, подобном этому, не надо никакого поиска — нужен нормальный каталогизатор. А руки, как всегда не доходят.
у меня при активации ljcrossposrer remix
вылетела ошибка:
Plugin could not be activated because it triggered a fatal error.
Warning: require_once (/usr/home/stf/data/www/aboutyourself.ru//wp-includes/class-IXR.php)
[function.require-once]: failed to open stream: No such file or directory in /usr/home/stf/data/www/aboutyourself.ru/wp-content/plugins/livejournal-crossposter-remix/livejournal-crossposter-remix.php on line 73
Fatal error: require_once () [function.require]: Failed opening required '/usr/home/stf/data/www/aboutyourself.ru//wp-includes/class-IXR.php' (include_path='.:/usr/local/share/pear') in /usr/home/stf/data/www/aboutyourself.ru/wp-content/plugins/livejournal-crossposter-remix/livejournal-crossposter-remix.php on line 73
что это такое? как исправить?
у меня wordpress 2.8.4
заранее благодарен за помощь.
Сергей, спасибо за плагин, подскажите как справится с такой проблемой. Установил плагин для кросспоста, отредактировал .po, но визуально на ЖЖ при публикации новых постов ничего не поменялось. Данные перевода старые...
Спасибо за плагин, работает. Но есть глюк:
при прописывании в опции «Custom crosspost header/footer» своего текста, все кавычки (двойные или одинарные) экранируются слешем и только потом сохраняется в БД. Пришлось править запись в БД, чтобы избавиться от этих левых слешей.
WP 2.8.6, LJCR 2.3
День добрый!
Я только начинаю работать с ВордПресс.
Поставил ваш плагин. Попытался активировать, и получаю ошибку:
Warning: require_once (/home/nebacom/public_html/konstantinus.com//wp-includes/class-IXR.php)
[function.require-once]: failed to open stream: No such file or directory in /home/nebacom/public_html/konstantinus.com/wp-content/plugins/livejournal-crossposter-remix/livejournal-crossposter-remix.php on line 73
Что я делаю не так?
Заранее спасибо!
Серег, привет.
Возникла небольшая проблема с ремиксом ЖЖ кросспостера: он почему-то отдает в сообщество сразу две записи, вместо одной. Как с этим бороться и почему так происходит?
Фид берется из www.inspireme.ru
и отдается в community.livejournal.com/ru_inspire