Делаем приветственное лс

Итак, добавляем в ActionRegistration.class.php
после действия, где создается персональный блог (строка 172 помоему)
public function SendWelcomeMessage(UserEntity_User $oUserTo,UserEntity_User $oUserFrom) {

$this->oViewerLocal->Assign('oUserTo',$oUserTo);
$this->oViewerLocal->Assign('oUserFrom',$oUserFrom);

$sBody=$this->oViewerLocal->Fetch("pm_reg.tpl"); 
$oTalk=new TalkEntity_Talk(); 
$oTalk->setUserId($oUserFrom->getId()); 
$oTalk->setTitle("Добро пожаловать!"); 
$oTalk->setText($sBody); 
$oTalk->setDate(date("Y-m-d H:i:s"));
$oTalk->setDateLast(date("Y-m-d H:i:s"));
$oTalk->setUserIp(func_getIp());
if ($oTalk=$this->Talk_AddTalk($oTalk)) {
$oTalkUser=new TalkEntity_TalkUser();
$oTalkUser->setTalkId($oTalk->getId());
$oTalkUser->setUserId($oUserTo->getId());
$oTalkUser->setDateLast(null);
$this->Talk_AddTalkUser($oTalkUser); 
}

}

и создаем соответсвующий notify.pm_reg.tpl в ВАШЕМ templates/skin/SKIN/
Привет!
Вы зарегистрировались на сайте <a href="{$DIR_WEB_ROOT}">123</a>!
У нас есть, это, это, а вот тут faq и т.д :)

Кланвары и мониторинг

Плагин кланваров, для каких-ниб кс-сообществ раз.
Скачать и активировать.

И парочка других модификаций кланваров.

Еще, плагин, вывода мониторинга игровых серверов. Просто в отдельный блок сайдбара.
Скачать и активировать.

Настройка игровых серверов осуществляется в файле config/config.php
Новый сервер нужно добавить в массив gs.servers
Config::Set('gs.servers', array(
	'cs16' => array(			             // - Уникальный идентификатор (для внутреннего использования в плагине)
		'title'		=> "Counter-Strike 1.6",     // - Название для отображения
		'host'		=> array("host"),	     // - Список IP-адресов сервера (в случае, если один и тот же сервер доступен по разным адресам)
		'port'		=> array("port"),	     // - Список соответствующих IP-адресам портов
		'class' 	=> "CounterStrike16",	     // - Имя класса обработчика сервера (для данного обработчика, например, модуль называется PluginGameServers_ModuleCounterStrike16)
		'link'		=> "http://cs16.example.com" // - Ссылка на страницу с описанием сервера
	),
));

Делаем поиск Яндекса вместо Sphinx

Настраиваем форму поиска Яндекса site.yandex.ru/new_info.xml
Выбираем «оформление результатов поиска — в iframe странице» и пишем желаемый адрес страницы результатов поиска, например yoursite.ru/page/poisk

Копируем полученный html-код поисковой формы и вставляем его в sidebar.tpl вместо строк
<div class="block">
        <form action="{router page='search'}topics/" method="GET">
        <input class="text" type="text" onblur="if (!value) value=defaultValue" onclick="if (value==defaultValue) value=''" value="{$aLang.search}" name="q" />
        <input class="button" type="submit" value="{$aLang.search_submit}" />
        </form>
</div>

заключаем этот код в тег {literal}{/literal}

Создаем статическую страницу poisk(или же через запись, не суть важно). Для этого нужно активировать плагин static page. В поле «Текст» новой страницы снова вставляем код поисковой формы и затем второй код от Яндекса, примерно такой:
<div id="yandex-results-outer" onclick="return {encoding: ''}"></div>
<script type="text/javascript" src="http://site.yandex.net/load/site.js" charset="utf-8"></script>


Если с css проблемы.
в начале кода, в редакторе статической страницы
<div class="yandexform" style="width: 960px;" onclick="return {type: 2, logo: 'rb', arrow: false, webopt: false, websearch: false, bg: '#CCE5FF', fg: '#000000', fontsize: 14, suggest: true, site_suggest: true, encoding: ''}">

Автоподключение свежерегнутых юзеров к коллективным блогам, по выбору

Иногда есть домены c livestreet, где владельцу сайта хотелось бы сделать так, чтобы все новые пользователи автоматически присоединялись бы к заданным блогам. (а это и авто-рассылка на email и прочее, если включено в настройках)

После установки, админам будет доступна страничка вашсайт/mhb на которой в списке блогов можно проставить галочки какие блоги автоподключать и от каких запретить отключаться. :)

Скачать плагин можно тута.

Sticky Topics - Прикрепленные топики

ваш_сайт/admin/stickytopics – Админка.
Зайти могут не только администраторы всего сайта, но и пользователи, являющиеся администраторами в каких-либо блогах. А так же и обычные пользователи — администраторы своих персональных блогов.

Можно запретить админам блогов использовать настройку прикрепления, отредактировав файл config/config.php и установив параметр allow_blog_admins в значение false. Для запрета обычным пользователям прикреплять записи в их персональных блогах, следует установить параметр allow_personal_blogs в false.

В двигле.
Прикрепленные топики на главной странице сайта.
Открываем файл из каталога шаблона actions/ActionIndex/index.tpl
Перед строчкой
{include file='topic_list.tpl'}

Вставить строчку
{hook run='get_sticky_topics' aTopics=$aTopics}

Чтобы убрать прикрепленные топики со страниц после первой, следует использовать такой вызов хука:
{hook run='get_sticky_topics' aTopics=$aTopics aPaging=$aPaging}

Еще может быть случай, когда прикрепленные топики требуется вывести как-то по-другому, нежели стандартной лентой. Может быть просто названия. Тогда к вызову хука надо добавить параметр outName, который задает имя массива, в который будут помещаться прикрепленные записи.
{hook run='get_sticky_topics' aTopics=$aTopics aPaging=$aPaging outName=aSticky}
{if $aSticky}
{foreach from=$aSticky item=oTopic}
{$oTopic->getTitle()|escape:html}
{/foreach}
{/if}

Тогда в результате работы хука в массиве шаблона aSticky окажутся прикрепленные топики, а массив aTopics останется неизменным. Если, все же, из массива aTopics требуется убрать прикрепленные топики, то хуку надо задать параметр removeSticky
{hook run=’get_sticky_topics’ aTopics=$aTopics aPaging=$aPaging outName=aSticky removeSticky=true}

Прикрепленные топики на странице конкретного блога.
Для того, чтобы вывести прикрепленные топики для каждого блога надо редактировать файл шаблона action/ActionBlog/blog.tpl
Единственное, чем отличается использование хука в конкретных блогах это, собственно, указание из какого, конкретно, блога брать записи. Делается это с помощью параметра blog_id:
{hook run='get_sticky_topics' aTopics=$aTopics blog_id=$oBlog->getId()}

Такой вызов хука в шаблоне блога прикрепит топики для текущего блога.
Все случаи, описанные для главной страницы сайта применимы и для конкретного блога, при добавлении параметра blog_id

Прикрепленные топики в персональном блоге пользователя
Тут надо менять шаблон action/ActionMy/blog.tpl
Для вывода прикрепленных топиков к персональному блогу требуется задать параметр blog_id равным -1 и указать дополнительный параметр oUser в который передать объект профиля пользователя. Для экшена ActionMy это объект oUserProfile
{hook run='get_sticky_topics' aTopics=$aTopics blog_id=-1 oUser=$oUserProfile}


Скачать плагин можно тута.

Делаем хорошую каптчу

livestreet captcha yandex

Скачиваем и распаковываем архив.
Папку Zloy_Taburet кладем в engine/lib/external/
Изображения zloy_taburet_arrow.gif и zloy_taburet_post.gif кладем в папку images вашего шаблона:
для шаблона new — \templates\skin\new\images\

Находим в файле \templates\language\russian.php строчку:
'registration_captcha' => 'Введите цифры и буквы',

и меняем на:
'registration_captcha' => 'Введите цифры слева',


Вставляем капчу в шаблон:

Для шаблона NEW
Находим в файле \templates\skin\new\actions\ActionRegistration\index.tpl:
{$aLang.registration_captcha}:<br />
                        <img src="{$DIR_WEB_ROOT}/classes/lib/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}">
                        <p><input type="text" class="input-text" style="width: 80px;" name="captcha" value="" maxlength=3 /></p>

и меняем на:
<div class="zloy_taburet">
             <img class="taburet" src="{cfg name='path.root.engine_lib'}/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" onclick="this.src='{cfg name='path.root.engine_lib'}/classes/lib/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random(); return false;" alt="" />
                                <img class="captcha" src="{cfg name='path.static.skin'}/images/zloy_taburet_arrow.gif" alt="" />
                                <div class="zloy_taburet_license">
                                        <label for="zloy_taburet_name">{$aLang.registration_captcha}:</label><br />
                                        <p><input type="text" class="input-text" style="width:80px;" name="zloy_taburet_name" value="" maxlength="6" /></p>
                                </div>
                                <div class="clear"></div>
                        </div>


Находим в файле \templates\skin\developer\css\style.css строчку:
.center-block .error { color: #f20909; }

и после нее добавляем это:
.center-block .zloy_taburet { height:74px; background:url("../images/zloy_taburet_post.gif") no-repeat 0px 0px; }
.center-block .zloy_taburet img.taburet { width:200px; height:60px; float:left; padding:7px 0 7px 5px; cursor:pointer; }
.center-block .zloy_taburet img.captcha { float:left; margin:30px 8px 0 15px; }
.center-block .zloy_taburet .zloy_taburet_license { float:left; margin-top:4px;}
.center-block .zloy_taburet .clear { clear:both; }


Находим в файле \classes\actions\ActionRegistration.class.php строчку:
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('captcha'))) {

и меняем на:
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('zloy_taburet_name'))) {


Если вам не нужна старая капча, то удалите папку \engine\lib\external\kcaptcha\

{literal}код{/literal}

Наверняка у вас будет проблема, с вставками в стиль, каких-либо элементов.

Например код яндекс метрики.

Нада. В фаиле стиля обрамиь через {literal}
например /templates/skin/new/header.tpl
<body onload="prettyPrint()">

{literal}
<!-- Yandex.Metrika -->

её код

<!-- /Yandex.Metrika -->
{/literal}

{hook run='body_begin'}

Если надо вставить в другое место, то просто вставляем в теги {literal}код_счетчика{/literal}

Оптимизация дефолтного ls

  • Скопировать все содержимое файла comment.tpl и вставить его в файл comments_tree.tpl, вместо строки
    {include file='comment.tpl'}  

    тоже самое сделать, с topic_list.tpl + topic.tpl

    Итого — full time на топиках с 1000+ комментариев будет без тормозов.
  • Удалить нахуй у себя файл /engine/lib/external/CSSTidy-1.3/css_optimiser.php
  • И еще вот это.
    Найти в файле /engine/modules/text/Text.class.php
    213 строчку:
    return array($sTextShort,$sTextNew,$sTextCut);

    Заменить ее на строчку:
    return array($sTextShort,$sTextNew,$sTextCut? htmlspecialchars($sTextCut): null);

Еще, если будут напряги на хостинге с кешем, то отключить его просто. В разы ускорит публицации. Ибо кеш в livestreet говянно написан.
Отключается это так:
в файле config.php найди эту строчки:
$config['compress']['css']['merge'] = true;
$config['sys']['cache']['use'] = true;

и заменить true, на false.

RSS в livestreet



//

Алсо, можно подписаться, на email подписки.


Еще, можно читать этот блог, в Twitter, или Facebook.

Проблемы с занятым местом

Со стороны, админа сервера:
Очень часто при работе с ISPmanager возникает проблема с «утечкой» места». Панель показывает, что занято пользователем места больше, чем в сумме с
составляют файлы пользователя в домашней директории (/home/usr, /var/www/usr) и базы данных.

На самом деле в место, занятое пользователем включается также и логи apache, nginx, которые часто занимают много места.

В первую очередь при недостатке места нужно очистить логи в разделе Журнал ISPmanager, и настроить ротацию логов (в частности уменьшить кол-во сохраняемых архивов).
Если же проблема не исчезла, то можно найти все файлы, которые считаются в квоте командой
find / -group имя_пользователя.
Ну и на последок можно выполнить ремонт квот из ISPmanager.

Иногда, бывает, что заканчивается место, у хостера, на ноде.
Warning: Unknown: open(/var/www/a2k/data/mod-tmp/sess_ea4333e3b35d18afc952a58f7eeb9ff7, O_RDWR) failed: No space left on device (28) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/a2k/data/mod-tmp) in Unknown on line 0
Подключаемся по ssh, смотрим сравнительный вывод df -h и df -i

Еще, хочу отметить, что Пользователь в ISPmanager удаляется(сразу) при удалении аккаунта хостинга(услуги) в BILLmanager (Пользователь ISPmanager != Клиент BILLmanager).
А бекапы этого пользователя ISPmanager(если делались) еще живут некоторое время. До глобальных ребутов обычно.

Со стороны, админа vds ISP manager.
Обязательно всегда проверяйте, в панели — Информация о системе(/manager/ispmgr?startpage=sysinfo) — там где hdd, двойным щелчком. (/dev/simfs)
Остальные подсчеты, в ISP панелях могут сбиваться. А ремонт дисковых квот, не доступен, для vds обычно.

Точно так же, проверяйте ротацию логов. Что хранятся последние там 5 архивов, потом удаляется.
А если все проверено, но по /dev/simfs все равно занимает больше, чем /www/ всех ваших пользователей. Ну, вы же следите, знаете что к чему.

То вперед в консоль, du -h --max-depth 1 /
и далее смотреть от корня, где вам кажется, занимать не должно :)

Полезные советы:
repquota -g / | grep user (покажет сколько места занято у пользователя)

ISPmanager использует собственный механизм ротации логов, есть задача rotate в crontab пользователя root, работает если запускается она в период с 00 до 01 часов, она ротирует логи и запускает скрипт статистики webstat, конфиг его лежит в /usr/local/ispmgr/etc/rotate.conf, но руками него править не надо, настраивается ротация логов через ISPmanager в меню WWW-домены ;)
Если какой-то лог сильно разросся, то его надо просто обнулить
cp /dev/null /home/httpd-logs/sitename.ru.error.log

Еще, бывает, что в ISPmanager Pro перестает скачивать и закачивать файлы на сервер.
Увеличиваем лимит на кол-во открытых файлов (на самой VDS значение в limits.conf)
например: * — nofile 931200000

Подробнее про quotacheck
0) заходим в ssh
1) убиваем апач
2) убиваем энжынкс (если есть)
3) убиваем остальные пишущие на диск процессы, вроде вочдогов
3) quotacheck -bcguvf /dev/<диск>
где <диск> — раздел, который нужно проверить. например, /dev/sda3
4) ждем (полтора-терабайтный раздел, занято 900гб, сканировался минут 20)
5) если все ок, то радуемся.
также стоит проверить квоты в панели — у нас они все сбросились на 0 (т.е. неограниченно). если то же самое будет — выставить квоты вручную (да, ад)