Рейтинг
+6.78

LiveStreet

8 читателей, 51 топик

Красивый номер инвайтов

LiveStreet
Кому не нравится код инвайтов вида 5884804e763972972042b1fccd6f1d13.
Можно сделать красивые номера вида Y8EC-HRF-9I5.

Для этого открываем файл include/function.php и находим там функцию func_generator (81 строка). Не будем ее менять, так как она используется в других местах, а сделаем под ней свою:
/**
 * генерирует код инвайта
 */
function func_generator_invite() {
        $allowable_characters = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
        $ps_len = strlen($allowable_characters);
        mt_srand((double)microtime()*1000000);
        $pass = "";
        for($i = 0; $i < 12; $i++) {
                if(($i == 4) || ($i == 8)) {
                        $pass .= '-';
                } else {
                        $pass .= $allowable_characters[mt_rand(0,$ps_len-1)];
                }
        }
        return $pass;
}


Затем идем в файл classes/modules/user/User.class.php и находим функцию GenerateInvite (строка 444) и меняем там строку:
$oInvite->setCode(func_generator(32));

на
$oInvite->setCode(func_generator_invite());


Чтобы пользователи могли вводить код в любом регистре сделаем небольшое изменение в файле classes/modules/user/mapper/User.mapper.class.php изменив функцию GetInviteByCode (строка 444). Меняем строку:
if ($aRow=$this->oDb->selectRow($sql,$sCode,$iUsed)) {

на
if ($aRow=$this->oDb->selectRow($sql,strtoupper($sCode),$iUsed)) {

Поиск Яндекса вместо Sphinx

LiveStreet
Настраиваем форму поиска Яндекса 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: ''}">

Набор плагинов, которые нужны на любом LS я считаю

LiveStreet
Все они проверены мной(а мусорного говна я отсеял много), с последней версией livestreet 0.4.2
Так что, думаю в течении 2011 будут актуальны, потом может уже нет(если двигло координально изменится) :)
Плагины, не затрагивающие изменение самого двигла, могут работать очень долго, просто к сведенью. Я пару полезных фич откапывал, еще трех летней давности.

  • Адсенс. Собсно все описано, картинкой.
    Скачать и активировать, вот и все: 2me.be/z/adsense.rar
  • Происходит, автоматическое подключение блогов при создании топика. Т.е. пользователю, не нужно сначала вступать в блог, чтобы писать в него. Но если у вас от 100 коллективных блогов, например, то он не подойдет, ибо при написании любого топика, пользователю сразу вся сотня предложится для выбора.
    Скачать и активировать: 2me.be/z/autoconnect.rar
  • Автоматически вставляет тег cut, если длина топика превышает заданный параметр. Если люди нубы, не знают что такое «под кат», то это как раз пригодится.
    Скачать и активировать: 2me.be/z/autocut.rar
  • Автозаполнение города, в профиле, при регистрации.
    Скачать и активировать: 2me.be/z/autotown.rar
  • Добавляет возможность вставлять видео, через код
    <iframe>
    , сейчас это новый код ютуба, да вконтактиве всякие и вимедии.
    Скачать и активировать: 2me.be/z/exvideo.rar
    *алсо можно вставлять через тег
    <video>
    который в LS, прямо по ID видосов, или через ссылки вида youtu.be и прочих коротких.
  • Возможность использовать Граватары. Ну, кто не знает — gravatar.com
    Скачать и активировать: 2me.be/z/gravatar.rar
  • Приветствия. Ну, как у меня вверху цитаты появляются. Хотя конечно с лепры же стырено.
    Скачать и активировать: 2me.be/z/greetings.rar
    Настройка текста тута: plugins/greetings/templates/skin/default/list.txt Тексты разделяются, просто — каждая отдельная строка выводится.
  • Расширенное залитие картинок. Добавление первьюшек и предпросмотра. Ну вот описывал уже.
    Скачать и активировать: 2me.be/z/imgpreview.rar
  • Листинг страниц с бегунком, как у меня тут внизу. Портит индексацию, т.е. по странично роботы не ходят.
    Скачать и активировать: 2me.be/z/lspage.rar
  • Автозаполнение поиска. Ну, вводите в поиск что-то, не успели дописать слово, а оно уже высветилось, если оно есть в базе.
    Скачать и активировать: 2me.be/z/searchautocompleter.rar
  • Кстати, про поиск. Он в livestreet по умолчанию не работает. Нужно устанавливать aceadminpanel и потом еще acemysearch. Тогда все ок будет. Но во первых, этот модуль доп админки не прошит доконца, видел как из-за нее находили дырки. Во вторых, короче это еще и ресурс жрет, на говно тарифах типо виртуального хостинга или мелких vps с 128 памяти, будет не очень. (вообще, vps покупайте от 1гб всегда, к слову)
    Поэтому я советую заюзать поиск от гугла. Делать его тута.
    Или замутить поиск от яндекса. Делается вот так.

    Еще, об этом модуле админки. С помощью него вы можете удалять/банить пользователей. Делать списки инвайтов и еще пару плюшек. Но сразу хочу предупредить, в LS структура по ID в базе. Тут расчитано на то, что тут нихуя не удаляется никогда, а просто рейтингом сносится в минусы, если мозолит глаза на главной. (рейтинги в конфиге двигла настриваются, там дохуя по разному можно структуры придумывать). Поэтому у вас могут возникнуть проблемы, если вы начнете удалять юзеров. Например коллективные лс собьются, если было лс на 3 человека, а одного из них удалили, то вывод этих трех id, в модуле лс, конечно проебался. И у чела будет глючный лс ящик, и он даже не сможет удалить такие лаго лс и отлистать в прошлое. Или например, в январе я случайно всех users удалил :) У меня везде комменты пропали, ибо вывод комментов идет с id коментатора. Ну короче совет — продумайте зарание структуру коллективных блогов, их тоже лучше не удалять. :)
  • Похожие записи. Например, откройте любую запись, и вы увидете похоже записи в сайдбаре. Они берутся из критериев: метки, автор, блоги. Находится схожесть короче.
    Скачать и активировать: 2me.be/z/similar.rar
  • Спойлер. Ну собсно добавляется тег спойлер.
    лалала, вот такой.
    Я люблю Олесю Петько.

    Скачать и активировать: 2me.be/z/spoiler.rar
  • Поток. Ну, вот такой короче. (это просто модуль, выводящий все посты, где были самые свежие комментарии, в самый верх естесно)
    Скачать и активировать: 2me.be/z/stream.rar
  • Все метки. Добавляет страницу, где будет абсолютно все метки, а не токо самые популярные, как в сайдбаре.
    Скачать и активировать: 2me.be/z/tags.rar
  • Добавляет, в сайдбар, где Блоги / Комментарии, еще блок Твиттор. В конфиге указывается аккуант и кол-во выводимых постов.
    Скачать и активировать: 2me.be/z/twitterfeed.rar
  • OpenId — регистрация через vkontakte, facebook, rambler, yandex, google, twitter.
    Скачать и активировать: 2me.be/z/openid.rar
    Потом настройка в /plugins/openid/config/config.php
    Для авторизаций, нам нада регнуть свой домен в приложениях тех систем.
    Для rambler, yandex, google не нужно. А вот для facebook, vkontakte, twitter нужно.
    Итак. Вконтакте — vkontakte.ru/apps.php?act=add&site=1, Фб — facebook.com/developers/createapp.php, twitter — dev.twitter.com/apps/new.
    Потом соответсвенно заполняем полученные ID в конфиге и секретные ключи.
    Еще отмечу, для твитора важно сделать так. А в FB, нужно указать домен в настройках. т.е. не важно где у вас установлен LS, поле домен должно быть — корневой домен, а не поддомен или там /blog и еще что-то. Вот.
  • Комментирование, через VK и FB.
    Скачать и активировать: 2me.be/z/vkfb-comments.rar
    Опять, как и с OpenId — создать приложения в соц сетях. И настроить конфиг.
  • OpenId через Loginza.
    Скачать и активировать: 2me.be/z/loginza_plugin_ls_1.0.0.zip
  • Добавление в профиль, полей для джебберов, скайпов и прочего.
    Скачать и активировать: 2me.be/z/social.rar
  • Возможность добавлять к постам подпись.

    Скачать и активировать: 2me.be/z/topicsignature.rar
    Настройка, в конфиге config/config.php
    А саму подпись(для админа), делать тута: plugins\topicsignature\templates\skin\default\sign_admin.tpl

Кланвары

LiveStreet
Плагин кланваров, для каких-ниб кс-сообществ раз.
Скачать и активировать: 2me.be/z/clans.zip

И парочка других кланваров.
2me.be/z/clanwars_for_all.rar

Еще, плагин, вывода мониторинга игровых серверов. Просто в отдельный блок сайдбара.
Скачать и активировать: 2me.be/z/gameservers.rar

Настройка игровых серверов осуществляется в файле 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"	// - Ссылка на страницу с описанием сервера
	),
));

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

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

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

Плагин: 2me.be/z/mhb-1.0.0.zip

Sticky Topics

LiveStreet
сайт/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}

Плагин: 2me.be/z/stickytopics-1.0.6.zip

Каптчу делаем хорошую

LiveStreet
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}

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

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

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

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

её код

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

{hook run='body_begin'}

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

обязательно сделать когда установите дефолт ls

LiveStreet
  • Скопировать все содержимое файла 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);