+0.65
Рейтинг
3.84
Сила
  • avatar Gmugra
  • 0
Править что-то в API это очень грязный путь, вы уверены что это нельзя сделать через sphinx.conf? max_matches дириктива там есть — sphinxsearch.com/docs/2.0.7/conf-max-matches.html
  • avatar dsg
  • 0
Проблема была в том, что в файле /engine/lib/external/Sphinx/sphinxapi.php стоит дефолтное значение maxmatches = 1000 (217 строка) и поэтому подставлять в
$this->oSphinx->SetLimits($iOffset, $iLimit, ...
больше тысячи он не давал.
Надо вписать другое дефолтное значение и можно смело его ставить в /classes/modules/sphinx/Sphinx.class.php
  • avatar Chiliec
  • 1
Ну это уже костыли придется городить и выпиливать некоторый функционал.
Ну например в начало функции выше можно добавить условие:
if ($oBlog->getType()=='close') {
  if ($oBlog->getUserIsAdministrator() or $oBlog->getUserIsModerator()) {
    return true;
  } 
  return false;
}
а условие рейтинга соответственно не трогать. Ну и выпиливать везде условия закрытости «закрытых» блогов, например docs.livestreetcms.com/api/1.0/ActionBlog#EventShowBlog-detail
if($oBlog->getType()=='close'
        and (!$this->oUserCurrent
            or !in_array(
                $oBlog->getId(),
                $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent)
            )
        )
    ) {
        $bCloseBlog=true;
    } else {
        $bCloseBlog=false;
    }
заменить на
$bCloseBlog=true;
docs.livestreetcms.com/api/1.0/ActionBlog#EventShowTopic-detail удалить
if($oTopic->getBlog()->getType()=='close'
        and (!$this->oUserCurrent
            || !in_array(
                $oTopic->getBlog()->getId(),
                $this->Blog_GetAccessibleBlogsByUser($this->oUserCurrent)
            )
        )
    ) {
        $this->Message_AddErrorSingle($this->Lang_Get('blog_close_show'),$this->Lang_Get('not_access'));
        return Router::Action('error');
    }
и т.д. Но лучше так не делать)
  • avatar Chiliec
  • 2
docs.livestreetcms.com/api/1.0/ModuleACL#CanAddTopic-detail
public function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
    /**
     * Если юзер является создателем блога то разрешаем ему постить
     */
    if ($oUser->getId()==$oBlog->getOwnerId()) {
        return true;
    }
    /**
     * Если рейтинг юзера больше либо равен порогу постинга в блоге то разрешаем постинг
     */
    if ($oUser->getRating()>=$oBlog->getLimitRatingTopic()) {
        return true;
    }
    return false;
}
Заменить условие, например так:
public function CanAddTopic(ModuleUser_EntityUser $oUser, ModuleBlog_EntityBlog $oBlog) {
    /**
     * Если юзер является создателем блога то разрешаем ему постить
     */
    if ($oUser->getId()==$oBlog->getOwnerId()) {
        return true;
    }
    /**
     * Если юзер является администратором или модератором в блоге то разрешаем постинг
     */
    if ($oBlog->getUserIsAdministrator() or $oBlog->getUserIsModerator()) {
        return true;
    }
    return false;
}
  • avatar noob
  • 0
Спасибо всем отписавшимся за помощь.

Germis , можно некоторые уточнения?

1-й вопрос) Правильно ли я понимаю, что нужно в файле «livestreet / classes / actions / ActionTopic.class.php» просто удалить следующую строчку кода:
/**
* Добавляем автора топика в подписчики на новые комментарии к этому топику
*/
$this->Subscribe_AddSubscribeSimple('topic_new_comment',$oTopic->getId(),$this->oUserCurrent->getMail());


2-й вопрос) Правильно ли я понимаю, что мне необходимо зайти в phpmyadmin и в таблице prefix_user в строках:
`user_settings_notice_new_topic` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_new_comment` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_new_talk` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_reply_comment` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_new_friend` tinyint(1) NOT NULL DEFAULT '1',

поменять все '1' на '0'?
  • avatar gran
  • -1
Брендирование цветом неудачная идея, это на сайте получится компании-попугаи, картинка делает уникальность, а цвет дополняет переходы. Заполнение картинкой я тоже думал сделать, но пока не понял актуальности.
В конфиг сайта, там где описание блоков главной страницы rule_index_blog добавить
'companies' => array('params' => array('plugin' => 'company'), 'priority' => 4),
  • avatar virgin
  • 3
Вот у меня записка, себе, про фотосет — может, пригодится. Что-то отсюда, из поиска на этом сайте, что-то методом тыка, короче:

1. Фотосет. Если вы хотите дать пользователям возможность просматривать увеличенные фото из фотосета прямо в ленте топиков, не заходя на страницу самого топика фотосета, то нужно в файле topic_photoset.tpl удалить условие:
{if !$bTopicList}
не забудьте удалить закрывающий тег
{/if}


2. Вот какие опции надо вставить в файл templates/skin/simple/topic_photoset.tpl, чтобы фотосет не светил в глаза белым при смене картинок, что сказочно раздражает. После
$('.photoset-image').prettyPhoto({
надо вставить:
theme: 'pp_default',
		social_tools:'',
		show_title: false,
		slideshow:false,
		deeplinking: true,
		overlay_gallery: false,
		opacity: 0.85,
		animation_speed: 0
потом будет скобка:
});
	});
</script>
Обращаю внимание на overlay_gallery: false, это убирает маленькие никчомные превьюшки с самой картинки в лайтруме (лайтрум — это, если непонятно, непосредственно черный экран с большой картинкой).  И кто только придумал эту хрень — мешает же смотреть-то, да и на странице на сайте есть превью всех картинок! Но если все же превьюшки нужны еще и в лайтруме, то надо писать: true.

3. Файл со стилями для фотосета engine/lib/external/prettyPhoto/css/prettyPhoto.css я переписала весь, стандартный устаревший дизайн фотосета меня никак не устраивал: нарисовала стрелочки модные, лишнее выкинула (стрелки вперед-назад, например, там два раза повторяются), чего и вам советую сделать.

4. Изображение на странице топика-фотосета: в шаблоне прописан вызов с шириной 500, изменить можно здесь: templates/skin/simple/topic_photoset.tpl
<img src="{$oMainPhoto->getWebPath(500)}" alt="image" id="photoset-main-image-{$oTopic->getId()}" />
Плюс надо в конфиге изменить:
array( 
    'w' => 500,
    'h' => null,
    'crop' => false, 
    ),


5. Фотосеты везде (кроме комментариев, к огромному сожалению) — это плагин Lite Image, покупать на сайте Netlank'а. Плагин дает мультизагрузку, плюс слайдер к ней прикручен, плюс фотосет по клику на картинку, плюс размеры картинкам можно менять. Но предупреждаю сразу: если этот плагин поставить как есть, то у пользователей задымится голова: кнопок много, логики в их визуализации никакой, и ничерта, короче, непонятно — хотя функциональность полная, разве что мышкой картинки в окно загрузки нельзя таскать, а остальное — всё есть. Но придется самому продумывать дизайн (то есть визуальную организацию), иначе жопа.

6. На шестой вопрос выше исчерпывающе ответил kpoxas.

7. Теперь — кнопка (проходит у меня под кличкой «Кнопка-п**дец»). Голубая кнопка, зашитая во флеш-ролик, отображается как настоящий визуальный п**дец, голубая. Ей можно поменять цвет и шрифт, вот тут: engine/lib/internal/template/js/main.js. У меня вот какие опции сейчас (больше кнопка ничего не слушается всё равно):
button_width: 100,
    button_height: 28,
    button_text : '<span class="button">'+ls.lang.get('topic_photoset_upload_choose')+'</span>',
    button_text_style : '.button { color: #34c48f; font-size: 13px; font-family: "helvetica neue", helvetica, arial, sans-serif; }',
    button_text_left_padding: 12,
    button_text_top_padding: 3,
    button_text_bottom_padding: 12,
    button_cursor: SWFUpload.CURSOR.HAND,
Кстати, я тут на сайте видела, как ort не помню с кем спорил про страшную голубую кнопку — он утверждал, что ее можно изменить, а ему отвечали: да нифига!, а он говорил, что раз он смог ее, кнопку, изменить обычным порядком — то любой недурак может. Но как именно он это сделал, он так и не рассказал, ё.

8. Еще фотосет имеет мощный косяк при смене размеров для загрузки! Если сменить размеры (пункт 4.), то картинки (как раз те превью, размер которым изменен) не будут отображаться в уже опубликованных топиках-фотосетах на странице сайта, а будут только в лайтруме. Netlank написал инструкцию, как это исправить, советую прочитать, а еще проще — не менять размеры на уже работающих сайтах. :)

Ну вот, вроде всё про фотосет.
Чат без копирайтов кому нужен:

livestreet.ru/blog/addons/14125.html
array(
                'w' => 250,
                'h' => null,
                'crop' => false,
        )

Ресайз фото до ширины 250px, высота пропорционально, при 'crop' => true будет выдавать ошибку, без хирургического вмешательства не обойдешься
все отлично работает! мои пользователи рады.

будет круто если добавите ссылку Прямого эфира, то есть последние комментированные темы.

кстати, здесь можно тестировать mobilephoneemulator.com/
отличный сайт-эмулятор. можно делать вот такие скрины:

  • avatar ort
  • 2
этот плагин нужно прописать в /plugins/plugins-mobile.dat
  • avatar aex
  • 0
А вообще, вот такие голосовалки, типа Юзер года, очень популярны. Я на одном из сайтов типа такого делал. Правда у меня там были номинации по разделам, типа, лучший Политик, Философ, Поэт, Вредина, Путешественник… и т.п. Победителю к нику пришпиливалась медалька и он получал определенные льготы. Так такой фурор был, столько споров, комментов, обсуждений. После подведения итогов потом еще целый месяц обсуждали и спорили. Рекомендую на своих проектах тоже сделать. Очень активизирует юзеров. Даже молчуны и те разговорились :)
  • avatar aex
  • 1
Жестко-не жестко, но плагин полезный. Я типа такого себе сделал, только там пароль по платному смс приходит, юзеры пользуются активно. Правда, не 18+, но просто контент ценный :)
  • avatar Shrike
  • 0
Ага, точно есть!
classes\modules\topic\entity\Topic.entity.class.php
$this->aValidateRules[]=array('topic_tags','tags','count'=>15,'label'=>$this->Lang_Get('topic_create_tags'),'allowEmpty'=>Config::Get('module.topic.allow_empty_tags'),'on'=>array('topic','link','question','photoset'));
  • avatar acobat
  • 0
ок сменил в базе дефолты строк

`user_settings_notice_new_topic` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_new_comment` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_new_talk` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_reply_comment` tinyint(1) NOT NULL DEFAULT '1',
  `user_settings_notice_new_friend` tinyint(1) NOT NULL DEFAULT '1',
Вообщем еще 1 проблема была с социалом, в режиме Block текст уходил за пределы(за скролбар) не переносясь на другую строку. Решается так:

Идем в /shoutbox/templates/skin/default/css/shoutbox.css и ищем в нем
#shoutbox_module .sb_table tr td
прямо перед ним вставляем:
#shoutbox_module .sb_table {
    table-layout: fixed;
}
Сохраняем, чистим кэш.
При желании можно переделать так. (картинка кликабельна)


Сделано на заказ для конкретного сайта (выкладываться не будет), но могу переделать чат под личные нужны с нужным функционалом под ваш сайт за денежку.
  • avatar PSNet
  • 2
в файл topic_list.tpl шаблона внести изменения (выделено что именно внести)


{if count($aTopics)>0}
	{add_block group='toolbar' name='toolbar_topic.tpl' iCountTopic=count($aTopics)}

	{foreach from=$aTopics item=oTopic}
		{if $LS->Topic_IsAllowTopicType($oTopic->getType())}
			{assign var="sTopicTemplateName" value="topic_`$oTopic->getType()`.tpl"}
			{include file=$sTopicTemplateName bTopicList=true}
			




      {* начало кода комментариев *}
      {assign var="aCommentsPreview" value=$LS->Comment_GetCommentsByTargetId($oTopic->getId(),'topic',1,3)}

      {foreach from=$aCommentsPreview.comments item=oComment}
        {assign var="oUser" value=$oComment->getUser()}
        {assign var="oTopic" value=$oComment->getTarget()}
        {assign var="oBlog" value=$oTopic->getBlog()}

        user: {$oUser->getLogin()}
        comment: {$oComment->getText()}
        <br />
        
      {/foreach}
      {* /конец кода комментариев *}







		{/if}
	{/foreach}

	{include file='paging.tpl' aPaging=$aPaging}
{else}
	{$aLang.blog_no_topic}
{/if}

  • avatar Popori
  • 3
К вопросу о том, чтобы читателю сайта было понятно за что у него начисляется уровень. В своё время писал подробные ответы на вопросы по сайту на ЛС. Может кому пригодится, и смогут адаптировать для предложенной системы. Рейтинговая система с уровнями и процентами хороша для игрового сообщества.

Что такое «Прямой эфир»?
В этом блоке отображаются последние комментарии и опубликованные топики пользователей. Чтобы его обновить, просто нажмите на кнопки «Комментарии» или «Публикации».

Что это за цифры и стрелочки?
На сайте действует рейтинговая система, основанная на голосовании за комментарии, топики, блоги и других людей. Цифры показывают рейтинг топика (комментария, блога), а значит и его важность, полезность, актуальность. Рейтинговая система является средством для саморегулирования сообщества.

Как поднять рейтинг и силу?
Рейтинг — это ваш статус в сообществе, который наделяет возможностями по мере его роста. Он изменяется, когда другие пользователи голосуют за ваш топик или непосредственно у вас в профиле.

Сила влияет на то, как сильно будет влиять ваш голос при голосовании за что-либо.
Например, пользователь с силой меньше 100 при голосовании за топик увеличивает его рейтинг на 1, а пользователь с силой больше 100 увеличивает рейтинг топика на 2.
Сила изменяется, когда другие пользователи голосуют за ваши комментарии, топики или непосредственно у вас в профиле. Соответственно, чтобы поднять рейтинг и силу нужно писать полезные и актуальные статьи на сайте Попори, чтобы другие пользователи захотели за них положительно проголосовать.

Здесь любой пользователь может написать топик?
Это не очередной сайт, где пишут только администраторы. Любой пользователь может написать топик, но не в каждый тематический блог — это зависит от рейтинга пользователя и порогового рейтинга конкретного блога. Если ваш топик, опубликованный в тематическом блоге наберёт 7 и более плюсов, он попадёт на главную страницу сайта Попори. По умолчанию вместе с регистрацией нового пользователя, создаётся и его персональный блог, в который он может всегда написать. Иными словами, это средство заявить о себе, когда не хватает рейтинга опубликовать материал в тематический блог, задать вопрос или написать оффтопик. Чтобы написать новый топик нажмите на кнопку с карандашом в меню и выберите тип топика. Подробнее о том, как создавать топики читайте в разделе помощи.

Почему, когда я хочу опубликовать топик в определённый блог, его нет в выпадающем списке пунка «В какой блог публикуем», но при этом он есть в разделе Блогов?
Это значит, что у выбранного вами блога стоит ограничение по рейтингу на публикацию в нём. Потому для начала топик стоит опубликовать в персональный блог, а уже по достижении порогового значения рейтинга, перенести в нужный тематический блог.

Я написал топик, но его нет в списке опубликованных. Куда он делся?
  1. Проверьте раздел Черновики — возможно, вы нажали кнопку «Сохранить в черновиках» вместо «Предпросмотр» или «Опубликовать».
  2. Если ваша статья сначала была видна в ленте топиков, а потом пропала, то проверьте подраздел Плохие — возможно ваш топик набрал граничное число отрицательных голосов и отсеялся из основной ленты.
  3. Возможно, ваш топик попал под разряд флуд/спам или иным способом нарушил правила сайта и был удалён администрацией.


Насколько важно правильно указывать метки?
Метки необходимы для совместной категоризации и описанию контента. На главной странице сайта и в подразделах расположено облако меток. В облаке наглядно представлены метки, по которым классифицирован опубликованный на сайте контент. Чем больше шрифт метки, тем чаще он используется для разметки контента, и наоборот. Также на основе меток формируется список похожих топиков в соответствующем блоке в сайдбаре.
  • avatar PSNet
  • 0
избыточность кода не пугает?)
ведь можно так:

<h3 style="display:inline-block;">
        {if $oUser->getProfileName()}
          {$oUser->getProfileName()|escape:'html'}
        {else}
          {$oUser->getLogin()}
        {/if}
</h3>
                {assign var="oSession" value=$oUser->getSession()}
                {if (time() - strtotime($oSession->getDateLast()))<900}
                        <span style="font-size: 10px;margin-top: 1px;background: #268D0F;color: white;padding: 0 4px 1px;" title="{$aLang.denis_last_activity}: {date_format date=$oSession->getDateLast() hours_back="12" minutes_back="60" now="60" day="day H:i" format="d F Y, H:i"}">{$aLang.denis_status_online}</span>
                {else}
                        <span style="font-size: 10px;margin-top: 1px;background: #DDD;color: white;padding: 0 4px 1px;" title="{$aLang.denis_last_activity}: {date_format date=$oSession->getDateLast() hours_back="12" minutes_back="60" now="60" day="day H:i" format="d F Y, H:i"}">{$aLang.denis_status_offline}</span>
                {/if}