Перейти к содержимому
Русский язык для Invision Community 5

Нужно добавить уникальный ID для картинок в темах

Здравствуйте

 

Нужно добавить уникальный ID для картинок в темах, для новых и для старых тоже.

 

admin/sources/classes/text/parser/html.php

 

		if ( ! parent::$Perms['parseHtml'] )
	{
		$uniqid_forimages = uniqid();
		$html = preg_replace( "/(?!<span rel='lightbox'>)<img(?!.*sharedmedia_screenshot)([^>]+?)>/i", "<span rel='lightbox'><img class='bbc_img' id='" . $uniqid_forimages . "'\\1></span>", $html );
		$html = preg_replace( "/<img class='bbc_img'([^>]+?)class='bbc_img'([^>]+?)>/i", "<img class='bbc_img'\\1\\2>", $html );
	}

 

Но...

1) Если в посте загрузить или вставить через img bbcode несколько картинка, тогда для всех добавляется одинаковые ID.

2) Нужно еще добавить для старых картинок.

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

Как вариант

$html = preg_replace_callback(
"/<img class='bbc_img'/i",
function ($matches) {
	return $matches[0] . ' id="' . uniqid() . '"';
},
$html
);

 

php

$html = preg_replace_callback(
   "/<img class='bbc_img'/i",
   create_function('$matches', 'return $matches[0] . \' id="\' . uniqid() . \'"\';'),
   $html
);


Либо

$html = preg_replace_callback(
"/<img class='bbc_img'/i",
array($this, 'addIdToImages'),
$html
);

 

и добавить метод

protected function addIdToImages($matches)
{
return $matches[0] . ' id="' . uniqid() . '"';
}

 

2) Нужно еще добавить для старых картинок.

Нужно удалить кеш постов

  • Автор
Parse error: syntax error, unexpected T_FUNCTION in /admin/sources/classes/text/parser/html.php on line 111

php версии ниже 5.3?

  • Автор

PHP Version 5.2.42

Я добавил вариант для php

  • Автор

Огромное спасибо.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.