Перейти к контенту
  • 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.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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