Посты с тегом «хаки»

Хаки для WordPress. Часть 1

В блоге BlogOh!Blog недавно проскакивали статьи с описанием различных хаков для WordPress, практически все из которых я в различное время использовал. Правда, как это у меня чаще всего бывает, я думал, что эти хаки не будут никому полезны, а если и будут, то их всегда можно будет найти в Google и писать о них просто нет смысла.

Однако сейчас, из-за недостатка статей в блоге, я всё-таки решил написать об этих хаках. Ну, если быть точнее, сделать невероятно вольный перевод пары топиков (в два захода) из уже упомянутого BlogOh!Blog, выбросив несколько неинтересных вещей. Откиньтесь на спинку вашего стула и читайте! %)

Отображение Gravatars в комментариях

Ну начнём с того, что Gravatars — это сервис, который привязывает к электроящику аватары. То есть когда вы при комментировании в блоге оставляете свой электронный адрес (настоящий, а не как Vox — fsb@fsb.ru), то блоговый движок может отображать вашу аватарку, взятую с Gravatars. На самом деле движок тут ни при чём, тут всё дело в теме, которая в нём используется. Её-то нам и нужно будет править.

Чтобы отображать аватары Gravatars в вашей теме (чаще всего темы первоначально не поддерживают Gravatars), вам придётся в файле comments.php найти строку:
< ?php comment_text() ?>
и заменить её на:
<div class="gravs">
<?php if (get_bloginfo('version')>=2.5)
echo get_avatar( $comment->comment_author_email, $size = '50', $comment->comment_author_link);?>
<?php comment_text() ?>
</div>
<br clear="all" />

Чтобы уже отображающаяся аватара имела нормальный вид, вам придётся добавить пару классов в style.css:
.gravs {margin-top:20px;}
.avatar {float:left; margin-right:5px; margin-bottom:5px; padding:3px; border:1px solid #999999;}

Всё, клёвые аватары у вас в блоге уже есть!

Добавление надписи «Подпишись на RSS!» после каждого поста

Туповатый на мой взгляд хак, но что же поделать %) В общем, если вы хотите заполучить огромное количество подписчиков, и вам, так же как и всяким «юзабилистам», кажется, что такая надпись поможет число читателей увеличить, то ищите файл index.php и после окончания кода, отвечающего за выдачу поста (the_content), пишите следующие строки:
<div style="padding:5px; border:1px solid #999999; margin-top:10px; background-color:#FFF8AF;">
Понравилась речь пацана? Эр-эс-эс — нна! %)
</div>

Ну, эту дебильную фразу я бы заменил на что-нибудь не такое скучное, да и ссылку бы на RSS сразу поставил. Хотя хак и без того тупой, и по-моему, нафиг не нужен. Но ничего, щас пойдут хаки поинтереснее.

Отображение последних твитов

Ну, с этим всё просто. Чтобы отображать последние твиты, вам нужно будет скопипастить код со страницы http://twitter.com/badges/html, предварительно настроив отображение по своему желанию. Получится что-то вроде этого:
<div id="twitter_div">
<h2 class="sidebar-title">Мельников в Твиттере!</h2>
<ul id="twitter_update_list"></ul>
</div>
<script type="text/javascript" src="http://twitter.com/javascripts/blogger.js"></script>
<script type="text/javascript" src="http://twitter.com/statuses/user_timeline/BBSoD.json?callback=twitterCallback2&count=5"></script>

Скопипастить код нужно либо прямиком в тему (в сайдбар, например), либо в текстовый виджет. Этот вариант отображения твитов, правда, немного унылый и у меня есть более хорошее и интересное решение, которое для меня писал Валенок, но его ещё нужно немного доработать (не Валенка — решение %).

Отображение информации об авторе

Если у вас блог ведёт несколько авторов, как, например, это делается в Haywired и MacSpoon (я и там, и там буду писать, кстати), то можно в конце топика выводить информацию об авторе. Делается это добавлением следующих строк после всё того же the_content, только уже в файле single.php, который отвечает за вывод одного топика, а не ленты:
<div class="author">
<?php the_author_description(); ?>
</div>

Ну и опять-таки не стоит забывать про CSS:
.author{
color: #222222;
font-family: Arial;
font-size: 12px;
border:1px solid #CCCCCC;
width: 500px;
padding: 5px;
margin-top:10px;
margin-bottom:10px;
}

Вывод категорий выпадающим списком

Ну тут всё очень даже просто. Вставляйте следующий код в любое подходящее место в index.php или sidebar.php:
<form action="<?php bloginfo('url'); ?>/" method="get">
<?php
$select = wp_dropdown_categories('show_option_none=Select category&show_count=1&orderby=name&echo=0');
$select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);
echo $select;
?>
<noscript><input type="submit" value="View" /></noscript>
</form>

Вывод архивов выпадающим списком

То же самое, что и с категориями:
<select name=\"archive-dropdown\" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=\"\"><?php echo attribute_escape(__('Select Month')); ?></option>
<?php wp_get_archives('type=monthly&format=option&show_post_count=1'); ?> </select>

Добавление баннеров размером 125×125 в сайдбар

Не люблю я сайдбары и особенно рекламу в них, но раз в BlogOh!Blog говорят, что многие люди не в курсе, как добавлять баннеры с сайдбар, придётся написать. Итак, добавляйте в сайдбар следующий код:
<div class="bannerads">
<div class="ad_125x125"><a href="#"><img src="<?php bloginfo('template_directory'); ?>/ads/125x125.gif" border="0" alt="Advertising" /></a></div>
<div class="ad_125x125"><a href="#"><img src="<?php bloginfo('template_directory'); ?>/ads/125x125.gif" border="0" alt="Advertising" /></a></div>
</div><!-- bannerads -->
<br clear="all" />

Здесь <?php bloginfo(‘template_directory’); ?> отвечает за вывод url’а темы, следовательно, в директории с темой вы должны создать папку “ads” и залить туда файл 125×125.gif. Ну затем ещё 125×125_a.gif, 125×125_b.gif или что-то подобное %)

И в очередной раз не забываем про таблицы стилей. Добавляем в style.css следующие классы:
.bannerads {width:270px; margin:10px auto;}
.ad_125x125 {float:left; margin:0px 5px 10px 5px; width:125px; height:125px;}

Вот чудо — теперь у нас монетизирующийся блог! С деньгами жить приятнее, да ;)

Отображение самых обсуждаемых постов

Ну вы же наверняка не раз видели, что в блогах есть колонка со ссылками на самые обсуждаемые посты, за счёт которой они становятся ещё более обсуждаемые? Так вот, если вы захотели сделать такую же штукенцию, добавьте в header.php вашей темы следующий код:
<?php function most_popular_posts($no_posts = 5, $before = '<li>', $after = '</li>', $show_pass_post = false, $duration='') {
global $wpdb;
$request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
$request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";
if(!$show_pass_post) $request .= " AND post_password =''";
if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
}
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
$posts = $wpdb->get_results($request);
$output = '';
if ($posts) {
foreach ($posts as $post) {
$post_title = stripslashes($post->post_title);
$comment_count = $post->comment_count;
$permalink = get_permalink($post->ID);
$output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
}
} else {
$output .= $before . "None found" . $after;
}
echo $output;
} ?>

Чтобы поменять количество самых обсуждаемых постов, измените там с самой первой строке переменную $no_posts. Ну а чтобы выводить список этих постов, добавьте в нужном месте вот такую строчку:
< ?php most_popular_posts(); ?>

Добавление кнопки для печати поста

Ну, самый элементарный хак. Добавьте в предпочтительное место в файле single.php следующую строку:
<a href="javascript:window.print()">Print this Article</a>
Всё!