+85.90
Рейтинг
231.11
Сила

Владимир

Как получить в шаблоне значение из конфига плагина?

Пишу так:
{$smarty.config.plugin.myPlugin.profilename.charlimit.max}


В конфиге это выглядит так:
$config['profilename']['charlimit']['max'] = 19;


Но ничего не выводится. Почему?

Дополнительные поля - использование в плагинах

В новой разрабатываемой версии LiveStreet есть функционал дополнительных (пользовательских) полей. Сейчас он задействован для топиков. Суть сводится к удобной возможности добавлять в различные объекты новые поля разных типов.

Сейчас поддерживаются следующие типы полей:
  • Целое число
  • Дробное число
  • Строка
  • Текст
  • Чекбокс
  • Дата
  • Выпадающий список
  • Теги
  • Ссылка на видео
  • Файл
  • Изображение

Постепенно мы наращиваем функционал и количество типов.
За весь функционал по полям отвечает модуль Property. Рассмотрим пример подключения функционала дополнительных полей к плагину «Статьи» на базе ORM.

Читать дальше →

Кнопка с меняющейся по клику иконкой (bootstrap)

Имеется кнопка подписки/отписки в профиле пользователя с иконкой:
<li class="follow">
    <a href="#" onclick="ls.user.followToggle(this, {$oUserProfile->getId()}); return false;" class="btn btn-xs btn-default">
        <i class="icon{if $oUserProfile->isFollow()} icon-minus{else} icon-plus{/if}></i>{if $oUserProfile->isFollow()} {$aLang.profile_user_unfollow}{else} {$aLang.profile_user_follow}{/if}
    </a>
</li>


Чуть выше прогружаютя текстовки:
<script>
    jQuery(function($){
        ls.lang.load({lang_load name="profile_user_unfollow,profile_user_follow"});
    });
</script>


Стоит задача, чтобы иконка менялась в соответствие с текущим статусом подписки.
Получается, но при подписке иконка исчезает и появляется только при перезагрузке страницы. Т.е. if-ы в классах иконки сразу не отрабатывают.

При подписке для li.follow a задется класс followed.
Это делает скрипт из user.js:
this.followToggle = function(obj, iUserId) {
    if ($(obj).hasClass('followed')) {
        ls.stream.unsubscribe(iUserId);
        $(obj).toggleClass('followed').text(ls.lang.get('profile_user_follow'));
    } else {
        ls.stream.subscribe(iUserId);
        $(obj).toggleClass('followed').text(ls.lang.get('profile_user_unfollow'));
    }
    return false;
};

Попробовал задать для li.follow a background-image с нужными координатами в спрайте, а для li.follow a.followed соответствующий background-position. Все работает как надо. Но «рушиться» bootstrap-овская кнопка и надо верстать вручную.

Вопрос: Что необходимо дописать в скрипт выше, чтобы иконке задавался соответствующий класс (icon-plus и icon-minus)?

Как убрать страницу "Приходите к нам Еще"

Как убрать страницу «Приходите к нам Еще» после нажатия в юзербаре — выход.
Выход должен произойти на главную странице без перехода в экшн actions/ActionLogin/exit.tpl

Как мне вывести блок в сайтбар.

Здравствуйте.
Хочу написать плагин который будет выводить в сайтбар блок с определенным содержимым. Как мне это сделать? Возможно ли при помощи хука вывести блок в сайтбар?
Сейчас делаю так
class PluginFloat_HookFloat extends Hook
{

    public function RegisterHook()
    {
            $this->AddHook('template_sidebarfloat', 'float_view');
    }

    public function float_view()
    {
        return $this->Viewer_Fetch(Plugin::GetTemplatePath(__CLASS__) . 'block.float.tpl');
    }

}

в файлах шаблона, где нужен этот блок пишу
{hook run='template_sidebarfloat'}

ничего не происходит.
Как такое правильно сделать?

Вывод онлайн возле аватары или ника пользователя в сообщениях

Доброе время суток, подскажите как правильно вывести работу определения пользователя Онлайн/Оффлайн ли он сейчас… Хотелось бы это реализовать в списке комментария Топика comment.tpl.

Брал сам код из actions\ActionProfile\sidebar.tpl

<div class="status {if $oUserProfile->isOnline()}status-online{else}status-offline{/if}">{if $oUserProfile->isOnline()}{$aLang.user_status_online}{else}{$aLang.user_status_offline}{/if}</div>

выдает ошибку…

Как правильно и проще это осуществить?

Прикрепляем топик без плагина

В LS существует множество возможностей для реализации самого разного функционала как с использованием плагинов, так и без них.

Допустим мы хотим реализовать следующий функционал: на главной странице для гостей сверху всегда выводится определенный топик. Конечно мы можем написать под эту задачу несложный плагин, повесить его на хук в шаблоне и радоваться, но мы поступим проще (на все про все уйдет 4 строчки c учетом замечаний kpoxas три строчки). Сделаем все в шаблоне, написав при этом минимальное кол-во кода. Итак.

Нас интересует главная страница, а значит экшен Index, шаблон вывода которого находится в файле templates/skin/synio/actions/ActionIndex/index.tpl который и будем изменять.

Сразу приведу код
{if !LS::CurUsr() and !Router::GetActionEvent()}
	{include file='topic_topic.tpl' oTopic=$LS->Topic_GetTopicById(8)}
{/if}
Да-да, больше ничего не нужно, результат достигнут ;)


А теперь подробности того как это все работает

MarkitUP для новичков. Или как добавить свои кнопки в редактор? [Перепост]

Перепост давно почившего из DB, но полезного топика (битые ссылки убрал).
По мотивам: этого топика и этого комментария, спасибо lifecom .

1. Введение

Заголовок говорит сам за себя — данная статья это итоги моего ковыряния в редакторе MarkitUP.
Все началось с того, что на сайте сообщества появилась небольшая статья о том как добавить кнопку в редактор (точнее это был вопрос) и в комментариях пользователь Shrike дал очень важные для меня наводки. После этого у меня появилась идея добавить пару новых возможностей в редактор:

  1. Цвет текста
  2. Выравнивания текста по центру, левому краю, правому краю
  3. Вертикальное выравнивание текста (sub, sup)

Читать дальше →