Комментатор уже читал пост
Забыл дома бумажник — не судьба была сегодня плотно пообедать в «Заводи». Так что от скуки немного поигрался с любимой игрушкой.
В критике буржуйского блогосео (и ставлю теперь правильную ссылку на автора) я сходу отверг идею пересылать комментатора на какую-то особую страницу. И от своего мнения не откажусь — глупо, когда, оставляя комментарий, попадаешь на рекламный текст. Попахивает самым грязным SMO, который только можно представить.
Самое интересное, в Wordpress подобная функция уже неявно заложена — если посмотреть wp-comments-post.php, то можно увидеть, что там проверяется наличие POST-переменной redirect_to. А это значит, что создавая hidden-поле в форме, мы можем переправить комментатора практически куда угодно. Но опять же, не стоит.
Зато вот стоит немного подумать о клиентской оптимизации — представьте, что вы такой же задрот, как и я, и любите просто огромные посты. Да, именно те, к которым пишут комментарии «ниасилил». После того, как кто-то оставляет комментарий, его перекидывает на эту же страницу. Уже не кэшированную — а это значит, что блок текста до мегабайта браузер грузит заново. И это при том, что текст поста «как бы» прочитан, и комментатор либо закроет страницу, либо воспользуется навигацией по блогу.
Был вариант сделать как у Ильи Бирмана — т.е. пост с комментариями держать на совсем отдельной странице, но придумал решение более простое — будем отправлять комментатора на этот же пост, но с урезанным текстом, если он слишком большой.
Т.к. менять в коде самого движка что-то не хочется, есть задача перенаправить на этот же пост, но так, чтобы URL был другой. В Вордпресс есть забавная (для блога) поддержка постраничного разбиения поста, которой никто не пользуется. Если вы используете ЧПУ так же, как я — т.е. в виде папок, то ссылка на такие страницы будет вида .../номер-страницы/. При этом, если разбиения нет, такая ссылка будет вести именно на сам пост.
Добавим в форму отправки комментария (в comment.php) до </form> еще одно поле:
value="<?php echo get_permalink()."666/" ?>" />
А в single.php вместо the_content() нам нужно сделать так:
<?php
$stext=get_the_content('');
$stext = apply_filters('the_content', $stext);
$stext = str_replace(']]>', ']]>', $stext);
$maxlenpost=4000;
if((strstr($_SERVER['REQUEST_URI'],'/666/'))
&&(strlen($stext)>$maxlenpost)) {
echo substr($stext,0,strpos($stext,"</p>", $maxlenpost-1000)).
"</p><p><...></p>".
' <div class="fulllink"><a href="'.get_permalink().
'">← Вернуться к полной версии записи</a></div>';
}
else {
echo $stext;
}
?>
Все достаточно просто — если мы на «/666/» странице и длина текста поста превышает наш порог, то после оставления комментария будет отображена страница с урезанным текстом. После него — типографский знак «пропуска» и ссылка на полный текст с комментариями.
С сокращением похитрее, но тоже довольно просто — чтобы не было обрезанных и не закрытых тегов (чтобы весь оставшийся текст вдруг не превратился в ссылку или в курсив), мы обрезаем поабзацно — ориентируясь на </p>. Ну и, соответственно, раз напрямую обращаемся к get_the_content(), не забываем применить стандартные фильтры.
Ссылку с «возвратом» надо, конечно, оформить в CSS — для этого ей и присвоен класс .fulllink.
И, повторюсь, с другими ЧПУ решение должно немного видоизменяться — в зависимости от того, как формируется ссылка на «подстраницы».
Такое вот развлечение на пятнадцать минут.




Ну и, на всякий, — чек.
ваще не осилил. чек.
Сути всего этого извращения не понял :)
До мегабайта?! Моя статья на 25000 символов, самая большая что я печатал, и та на мегабайт не тянет. А к статьям размером в мегабайт вообще невозможно оставить комментарии — в силу слишком большого объема мыслей и тем автора.
Люди-люди-люди! Мегабайт — это гипербола, конечно же. Мегабайт — это среднего размера роман уже (не считая HTML). А блоги еле терпят большие публикации.
Просто показываем сокращенный текст с возможностью вернуться к полному для тех, кто только что прокомментировал — грузится несравненно меньше, не надо проматывать до комментариев и т.п.
Вот например та статья на смопро — у меня обрезали Инет дома и при комментировании пришлось ждать, пока эта сволочь заберет весь HTML записи и доберется до комментов. И каждый раз, когда надо посмотреть эти комменты, надо ждать, пока будет загружена вся статья. Теперь clear?
Я у себя такое сделал, но никому не навязываю. Тем более пока не ясно, нужно ли отдавать в подписку на почту ссылку на полную или сокращенную версии.
А почему не the_excerpt?
Так даже элегантнее получится
Вот как раз excerpt подошел бы больше, но — я его не заполняю, а ставить плагин автозаполнения меня заломало. Делать мне нечего на обеде было :)
@автор: Есть такое дело.
Но я когда изучал WP увидел всю силу excerpt и понял, что этим надо пользоваться — так что в каждой теме у меня обязательно использование the_excerpt
Но я рад, что мысль у меня двигается в правильном направлении
Ну, из базы все равно грузятся все поля, так что использование excerpt — это только стремление к универсальности и стандартизации. Переложить под его использование — легко. Вот только, если в самом движке эксерпт не заполняется — будет пустое место, и тема будет бесполезна :).
Так что в этом случае сокращение текста — не функциональность, и выделять ее из темы не очень хорошее решение.
афигенная идея! респект. надо будет сделать и себе.
@lilumi: в твоем случае (у тебя ЧПУ без последнего слеша) можно оставить и echo get_permalink ()."666/", но будет редирект. так что просто 666.
У сожалению, для «дополнительного урла» без изменений mod_rewrite можно использовать только цифры — а хотелось бы, например, /discussion/.
Проверям.
Сергей, вы мне определённо нравитесь со своими постами :)
Определенно NOT GAY? :)
Можно пойти дальше и убрать комментарии так, чтобы они отображались только по вот этой ссылке /666/ (даже необязательно так — можно придумать способ, как сделать и более нормальный УРЛ). Тогда получится, как у Ильи Бирмана — ilyabirman.ru/meanwhile/ — раздельные страницы для контента и постов (что круто для некоторых).
Если же комментарии остаются в посте, то лучше закрыть эту страницу <meta name="robots" content="noindex, nofollow">
И «ты», «ты», ради бога, — на «вы» только посылают.
Исправлюсь )
че то тупанул реально.
А что такое 666 и какое принципиальное значение в нем?