Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2019-11-11 07:25:42

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Обработка <blockquote> от Twitter и <iframe> от Facebook

Здравствуйте! Собственно в заголовке и есть вопрос. Как сделать читабельными коды для встраивания постов от Фейсбук и Твиттера. На сайте у меня вставляется без проблем и выводятся в виде постов. Вещь очень актуальная.

Коды в таком виде:

<blockquote class="twitter-tweet" data-lang="uk"><p lang="en" dir="ltr">I’m excited for the release of  “With All Due Respect” this week. It is a personal book about my experiences in life and government. I hope you will check it out &amp; come see us on our book tour! To order yours today and to come see us on the road visit <a href="https://t.co/IQq8YXBrtT">https://t.co/IQq8YXBrtT</a> ❤️?? <a href="https://t.co/dYbIKAfUMO">pic.twitter.com/dYbIKAfUMO</a></p>&mdash; Nikki Haley (@NikkiHaley) <a href="https://twitter.com/NikkiHaley/status/1193546581288636417?ref_src=twsrc%5Etfw">10 листопада 2019 р.</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<iframe src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Faleksandrkushnar%2Fposts%2F1470596286421741&width=500" width="500" height="624" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>

Редактировался aleshin (2019-11-11 07:26:29)

Offline

#2 2019-11-11 11:30:24

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,136
Сайт

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

Для FluxBB 1.5.11 (для моей сборки не подойдет наверное)

Для Facebook можно добавить бб-код:
файл include/parser.php
1. все (2 шт)

[/(?:url|img

заменить на

[/(?:url|img|fb

2. после

	$pattern[] = '%\[h\](.*?)\[/h\]%ms';

нужно добавить

	$pattern[] = '%\[fb\](https?://(?:[\w-]+\.)?facebook\.com/[\w-]+/posts/\d+).*?\[/fb\]%';

3. после

	$replace[] = '</p><h5>$1</h5><p>';

нужно добавить

	$replace[] = '</p><iframe src="https://www.facebook.com/plugins/post.php?href=$1&width=500&show_text=true&height=274&appId" width="500" height="274" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe><p>';

Теперь через бб код fb должны добавляться посты Facebook так

[fb]https://www.facebook.com/20531316728/posts/10154009990506729/[/fb]

P.S. В Firefox долго не мог понять почему не отображается. Оказывается встроенный защитник от отслеживания считает эти фэйсбуковские посты вредными и используемыми для отслеживания пользователей для дальнейшего показа им рекламы.
P.P.S. В IE сразу отобразился пост через бб-код. А Chrome я не использую и не тестирую в нем ни чего.
P.P.P.S. По твиттеру надо документацию искать.

Offline

#3 2019-11-11 11:45:38

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

По поводу использования ВВ-кодов я читал тему, это очень неудобно.
Я так понял разработчики форумов специально в движок кода не закладываю возможность автоматической обработки в целях безопасности, ибо там используется <iframe> и <script>. Хотя у меня на сайте (движ. NGCMS), для пользователей если разрешено использование HTML тегов, все эти коды для вставки обрабатываются автоматически.

Offline

#4 2019-11-11 11:49:20

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,136
Сайт

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

бб-код использовать как раз безопасно (регулярка, которую я даю тут, ни чего лишнего не пропустит: "https?://(?:[\w-]+\.)?facebook\.com/[\w-]+/posts/\d+"), а вот вставка html в сообщения это полный беспредел для безопасности.

Offline

#5 2019-11-11 12:07:50

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

Может такую возможность реализовать только для админов и модеров и возможность включать для определенных групп пользователей? Тогда безопасность будет зависить только от админа, он будет решать кому включать кому нет.

Редактировался aleshin (2019-11-11 12:08:18)

Offline

#6 2019-11-11 15:03:03

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,136
Сайт

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

ББ-код html

Для стандартного FluxBB 1.5.11

файл include/parser.php

1. В конец файла добавить  функцию

function handle_html_tag($html)
{
	return  '</p>' . pun_htmlspecialchars_decode($html) . '<p>';
}

2. после

	$pattern_callback[] = '%\[user=([1-9]\d*)\](.*?)\[/user\]%';

добавить

	$pattern_callback[] = '%\[html\](.*?)\[/html\]%ms';

3. после

	$replace_callback[] = 'handle_url_tag(\''.get_base_url(true).'/profile.php?id=\'.$matches[1], $matches[2])';

добавить

	$replace_callback[] = 'handle_html_tag($matches[1])';

4. после

function preparse_bbcode($text, &$errors, $is_signature = false)
{
	global $pun_config, $lang_common, $lang_post, $re_list;

добавить

	global $pun_user;

	if ($pun_user['g_id'] != PUN_ADMIN) { // $pun_user['id'] != 2
		if (strpos($text, '[html]') !== false || strpos($text, '[/html]') !== false) {
			$errors[] = 'Bad bb-code [html]';
		}
	}

В таком вариант любой админ может в любом сообщении(подписи юзера) форума вставить любой html между тегами [ html ] и [/ html ].

P.S. На всякий случай следует проверить, чтобы при попытке вставить этот бб-код другими группами пользователей выходила ошибка Bad bb-code [html].

Offline

#7 2019-11-11 16:25:31

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

С третим пунктом не понятно, такой строки не нашел. Сбока Ваша.

Нашел приблизительно похожую:

$replace_callback[] = function($matches) { return handle_url_tag(get_base_url(true).'/profile.php?id='.$matches[1], $matches[2]); };

Поэтому пока не работает

Offline

#8 2019-11-11 16:30:02

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,136
Сайт

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

значит пункт 3 такой
после

	$replace_callback[] = function($matches) { return handle_url_tag(get_base_url(true).'/profile.php?id='.$matches[1], $matches[2]); };

добавить

	$replace_callback[] = function($matches) {return handle_html_tag($matches[1]);}; 

Offline

#9 2019-11-11 16:43:58

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

Отлично! Все работает, и для пользователей выводит Bad bb-code.

Теперь еще бы кнопочку вывести на панель ВВ-кодов.

П.С. Извините, я не сильно наглею?

Offline

#10 2019-11-11 17:46:55

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,136
Сайт

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

Теперь еще бы кнопочку вывести на панель ВВ-кодов.

Есть куча модов, так что решение для каждого свое.

Offline

#11 2019-11-11 19:33:59

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

Панель дефолтная, Вашей сборки.
Прошелся по форуму так и не нашел как вставить кнопку(ccылку) в ВВ-панель.

Редактировался aleshin (2019-11-11 19:35:58)

Offline

#12 2019-11-11 19:47:07

Visman
Administrator
Из Сибирь
Зарегистрирован: 2009-06-08
Сообщений: 2,136
Сайт

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

файл js/post.js
1. после

				{i:'sp.png', a:'[spoiler]', s:'[spoiler]', e:'[/spoiler]'},

добавить

				{i:'html.png', a:'[html]', s:'[html]', e:'[/html]'},

2. оба

lang = {'b'

заменить на

lang = {'html':'html', 'b'

В каталог style/Air/img/bbcode/ (и в другие стили, если там есть иконки кнопок) добавить иконку html.png для кнопки.

P.S. Есть минус. Кнопка будет показана всем группам!

Offline

#13 2019-11-11 20:11:16

aleshin
Участник
Зарегистрирован: 2019-11-07
Сообщений: 14

Re: Обработка <blockquote> от Twitter и <iframe> от Facebook

Все получилось, все работает. Спасибо огромное.
П.С. У меня есть несколько монет WMZ, куда послать?

Offline

Подвал доски

Под управлением FluxBB. Хостинг Hostens