Многие владельцы сайтов на LiveStreet для кнопок социальных закладок используют достаточно тяжелый Social Bookmarks Plugin, даже не подозревая, что можно добавить их намного проще. Далее я покажу как это сделать, а заодно научу вас создавать собственные хуки для LiveStreet. Но сначала небольшое лирическое отступление.

Хук (hook) — это технология перехвата вызовов функций и обработки их прежде, чем их получит приложение, для которого они предназначены. Хуки несколько замедляют работу движка поскольку увеличивают количество действий, которые производит система при обработке каждого сообщения. В связи с этим следует устанавливать хуки только при необходимости и удалять их, когда они становятся не нужны.

Итак, приступим. Во-первых, нам нужно создать сам файл хука по адресу classeshooks. Назовем его, к примеру, HookShare.class.php. Далее запишем в него следующий код:

<?php
/*-------------------------------------------------------
*
*   LiveStreet Engine Social Networking
*   Copyright © 2008 Mzhelskiy Maxim
*
*--------------------------------------------------------
*
*   Official site: www.livestreet.ru
*   Contact e-mail: rus.engine@gmail.com
*
*   GNU General Public License, version 2:
*   http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
---------------------------------------------------------
*
*   Hook created by Chiliec
*
*/

/**
 * Add share block
 *
 */
class HookShare extends Hook {
  public function RegisterHook() {
    $this->AddHook('template_html_head_end','ShareInit',__CLASS__,-100);
    $this->AddHook('template_topic_show_info','ShareOut',__CLASS__,-100);
  }
  
  public function ShareInit() {
      if (Router::GetAction()=='blog') {
        return '<script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script>';
      }
      return '';
  }

  public function ShareOut() {
    if (Router::GetAction()=='blog') {
      return '<li class="yashare-auto-init" 
        data-yashareL10n="ru" 
        data-yashareType="link" 
        data-yashareQuickServices="vkontakte,facebook,twitter,lj,odnoklassniki,gplus">
        </li>';
    }
    return '';
  }
}
?>

Рассмотрим детальнее первую часть.

class HookShare extends Hook {
  public function RegisterHook() {
    $this->AddHook('template_html_head_end','ShareInit',__CLASS__,-100);
    $this->AddHook('template_topic_show_info','ShareOut',__CLASS__,-100);
  }

Первая строчка создает новый класс HookShare, который, как вы видите, называется так же, как и сам файл. Вторая — стандартная функция для регистрация хуков. Третья и четвертая строчки собственно вешают хуки на функции. Эти функции определены ниже, а сами хуки html_head_end и topic_show_info находятся в шаблоне (что так же видно из их префикса template_).

Что в итоге получилось, можно посмотреть в сайте pgsha.info. Вот и всё. Если что-то непонятно по коду — спрашивайте в комментариях!

Кстати говоря, создать сайт с нуля можно не только базе движков и фреймворков, требующих первоначальных вложений, но и при помощи конструкторов сайтов. Например, на fo.ru можно бесплатно размещать до 50 страниц.