Рейтинг
+6.78

LiveStreet

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

Еще немного иногда полезных плагинов

LiveStreet
Добавление возможности голосовать гостям в опросах.
Поддерживается голосование, как зарегистрированных так и анонимных пользователей. Анонимные пользователи могут голосовать раз в сутки.
Скачать и активировать: 2me.be/z/questions.zip

Проверка грамотности при помощи Yandex spell API
Позволяет проверять корректность текстов топиков при помощи яндекса. В данной версии выводит специальный блок, в правой части экрана, при нажатии на нем осуществляется проверка грамотности написания топика.
Скачать и активировать: 2me.be/z/empyandexspeller.zip

Список топиков из этого же блога, под постом.
Данный плагин выводит после текста топика, список топиков из этого же блога и переключаться между ними. Что бы им воспользоваться нужно будет поменять файл topic.tpl
найти
<li class="author"><a href="{$oUser->getUserWebPath()}" rel="nofollow">{$oUser->getLogin()}</a></li>
</ul>

после добавить
{hook run='topic_after_tags' oTopic=$oTopic} 

После этого скачать и активировать: 2me.be/z/emptopiclist.zip

Feedback (Обратная связь)
Обратную связь по сути можно и не делать :) Но если кому-то, хочется, Отдельной Формочкой, как по старинке.
Умеет: анти-флуд контроль; возможность отображени обратной связи для гостей в закрытом режиме работы сайта; возможность вывода ссылки на обратную связь в формы регистрации и авторизации; возможность вывода ссылки на обратную связь в главное меню сайта; возможность замены текстового поля «Тема письма» выпадающим списком; возможность указывать несколько ящиков, на которые будут приходить письма.
Входящий адресс(а) указывается в файле: \plugins\feedback\config\config.php
Все настройки находятся в файле: \plugins\feedback\config\config.php
Добавить элементы в выпадающий список тем можно в файле: \plugins\feedback\templates\language\язык.php
Шаблон письма можно отредактировать в файле: \plugins\feedback\templates\skin\скин\notify\язык\notify.feedback.tpl
Скачать и активировать: 2me.be/z/Feedback_1.2.rar

Добавление к посту, ссылки на источник.
Пойдет тем, кто прямо батхерит, когда их копипастят через rss или граберами всякими. Теперь копипастится будет и ссылка на исходный пост ;)
Скачать и активировать: 2me.be/z/empmakesource.zip

Редактирование id

LiveStreet
Если вам, все же, приспичило страдать хуетой.

То для редактирования Людей, или там Комментариев, есть два плагина.

Редактирование людей
Плагин позволяет админам редактировать все поля в профиле любого пользователя. Плюс дополнительно админ может регить пользователей, например это можно использовать для регистрации ботов если это нужно. Но думаю что больше этот пагин будет полезен разработчикам, например для тестирования своих наработок после установки чистого дистрибутива движка.
Скачать: 2me.be/z/people.zip

Редактирование комментариев +TinyMCE

Для конфигурации доступны параметры условий возможности редактирования комментария для пользователя: срок, прошедший с момента публикации, уровень комментария в древе, роль пользователя на сайте, тип комментируемого топика.
Так же в конфиге есть возможность включить использование редактора TinyMCE в комментах. Для этого в таблице prefix_comment создается дополнительное поле comment_text_source.
Скачать и активировать: 2me.be/z/Plugin_Ls-Cmtedit-1.6.zip

НО, если все же что-то не так. (у меня не на всех стилях работало)
То делайте вот это.
comment_tree.tpl
на второй строчке, сразу после
<script ... src=".../comments.js"></script>

вставить
{include file='cmtedit_form.tpl'}

comment.tpl
перед кнопкой удаления коммента:
{if !$oComment->getDelete() and $oUserCurrent and $oUserCurrent->isAdministrator()}

вставить
{include file='cmtedit_button.tpl'}

в том же comment.tpl
найти
<div class="text">
        {if $oComment->isBad()}
                <div style="display: none;" id="comment_text_{$oComment->getId()}">
                {$oComment->getText()}
                </div>
                 <a href="#" onclick="$('comment_text_{$oComment->getId()}').style.display='block';$(this).style.display='none';return false;">{$aLang.comment_bad_open}</a>
        {else}  
                {$oComment->getText()}
        {/if}                                                           
</div>

заменить на:
<div class="text" id="comment_text_{$oComment->getId()}" {if $oComment->isBad()}style="display: none;"{/if}>
        {$oComment->getText()}
</div>                          
{if $oComment->isBad()}
        <div class="text-more">
                <a href="#" onclick="$('comment_text_{$oComment->getId()}').style.display='block';this.parentNode.style.display='none';return false;">{$aLang.comment_bad_open}</a>
        </div>
{/if}
{if $oComment->getCommentDateEdit()}
        <div class="text-more edit-info">
                {$oComment->getEditInfo()}
        </div>
{/if}

Отправка подписки через jabber

LiveStreet
Все последующие шаги можно делать только если вы добавили поле jabber'а в профиль! :)
Например плагином Социальные контакты.

Берем необходимые файлики, копируем каталоги /classes/, /config/ и /template/languages/ соответственно в каталоги classes/ config/ и languages/ на хосте, где установлен LS.
Потребуется замена файла Notify.class.php

Копируем файлы из каталога templates/skin/new/notify в соответствующий каталог используемой вами темы.
Выполняем sql запрос: (на всякий не забывайте делать бекапы sql, при любой работе с sql, ибо если там что-то накосячится, то это геморой)
alter table prefix_user add user_settings_notice_method enum('mail', 'jabber') not null default 'mail' after user_profile_foto;

Находим в файле /classes/actions/ActionSettings.class.php
if (isset($_REQUEST['submit_settings_tuning'])) {
    $this->Security_ValidateSendForm();

и после этого добавляем:
$sNoticeMethod = getRequest('settings_notice_method');
            if ($sNoticeMethod == "jabber" && is_null($this->oUserCurrent->getProfileJabber())) {
                $this->Message_AddErrorSingle($this->Lang_Get('settings_tuning_no_jid'));
                return;
            }
            $this->oUserCurrent->setSettingsNoticeMethod( $sNoticeMethod );


Находим
$this->oUserCurrent->setProfileJabber(null);
и добавляем после этого:
$this->oUserCurrent->setSettingsNoticeMethod('mail');


в файле: /classes/modules/user/entity/User.entity.class.php находим:
return $this->_aData['user_profile_foto'];
    }

и добавляем после этого:
public function getSettingsNoticeMethod() {
        return $this->_aData['user_settings_notice_method'];
    }

находим:
$this->_aData['user_profile_foto']=$data;
    }

и добавляем после этого:
public function setSettingsNoticeMethod($data) {
        $this->_aData['user_settings_notice_method']=$data;
    }


в файле: /classes/modules/user/mapper/User.mapper.class.php находим:
user_profile_foto = ? ,

и добавляем следом:
user_settings_notice_method = ? ,

находим:
$oUser->getProfileFoto(),

и добавляем следом:
$oUser->getSettingsNoticeMethod(),


в файле /templates/skin/<ваша-тема>/actions/ActionSettings/tuning.tpl находим:
<label for=""><input {if $oUserCurrent->getSettingsNoticeNewFriend()}checked{/if} type="checkbox" id="settings_notice_new_friend" name="settings_notice_new_friend" value="1" class="checkbox" /> — {$aLang.settings_tuning_notice_new_friend}</label>


и после этого добавляем:
<br />
    <select name="settings_notice_method" style="width: 200px;">
        <option value="mail" {if $oUserCurrent->getSettingsNoticeMethod()=='mail'}selected{/if}>{$aLang.settings_tuning_notice_method_mail}</option>
        <option value="jabber" {if $oUserCurrent->getSettingsNoticeMethod()=='jabber'}selected{/if}>{$aLang.settings_tuning_notice_method_jabber}</option>
    </select>


конфиг /config/modules/jabber/config.php надо исправить в соответствии со своими настройками, указав jid от имени которого будут рассылаться уведомления.

Создание каких-то любых рассылок, по критериям из профиля юзеров

LiveStreet
Создание рассылок.
Говно хосты, или vps с лимитами на отправку исходящего — не получится. Даже не пытайтесь.

  • Есть возможность фильтра получателей по свойству «Пол» («мужчины», «женщины», «не указан»)
  • Можно посмотреть список рассылок и статус хода рассылки
  • В списке рассылок можно приостановить начатую рассылку или возобновить приостановленную
  • Можно выбирать стартовать или не стартовать рассылку сразу после её сохранения
  • Рассылка производится не сразу, а пачками по 20 писем (количество можно менять в конфиге). Для этого нужно поцепить на cron скрипт рассылки /plugins/mailing/include/cron/send-mail.php
  • Отправленные сообщения не отображаются в вашем списке сообщений до тех пор пока пользователь не ответит на это сообщение (вам ведь важна обратная связь с пользователями?).

Для того, чтобы сообщения отправлялись нужно поцепить на cron скрипт рассылки /plugins/mailing/include/cron/send-mail.php. У нас он запускается каждые 5ть минут:
*/5 * * * * /var/www/domain.ru/www/plugins/mailing/include/cron/send-mail.php

*http://ru.wikipedia.org/wiki/Cron

сайт.ru/mailing/ Рассылка сообщений
сайт.ru/mailing/list Список рассылок

Скачать и активировать: 2me.be/z/ls-mailing-v0.1.zip

Яндекс.Карты / Google Maps

LiveStreet
Например, если вы захотите сделать что-то типо, gdecasino.org и подобных.


Плагин умеет управлять маркерами и категориями маркеров на карте, выводить карту на определенную страницу, выводить меню категорий маркеров.
Плагин работает, без лагов, я проверял. Поэтому и пишу тута, может кто не знает, не нашел в сраче, а он очень полезный ;)
Далее, я прокопипастю, то что писал автор.

Что такое категория маркеров?
Категория маркеров это некоторое свойство маркера, в котором определяется как будет выглядеть иконка маркера на карте.
Свойства категории:
— Название — любое текстовое название. Например, Офисы компании;
— Имя стиля — требуется для генерации карты, набор символов на латинице. Например, offices.
— Ссылка на иконку маркеров в категории — иконка маркера, которая появляется на карте при выборе категории. Здесь удобно пользоваться стандартными иконками Яндекс.Карт.

Что такое маркер?
Это значек и балун на карте, который задается следующими свойствами:
Название, широта, долгота, категория, адрес, телефон, ссылка на подробную информацию и ссылка на изображение в балуне. Увидеть где и какие свойства проявляются достаточно просто — поиграйтесь с демками.

Как можно настроить карту?
Для карты можно задать API ключ Яндекс.Карт, ширину, высоту, координаты центра, начальное приближение, любые из стандартных инструментов управления на выбор, которые сейчас включены на демке, а также строку поиска по объектам на карте.

Как работает поиск?

Стандартный элемент управления поиска ищет адреса в видимой области карты, а если ничего не найдено, то везде.


Поиск объекта на карте ищет объекты (маркеры) по названию маркера. При клике на результат поиска, на карте открывается балун найденного маркера.
Поиск объекта на карте использует для предложения результатов плагин jQuery, однако подключать дополнительную библиотеку не требуется — jQuery подгружается вместе с Яндекс.Картами.



Скачать последнюю стабильную, и которая помоему ушла в архив, т.е. наконец все лаги отточились: 2me.be/z/ymap_0.1.4.zip

Приветственное лс, если вдруг нужно, при реги

LiveStreet
Итак, добавляем в 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 и т.д :)

Запрет редактировать посты, где есть комменты

LiveStreet
Иногда люди которые дрочили не один год, у которых не одна сотня постов, из-за чего-то обижаются. Батхер или трололо. Или может они из инета сваливают в реал, искать девочек и менять жизнь. Короче такая хуйня всегда происходит. Еще с времен форумов :) Сам когда-то злился и от обиды «вытирал все присутствие себя», лет 7 назад, на каком-то phpbb форуме :)))

Так вот, чтобы такой хуйни не было. Ведь зачастую, на эмоциях могут снести полезные топики.

То вот, решение, уже готовое под плагин.
Скачать и активировать: 2me.be/z/topicblock.zip

Иногда важно, чтобы люди увидели ЛС

LiveStreet
Этим способом, можно ЗАЕБАТЬ СУКА ЛЮДЕЙ :)
Появление окна при начальной загрузке браузера, куки удаляются при закрытии.


В случае наличия сообщений выдает предупреждения. Необходимо включить обновление для новых писем.


Как включить обновление значков при появлении сообщений?
Правим код в конфиге:
// Модуль Talk
$config['module']['talk']['reload']     = true;

*это увеличит нагрузку на сервер.

Скачать и активировать: 2me.be/z/message.zip

про ограничение длинны топика

LiveStreet
Длинна топика не может превышать 15000 симоволов. ©
Конечно сразу ответ, что нужно изменить параметр в config.php
$config['module']['topic']['max_length'] = 50000;  // на 50000 символов

Но это не поможет ;)

Открываем ActionTopic.class.php и находим блок
/**
                 * Проверяем есть ли содержание топика
                 */
                if (!func_check(getRequest('topic_text',null,'post'),'text',2,30000)) {
                        $this->Message_AddError($this->Lang_Get('topic_create_text_error'),$this->Lang_Get('error'));
                        $bOk=false;
                }

меняем на
/**
                 * Проверяем есть ли содержание топика
                 */
                if (!func_check(getRequest('topic_text',null,'post'),'text',2,Config::Get('module.topic.max_length'))) {
                        $this->Message_AddError($this->Lang_Get('topic_create_text_error'),$this->Lang_Get('error'));
                        $bOk=false;
                }