Ставим виджеты блога в футер
В последнее время стало очень популярным ставить в футер блога виджеты, которые будут отображать последние записи, или комментари или последние твиты. Но не все темы поддерживают такие функции. У меня отсутствует подобная возможность. Я решил все сделать сам. Я вставлю прямо в код сайта эти виджеты, какие преимущества такой вставки: улучшение юзабилити, уменьшение нагрузки на сервер ( стандартные виджеты и плагины съедают больше ресурсов, чем чистый код), после такого апгрейда тема становится уникальной, что очень важно, как для посетителей так и для поисковиков.
Для большей наглядности рассмотрим все действия на примере моего футера.
Что нам понадобиться: немного знаний дивовой верстки (надо сверстать три столбца) и функции, которые мы будем вставлять в футер. У меня внизу отображаются: последние записи, последние твиты и последние комментарии.
Вот код столбцов, которые вставляются в файл footer.php:
<div id="index-footer">
<div id="column-left">вставлять сюда
</div><div id="column-right">вставлять сюда
</div><div id="column-center">вставлять сюда
</div></div>
Вот код, который нужно вставить в файл style.css:
#index-footer {
width:указываем ширину вашего футераpx;
}
#column-left {
float: left;
width: ширина левого столбцаpx;
}
#column-right {
float: right;
width: ширина правого столбцаpx;
}
#column-center {
margin: 0 ширина правого столбцаpx 0 ширина левого столбцаpx;
}
Столбцы созданы, теперь вставляем функции, которые мы будем использовать.
Вывод последних записей на блоге:
<?php
global $post;
$myposts = get_posts('numberposts=количество отображаемых записей');
foreach($myposts as $post) :
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
Вывод последних твитов:
<?php
$feedURL = "вставляем адрес RSS из твитера";
$doc = new DOMDocument();
$doc->load($feedURL);
$arrFeeds = array();
foreach ($doc->getElementsByTagName('item') as $node) {
$itemRSS = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
);
array_push($arrFeeds, $itemRSS);
}
$limit = количество сообщений для вывода.;
for($x=0;$x<$limit;$x++) {
$title = str_replace('Ваш логин в твиттере: ', '', $arrFeeds[$x]['title']);
$str = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $title);
$pattern = '/[#|@][^\s]*/';
preg_match_all($pattern, $str, $matches);foreach($matches[0] as $keyword) {
$keyword = str_replace(")","",$keyword);
$link = str_replace("#","%23",$keyword);
$link = str_replace("@","",$keyword);
if(strstr($keyword,"@")) {
$search = "<a href=\"http://twitter.com/$link\">$keyword</a>";
} else {
$link = urlencode($link);
$search = "<a href=\"http://twitter.com/#search?q=$link\" class=\"grey\">$keyword</a>";
}
$str = str_replace($keyword, $search, $str);
}
echo '<li>'.$str.'</li>';
}
?>
Вывод последних комментариев:
<?php
$pre_HTML ="";
$post_HTML ="";
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
$output .= "\n<ul>";
foreach ($comments as $comment) {
$output .= "\n<li>".strip_tags($comment->comment_author) .": " . "<a href=\"" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "\" title=\"К статье - ".$comment->post_title . "\">" . strip_tags($comment->com_excerpt)."</a></li>";
}
$output .= "\n</ul>";
$output .= $post_HTML;
echo $output;
?>
Вставляем функции в наши столбцы, указываем все параметры и смотрим, если вы сделали все правильно - должно работать. А дальше уже можно украшать футер как хотите, можно сделать красивый фон, подписи вверху, конечно, чтоб все вписывалось в общий дизайн блога.
Может кто-то знает как по другому выводить комментарии, ато этот способ не самый лучший? Надеюсь вам пригодиться. Если у кого-то есть вопросы — задавайте и не забывайте подписываться по RSS и узнавать больше про то как можно улучшить ваш блог.
Центр компьютерного обучения в Москве — пойди и запишись.
Masterix
26 мая 2010😉 Классная статья. Как знающий html человек могу поставить тебе 5 из 5. Продолжай в том же духе!
Archil
26 мая 2010Спасибо Мастерикс 😀
Yurbasik
26 мая 2010хорошая статья, а не проще ли в functions.php зарегить еще сайдбаров, а потом просто использовать ф-ю вывода в футере?
Archil
26 мая 2010Проще, если знаешь как. Но мой способ хорош еще тем, что используется код, который не нагружает сервер, тем самым ускоряет загрузку блога.
Андрей
26 мая 2010А то, что это в самом низу и не все добираются? Хотя мысль, аналогичным образом и в header.php ставить 😉
Громит
26 мая 2010Мне понравилась статья + согласен с тем, что данный способ не так сильно нагружает сервер как через ф-ю и виджет.