Перейти к контенту
  • 0

Как скрывать ссылки от гостей


Вопрос

Как в 1.3.1 русской модиф-ой скрывать выложенные ссылки от незарегистрированных юзеров?

 

И сразу ещё вопросик :D Существует ли транслитор сообщений для 1.3.1?

 

Спасибки ;)

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

sources\lib\post_parser.php

Найти:

function regex_build_url($url=array()) {

Ниже добавить global $ibforums;

Теперь эта функция сможет пользоваться правами доступа.

И расставляйте по своему усмотрению права.

Например

if($ibforums->member['is_mod'])

означает "только модераторам". То же с $ibforums->member['g_is_supmod'] - для супермодераторов.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
добавить global $ibforums;

И расставляйте по своему усмотрению права.

 

Расставлять в том же файле или в другом? :D

Если в том же - эффекта не даёт.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Расставлять в том же файле или в другом? :D

Если в том же - эффекта не даёт.

Найти:

return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];

добавить выше

		if(!$ibforums->member['g_is_supmod'] and !$ibforums->member['g_is_supmod'] )
		return $url['st'] . "[URL=".$url['html']."]".$show."[/URL]" . $url['end'];
	else

 

Модератор впоследствии может опубликовать эти ссылки просто нажав редактирование поста и тут же сохранение, ничего не меняя.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

 

Спасибо. А можно ли как-то зафильтровать тэги? Отображается вот так:

[URL=http://ibresource.ru/]http://ibresource.ru/[/URL]

 

Скажите, пожалуйста, а как быть с уже имеющимися на форуме ссылками? :D Хочу в один миг превратить их в "некликабельные".

 

И ещё хотелось бы сделать исключение для ссылок своего домена, т.е. чтобы они были кликабельны для гостей, пользователей, модераторов и т.д.

А остальным - фиг. ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Раз уж взялись развивать однушку, давайте потихоньку учиться работать с ней самостоятельно.

Попробую описать "человеческим" языком, тем более, что я сам не программист, и мне очень не хватало "человеческих" описаний.

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

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

 

Запускаем поиск по файлу подстроки "regex_build_url", у меня нашлось 7 строк. Вот пример функции с 3 строками:

function parse_poll_tags($txt)

{

 

// if you want to parse more tags for polls, simply cut n' paste from the "convert" routine

// anywhere here.

 

$txt = preg_replace( "#\[img\](.+?)\[/img\]#ie" , "\$this->regex_check_image('\\1')", $txt );

 

$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );

$txt = preg_replace( "#\[url\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

$txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

 

return $txt;

}

 

Чтобы функция имела доступ к массиву информации, нужно это указать оператором global.

Информация о пользователе содержится в массиве $ibforums->member - его и нужно вызвать этим оператором. Тогда элементы массива можно будет использовать в условиях.

 

Элемент массива $ibforums->member['g_is_supmod'] заполнен у супермодераторов, у остальных он не существует.

То же для модераторов: $ibforums->member['is_mod'].

 

Нам требуется разрешить линки модерам и админам? Значит конструкция: если ( модератор ИЛИ админ )сделать линк;

На языке пхп это if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = ... );

 

Вот что должно получиться:

function parse_poll_tags($txt)

{

 

global $ibforums;

// if you want to parse more tags for polls, simply cut n' paste from the "convert" routine

// anywhere here.

 

$txt = preg_replace( "#\[img\](.+?)\[/img\]#ie" , "\$this->regex_check_image('\\1')", $txt );

 

if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );

if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = preg_replace( "#\[url\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] )$txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );

 

return $txt;

}

Наверное понятно, что функцию regex_build_url в этом случае трогать не надо.

 

 

Чтобы внутренние ссылки принимались у всех?

Внутренние - это значит, в строке есть URL вашего форума. Он содержится в глобальной переменной $ibforums->vars['board_url']

Расширяем условие: если ( модератор ИЛИ админ ИЛИ внутренний_линк )сделать линк;

if( $ibforums->member['g_is_supmod'] or $ibforums->member['is_mod'] or stristr($url['html'], $ibforums->vars['board_url']) )$txt = ... );

Ссылка на комментарий
Поделиться на других сайтах

  • 0

FatCat, всё сделал. Но почему-то при захождении в любую тему форума - выдаётся чистый белый лист. :D

Скажите, пожалуйста, в чём может быть причина?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Проверяй синтаксис. Скорее всего где-то какой-то символ неправильно вбит, или скобки не закрыты, или кавычки не там или не такие... Я же писал с руки, не устанавливая у себя такой код; мог где-нибудь очепятаться...

Вообще установки модификаций предпочитаю делать под денвером на локалке - денвер покажет ошибки даже если показ отключен, как в движке форума. Хоть подскажет в какой строке искать... И уже когда все работает, залить измененный файл на хост не выключая форума.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

FatCat, пока не стал проверять, но сделал то, что Вы рекомендовали ранее пользователю Haktar.

 

После 2 SQL запросов все ссылки перепарсились. :) Правда, сначала не получилось, сломалась таблица ibf_posts, от нагрузки наверно. :) Починил.

Перезапустил Apache на сервере, затем выключил форум на 15 минут, снова сделал первый запрос, потом второй, и всё стало отлично. :) Гости теперь не видят ссылок.

 

Но есть одна загвоздка.

 

Гости форума сейчас видят это:

 

http://medicinform.ru/guest.jpg

 

А хотелось бы, что б они увидели вот это:

 

http://medicinform.ru/guest2.jpg

 

Т.е. чтобы фраза была выделена жирным красным шрифтом, как для старых ссылок, так и для последующих. И после неё кликабельная кнопочка "Регистрация".

 

 

Подскажите, пожалуйста, как это сделать?

 

И ещё хотелось бы "обезвредить" ссылки в подписях на форуме (чтобы гости, в том числе и поисковики, не видели их). Скажите, пожалуйста, это возможно? :D

 

Или хотя бы просто заключить их в тэг <noindex>

А то что-то индекс цитирования в Яндексе сильно упал... ;) Хоть и вычистил горы спама со ссылками...

post-84647-1258559428_thumb.jpg

post-84647-1258559435_thumb.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 0
После 2 SQL запросов все ссылки перепарсились. :) Правда, сначала не получилось, сломалась таблица ibf_posts, от нагрузки наверно.

"Медикинформ"? Дык там база небось больше гига, и небось фултекстовый индекс на поле post... Не удивительно... Я бы такую базу не рискнул целиком трогать, только по частям...

 

 

чтобы фраза была выделена жирным красным шрифтом, как для старых ссылок, так и для последующих. И после неё кликабельная кнопочка "Регистрация".

Покрасить-то не проблема, пропишите в стилях желаемый цвет.

А вот с кнопочкой мега-проблема, стандарт ХТМЛ не допускает вложенности тегов формы. Если добавите такую кнопочку - слетят какие-то модераторские функции; я раз пободался с этой проблемой и забросил.

 

 

 

И ещё хотелось бы "обезвредить" ссылки в подписях на форуме (чтобы гости, в том числе и поисковики, не видели их). Скажите, пожалуйста, это возможно? :D

Запретить... В конце концов размер поля в таблице мемберов сделайте длиной в 1 символ, и пусть попробуют запостить линк длиной в 1 символ. :)

 

 

А то что-то индекс цитирования в Яндексе сильно упал... ;) Хоть и вычистил горы спама со ссылками...

Это не ссылочное утекает, это яндекс алгоритмы меняет.

А нафига, собственно, тИЦ нужен? В сапе вроде не торгуете... А на выдачу он не влияет ни разу.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
"Медикинформ"? Дык там база небось больше гига, и небось фултекстовый индекс на поле post... Не удивительно... Я бы такую базу не рискнул целиком трогать, только по частям...

 

Со спамом вес был около 500 мб... А когда вычистил, значение стало варьироваться до 300 мб... ;)

До гигабайта ещё далеко, наверно... :D

 

 

Покрасить-то не проблема, пропишите в стилях желаемый цвет.

 

 

 

А это как? В каком файле прописать? :)

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А это как? В каком файле прописать? :D

Ссылки попадают под тег <span class='hide_post'>

 

Значит, в админке в стили добавить описание класса hide_post.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.