Защищаем тексты и ссылки от тех кто еще не в сообществе)

1. Открываем файл /config/config.php добавляем в блок «прочие настройки» строку
define('TOPIC_GUEST_TEXT',"Чтобы прочитать этот текст необходимо зарегистрироваться!");

2. Скачиваем с ЯбаДабы и заменяем файл Topic.entity.class.php


3. Открываем шаблон /templates/skin/habra/topic.tpl ищем строку
{$oTopic->getText()}
и заменяем ее на

{if $oUserCurrent}
      		{$oTopic->getTextHidden(true)}
      		{else}
      		{$oTopic->getTextHidden(false)}
      		{/if}


4. Открываем шаблон /templates/skin/habra/topic_list.tpl ищем строку
{$oTopic->getTextShort()}
и заменяем ее на

{if $oUserCurrent}
    		{$oTopic->getTextShortHidden(true)}
    		{else}
    		{$oTopic->getTextShortHidden(false)}
    		{/if}
      			{if $oTopic->getText()!=$oTopic->getTextShort()}


Дальше Открываете файл /classes/actions/ActionTopic.class.php

ищете блок

/**
		 * Проверяем есть ли содержание топика
		 */
		if (!func_check(getRequest('topic_text'),'text',2,15000)) {
			$this->Message_AddError('Текст топика должен быть от 2 до 15000 символов','Ошибка');
			$bOk=false;
		}


и после него добавляете

$sText = getRequest('topic_text');		
		$sText=str_replace("\r\n","",$sText);
		if (preg_match("/.*\[hide\].*\<cut.*\[\/hide\].*/i",$sText)){			
			$this->Message_AddError('Тег <cut> не может быть внутри тегов [hide][/hide]','Ошибка');
			$bOk=false;
		}

Дальше В файле \classes\actions\ActionRss.class.php
заменяете все
$oTopic->getText();

на
$oTopic->getTextHidden(false);

И напоследок в файле /templates/language/russian.php
добавляем подсказку о том что можно использовать теги [hide] [/hide]для скрытия текста/ссылок от не зарегистрированных в сообществе.
Спасибо Кириллу за работу....

46 комментариев

avatar
Комменты →
avatar
А можете помочь реализовать? только нужно в виде плагина и немного расширить функции

Атрбуты например такие:
Для просмотра скрытого текста необходимо иметь минимум один параметр:
рейтинг — 2 (у вас 0, осталось 2)
публикаций — 10 (у вас 0, осталось 10)
комментариев — 15 (у вас 0, осталось 15)

PS кат должен работать
avatar
Пожалуйста! А тебе спасибо за то что поделился со всеми:)
Кстати, текст Topic.entity.class.php тоже можно выложить… там всего 2 функции добавилось: getTextHidden и getTextShortHidden
avatar

вот после метода getTextShort() в файле Topic.entity.class.php
эти 2-ва
public function getTextHidden($bShowContent = false){
        $text = str_replace("\r\n","",$this->_aData['topic_text']);    
        if ($bShowContent)
                return preg_replace ("/\[hide\]|\[\/hide\]/i","",$text);
        else
                return preg_replace ("/\[hide\].*\[\/hide\]/i",TOPIC_GUEST_TEXT,$text);
       
    }
   
    public function getTextShortHidden($bShowContent = false){
        $text = str_replace("\r\n","",$this->_aData['topic_text_short']);
        if ($bShowContent)
                return preg_replace ("/\[hide\]|\[\/hide\]/i","",$text);
        else           
                return preg_replace("/\[hide\].*\[\/hide\]/i",TOPIC_GUEST_TEXT,$text);
    }
avatar

вот это обновлено
3. Открываем шаблон /templates/skin/habra/topic.tpl ищем строку
{$oTopic->getText()}
и заменяем ее на

{if $oUserCurrent}
                {$oTopic->getTextHidden(true)}
                {else}
                {$oTopic->getTextHidden(false)}
                {/if}

4. Открываем шаблон /templates/skin/habra/topic_list.tpl ищем строку
{$oTopic->getTextShort()}
и заменяем ее на

{if $oUserCurrent}
{$oTopic->getTextShortHidden(true)}
{else}
{$oTopic->getTextShortHidden(false)}
{/if}
{if $oTopic->getText()!=$oTopic->getTextShort()}
там с катом проблема была…
avatar
спасибо за щедрость)
avatar
Есть подозрение, что если закрыть 2 фрагмента текста, то и тот кусок текста что будет между закрытыми, тоже скроется.

Проверьте, пожалуйста, кто установил расширение :)
avatar
Привед:)
Ты не понял тут принцип не как у тега , а другой. Вот так [hide]<a href=«Предед медвед лови ссылку yabadaba.ru/files/25696[/hide]
Именно текст внутри хайда и будет скрыт:)
avatar

т.е хайд работает так
[hide]текст который вы хотите скрыть[/hide]
avatar
Извини действительно это так:)
[hide]текст который вы хотите скрыть[/hide]
текст между тоже скроется этот
[hide]текст который вы хотите скрыть[/hide]
avatar
хотя мне не важно т.к фрагментов везде больше 1-го не предполагается)
avatar
skpnm, откуда вы знаете? Когда пользователям разрешено постить, то случаи бывают просто невероятные :)
avatar

У меня ругается:
Parse error: syntax error, unexpected T_STRING in /home/shteam/public_html/config/config.php on line 111
На сайт естественно не пускает. Вставил в config.php следущую строчку в раздел Прочие настройки:
define('TOPIC_GUEST_TEXT',«Чтобы прочитать этот текст необходимо зарегистрироваться!»);
avatar

define('TOPIC_GUEST_TEXT',"<strong>Чтобы прочитать этот текст необходимо зарегистрироваться!</strong>");
а на ковычки смотрел?:)
avatar

у меня 111 строка это вообще
define('LANG_PATH',DIR_SERVER_ROOT.'/templates/language'); // полный путь до языковых файлов
avatar

Эта проблема исчесла. теперь в области для «новостей» пишет:
Fatal error: Smarty error: [in topic_list.tpl line 133]: syntax error: mismatched tag {/foreach}. expected {/if} (opened line 56). (Smarty_Compiler.class.php, line 2298) in /home/shteam/public_html/classes/lib/external/Smarty-2.6.19/libs/Smarty.class.php on line 1092
avatar
Если вставляю дефолтный(не изменённый) topic_list.tpl то работает…
avatar
Вот уже измененный topic_list.tpl http://yabadaba.ru/files/44209
avatar
файл ненайден!
можна перезалить,
спасибо!
avatar
Требую добавления этой «фичи» в релиз!!!
avatar
на фига? это ооочень не многим нужно))
avatar
Нужно. Так как формирует ядро посетителей.
avatar
имхо ничего оно не формирует кроме забивания юзерской таблицы мусором, т.к большинство регаться будут только на 1 раз :)
avatar
Случаи и потребности различные бывают. Блог блогу рознь.
avatar
+1 к Adam_B
avatar
на самом деле очень многие возвращаются)
да и цель у меня была усложнить жизнь гостям. вернуться они или нет мне глубоко пох. почему расписывать не буду…
avatar
А как добавить эту фичу в панель инструментов. т.е. сделать кнопку ?
  • mur
  • 0
avatar
оО
ты о чем вообще?
avatar
Добавить кнопку что бы сама ставила этот тег.
avatar
А бесплатно файлами никто не поделится?
  • mur
  • 0
avatar
«Чтобы прочитать этот текст необходимо зарегистрироваться!»
выглядит скучновато, регистрация уже у всех в печонках! А вот: «Чтобы прочитать этот текст необходим рейтинг 3.00»
ну и код [hide rating=3]уже веселей :)[/hide]
avatar
Согласен. Вспоминается один, широко известный в узких кругах сайт, но там к этому прибавлена ЗВЕРСКАЯ МОДЕРАЦИЯ. Зато там приходится попыхтеть для ПРАВИЛЬНЫХ и ПОЛЕЗНЫХ ответов.
avatar
да, если бы было привязано к рейтингу было бы супер :)
avatar
Кстати после этих изменений cat работать не будет)
А готовые рабочие измененные файлы я уже давно пох##ил. сорри. Мне это просто больше не надо…
avatar
м… после этого хака не будет работать cut?
а это как-то можно исправить? :)
avatar
Кто-нибудь может поделиться файлом?
avatar
Очень необходим этот модуль для 0.4
Тему «забили» совсем? Может кому-то интересно?
avatar
На 0.4 работать будет?
avatar
0.4.2 ждем!!!
avatar
прятать контент (в том числе и ссылки) можно тегом hide плагина xtext
avatar
угу, 17$ для этого не хочется отдавать
avatar
Хе, что сейчас 500р? :)
avatar
На 0.3.1 работает на ура.
Теперь давайте подумаем, как можно ограничить хайд рейтингом, как сказала Lora_GT.
Есть у кого-нибудь какие-нибудь мысли или наработки?
avatar
плагина Xtext под актуальную версию LS нет, и способ описанный в этом топике тоже не работает. Кто-нибудь добился реализации hide под 0.5?
  • ok34
  • 0
avatar
2. Скачиваем с ЯбаДабы и заменяем файл Topic.entity.class.php
МОжно файлик обновить? ОЧень надо. Заранее спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.