+26.19
Рейтинг
81.26
Сила

Виктор

Дело в том, что лайвстритом (а так же kliqqi, hotaru и пр.) интересуются тогда, когда хотят создать аналог пикабу, 9gag, reddit и т.п. Это его ниша, а для другого есть Wordpress. Денег у таких хотящих либо мало, либо не много, поэтому ищут готовое решение за недорого бесплатно. Шаблон developer-kit как раз такое решение (в некотором приближении). Вот и интересуются. А если создать шаблон аля pikbu/9gag то это станет хитом (в масштабах UGC CMS). Спасибо.
  • avatar ff00
  • 3
Чтобы получилась такая ReCaptcha:
ReCaptcha

Регистрируешся тут: www.google.com/recaptcha/intro/

В header.tpl добавляешь в блоке head добавляешь
{if !$oUserCurrent}<script src='https://www.google.com/recaptcha/api.js'></script>{/if}


В том поле где у тебя стояла каптча, вместо каптчи пишешь:
<div class="g-recaptcha" data-sitekey="RECAPTCHA_PUBLIC_KEY"></div>


Где RECAPTCHA_PUBLIC_KEY — твой публичный ключ рекаптчи

В \engine\modules\validate\entity\ValidatorCaptcha.entity.class.php дописываешь функцию:
public function validateCaptcha() {
	$validateCaptcha = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret=RECAPTCHA_SECRET_KEY&response='.$_POST["g-recaptcha-response"].'&remoteip='.$_SERVER['REMOTE_ADDR']);
	$validateCaptcha = json_decode($validateCaptcha);
	if(!$validateCaptcha->success) return false;
	return $validateCaptcha->success;
}


Где RECAPTCHA_SECRET_KEY — твой секретный ключ рекаптчи

В этом же файле в функцию validate, в проверку условия:
if (!isset($_SESSION['captcha_keystring']) || $_SESSION['captcha_keystring'] != strtolower($sValue))


до return, вписать:
if($this->validateCaptcha()) return true;


P.S. кому нужен плагин ГО ТО ФРИЛАНСЕРС job.livestreetcms.com к примеру Chiffa сделает за 3.5 минуты
  • avatar ff00
  • 0
Зачем покупать сертификат, возьмите бесплатно на LetsEncrypt
  • avatar Denka
  • 1
Использую это решение
Ниодного спам бота.

Единственное, какой-то чувак вручную регистрируется раз в месяц и постит одно заспамленое сообщение. Минусую ему карму
  • avatar emmy
  • 2
1. Какой командой в phpMyAdmin можно всех пользователей подписать на определенные ID блогов? если пользователь уже подписан — это ему не навредит?

Подписка конкретного пользователя, вместо <blog_id> айди блога, вместо <user_id> айди юзера.
INSERT INTO prefix_blog_user VALUES (<blog_id>, <user_id>, 1) ON DUPLICATE KEY UPDATE user_role = 1;


Подписка ВСЕХ, кроме овнера блога. Вместо <blog_id> айди блога, вместо <user_owner_id> айди владельца блога.
INSERT INTO
	prefix_blog_user(blog_id, user_id, user_role)
	(
		SELECT <blog_id>, user_id, 1
		FROM prefix_user
                WHERE user_id != <user_owner_id>
	)
ON DUPLICATE KEY UPDATE
	user_role = 1;


2. Какой командой в phpMyAdmin можно все личные топики перенести в определенный блог?
UPDATE
    prefix_topic
SET
    blog_id = 666
WHERE
    prefix_topic.blog_id IN (
            SELECT
	        blog_id
            FROM
	        prefix_blog
            WHERE
	        prefix_blog.blog_type = 'personal'
    )
  • avatar emmy
  • 4
Вот так.
        <plugins>
            <plugin>realtime</plugin>
        </plugins>


На что влияет? — просто не активируется плагин, пока не будет активирован плагин из requires.

Правда здесь есть косяк — при деактивации плагина движок не проверяет есть ли другие активные плагины, зависящие от него. Поэтому если деактивировать какой-нибудь плагин от которого зависят другие — все может упасть))

Поэтому перед деактивацией плагина я проверяю нет ли активных плагинов, которые зависят от него.
    /**
     * Перед деактивацией проверяем активны ли зависимые плагины.
     * Это важно, если деактивировать этот плагин с оставленными зависимостями - все вывалится в fatal.
     *
     * @return bool
     */
    public function Deactivate() {
        $aPlugins = $this->Plugin_GetList();
        $aActivePlugins = $this->Plugin_GetActivePlugins();

        $aDependentPlugins = array();

        foreach ($aPlugins as $sPluginName => $oPlugin) {
            if (!in_array($sPluginName, $aActivePlugins)) {
                continue;
            }

            if ($oPlugin['property']->requires->plugins) {
                foreach ($oPlugin['property']->requires->plugins->children() as $sReqPlugin) {
                    if ($sReqPlugin == 'realtime') {
                        $aDependentPlugins[] = func_camelize($oPlugin['code']);
                    }
                }
            }
        }

        if (!empty($aDependentPlugins)) {
            $this->Message_AddError(
                $this->Lang_Get(
                    'plugin.realtime.deactivation_dependency_error',
                    array('plugins_codes' => implode(', ', $aDependentPlugins))
                ),
                null,
                true
            );
            return false;
        }

        return true;
    }
  • avatar axmxvx
  • 2
Можно запросом:
UPDATE  `prefix_geo_city` SET  `country_id` =  '149' WHERE `region_id` = '1314';
UPDATE  `prefix_geo_region` SET  `country_id` =  '149' WHERE `id` = '1314';
UPDATE  `prefix_geo_region` SET  `name_ru` =  'Автономная Республика Крым' WHERE  `prefix_geo_region`.`id` =1314;
UPDATE  `prefix_geo_region` SET  `name_en` =  'Krym' WHERE  `prefix_geo_region`.`id` =1314;
UPDATE  `prefix_geo_region` SET  `sort` =  '50' WHERE  `prefix_geo_region`.`id` =1314;
  • avatar lifecom
  • 1
Настройки позволяют включать/отключать отображение… элементов...
С кнопками все понятно, но ведь блоки можно отключать через конфиг движка?

Кстати у вас (и на всех сайтах с developer-kit) glyphicons в IE Edge не отображаются, т.к. он использует svg-версию иконочного шрифта, а в смерженном CSS ссылка на svg «съедается». Починить можно так (движок!):
Вместо этого вставить это:
$aPath = explode('?', $sFilePathAbsolute, 2);
$sFilePathAbsolute = $aPath[0];
$aPartHash = explode('#', $sFilePathAbsolute, 2);
$sFilePathAbsolute = $aPartHash[0];
$sGetParams = isset($aPath[1]) ? $aPath[1] : '';
$sHashParams = isset($aPartHash[1]) ? $aPartHash[1] : '';
$sFilePathAbsolute = $this->GetRealpath($sDir.$sFilePathAbsolute).($sGetParams ? "?{$sGetParams}" : '') . ($sHashParams ? "#{$sHashParams}" : '');
$sFilePathAbsolute = $this->GetWebPath($sFilePathAbsolute);
По мотивам этого issue в LS2.0
  • avatar sersar
  • 0
Открываешь в браузере нужную страницу. Затем открываешь config.local.php и вписываешь код:
if ($_SERVER["HTTP_X_REAL_IP"] == 'сюда вписать Ваш IP') {
    //$config['sys']['cache']['use']    = false;               // использовать кеширование или нет
    $config['sys']['logs']['profiler']       = true;           // логировать или нет профилирование процессов
    $config['sys']['logs']['profiler_file']  = 'profiler_'.date('Y-m-d H:i:s').'.log';  // файл лога профилирования процессов
}
Сохраняешь. В броузере обновляешь страницу. В логах создаётся файл лога. Копируешь весь текст файла. Открываешь microsoft excel и вставляешь текст. Если всё верно сделать, то можно будет сортировать столбцы.
  • avatar lifecom
  • 4
на сервере надо сделать так:
server {
    listen      80;
    server_name www.bikepost.su;
    return 301 $scheme://bikepost.su$request_uri;
}
  • avatar ff00
  • 0
Полностью избавился от ботов следующим образом. Расскажу образно:
— Изменил поле name у стандартной капчи
— Добавил капчу на добавление топиков (опционально для всего другого комменты, лс) для пользователей у которых рейтинг меньше 1 или меньше 20 сообщений или топиков, не суть.
— Если бот не вводит или не правильно вводит капчу 20 раз подряд, то перенаправляю все его запросы на страницу проверки на «человечность», там нужно 2 раза подряд ввести капчу после чего, если это человек сбрасываю его блокировку, но счетчик капчи запускаю по новой, чтоб не баловались.
— Некоторые запросы сразу отравляю на проверку человечности (к примеру запрос admin.php и IP сразу проверяется)
Капча простейшая, состоит из 3 цифр (чтоб не напрягать пользователей) и справляется на ура. Вносил изменения прямо в код движка, реализация простейшая, все работает на xcache или memcache. Кому нужно, помогу.
  • avatar vOFFka
  • 1
Вот один из вариантов, только примените к body.
  • avatar vOFFka
  • 1
Так это плагин из каталога: catalog.livestreetcms.com/addon/view/15/
Давно папа не помогал)

Как вариант, можно сделать так:
{assign var=random value=1|mt_rand:15}
<img src="http://сайтец.ру/имаги/{$random}.png">

В папке имаги у нас будет допустим 15 изображений с именами с 1 до 15, с одинаковым расширением .png (или любое другое).
Если это для фона, то само собой делаете типа:
<div style="background:url(http://сайтец.ру/имаги/{$random}.png) no-repeat fixed center top">...</div>
  • avatar kak2z
  • 0
cp.inferno.name — самый лучший саппорт который я вообще видел… цены средние. Но стабильность серверов очень хорошая.
и сейчас у меня дедик на fastvps.ru/ — я взял дедик по цене ВПСа у Инферно… тоже неплохой саппорт. Но у них есть ограничения по решаемым вопросам — типа проблемы со скриптами не решают, а только правильно настраивают софт на сервере. А Инферно и скрипты мне когда то помогал настраивать и советовали что где сделать что бы лучше работало.
В js/template.js строку 27 заменить на
$('#add_friend_form').jqm({trigger: '#add_friend_show', toTop: true});
В файл конфига (sphinx.conf) в описаниях индексов топиков и комментариев нужно добавить:
morphology = stem_enru, soundex, metaphone


А вообще, подробней можно почитать на Хабре: habrahabr.ru/post/147745/
  • avatar skachko
  • 3
  • avatar rewired
  • 0
скажите пожалуйста кто нибудь, какие файлы нужно отредактировать что бы можно было вставлять картинки и смайлы при добавлении комментария а не при его редактировании. я в comment_tree.tpl в cmtedit добавил кнопку вызова формы загрузчика,
<a href="#" onclick="showImgUploadForm(); return false;" class="button"><img src="{cfg name='path.static.skin'}/images/panel/img.gif" width="30" height="20" title="{$aLang.panel_image}"></a>
загрузчик вызывается, только картинки загружать не хочет. что добавить надо что бы загружал? Спасибо.
Такая ошибка может возникнуть, когда удаляешь топик с комментариями. Причем при удалении топика комментарии не удаляются и нарушаются связи в базе данных (БД).

В phpmyadmin (или в другом менеджере БД сайта) сделайте запрос:
select * from prefix_comment where target_id not in (select topic_id from prefix_topic) AND target_type = "topic" 

Если появится список таких непривязанных комментариев — можете их удалить вручную (по одному) или попытаться удалить командой:
delete from prefix_comment where target_id = XXX
, где ХХХ — это ID-шник удаленного топика, от которого остались висеть комментарии (его номер Вы можете увидеть в таблице вывода предыдущего запроса — у «висящих» комментариев target_id обычно один и тот же, вот его и надо указывать в ХХХ).

Если было удалено несколько топиков, то у «висящих» комментариев будут несколько разных target_id. Следовательно нужно сделать несколько запросов delete…

Если среди «висящих» комментариев есть вложенные, то удалить сразу все такие комментарии одной командой не получится. В таком случае можно вывести список:
select * from prefix_comment where target_id = XXX
и удалять вручную по несколько штук, начиная с последнего комментария (обратная сортировка по comment_id).

Внимание: delete выполняйте на СВОЙ страх и риск. Если Вы хорошо не разбираетесь в MySQL, то нечаянно этой командой Вы можете грохнуть БД сайта.

Сам вначале разбирался около часа, потом (если возникает) делаю за пару минут.