Перейти к публикации

Замена img на amp-img, прошу подсказки


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

Всем привет.

В общем хочу из версии для печати попробовать сделать amp страницы. Всё вроде получается, но хотелось бы немного упростить код.

Чтобы заменить изображение в дополнительном поле foto "Загружаемое изображение", делаю следующим образом

ищу в show.full.php

$xfieldsdata = $row['xfields'];

И добавляю ниже

if ($view_template = "print") {

	$amp_xfields_list = explode('||', $xfieldsdata);

	foreach ($amp_xfields_list as $amp_i) {
		if (preg_match('/^foto\|/', $amp_i, $matches)) {
			$amp_foto = $amp_i;
		}
	}

	$xfvalue_amp_foto = preg_replace(
		'/<img(.*?)\/?>/',
		'<amp-img$1 class="amp-img" width="3" height="2" layout="responsive"></amp-img>',
		str_replace('foto|', '', $amp_foto)
	);

	$xfvalue_amp_foto = preg_replace(
		['/<!--MBegin:.*?-->/', '/<!--dle_image_begin:.*?-->/'],
		'',
		$xfvalue_amp_foto
	);
	$xfvalue_amp_foto = str_replace(
		['<!--MEnd-->', '<!--dle_image_end-->'],
		'',
		$xfvalue_amp_foto
	);

	$tpl->set("[xfvalue_amp_foto]", $xfvalue_amp_foto);
  

}

 

В данном случае я использую переменную $xfieldsdata, которую сначала разбиваю, потом ищу по совпадению 'foto|', после произвожу замену img на amp-img. Данные дополнительного поля "Галерея изображений" хранятся в базе данных в виде имен изображений через запятую, которые необходимо будет ещё разбивать, вставлять их в теги изображений, и после только выводить.

Может кто подскажет, возможно ли как-то сразу получить данные дополнительного поля одной переменной?

Заранее признателен всем за подсказку.

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

 

$xfieldsprint = xfieldsdataload( $row['xfields'] ); // В переменной $xfieldsprint все допполя в виде массива
$xfieldsfoto = $xfieldsprint['foto']; // в переменной $xfieldsfoto значение допполя foto

Дальше сам :-)

Изменено пользователем alex32
Ссылка на сообщение
Поделиться на других сайтах
22 минуты назад, alex32 сказал:

 


$xfieldsprint = xfieldsdataload( $row['xfields'] ); // В переменной $xfieldsprint все допполя в виде массива
$xfieldsfoto = $xfieldsprint['foto']; // в переменной $xfieldsfoto значение допполя foto

Дальше сам :-)

Спасибо большое)

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

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

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

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

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

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

×
×
  • Создать...