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

Данные из доп поля+свой текст=og:description


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

В последней актуальной версии DLE (13.1), если в новости нет текста, только картинки и доп поля, в og:description попадает всё содержимое из доп полей вперемешку, даже с кусками кода xfvalue....

По мне так очень сомнительное решение....

Может кто сможет написать модуль, который будет делать:

"og:description"="description+`произвольный текст`+[данные из доп поля 1]+`произвольный текст`+[данные из доп поля 2]" ?

Ну и в идеале чтоб эта конструкция работала только в определённых категориях. Во всех остальных - как есть по умолчанию.

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

Вопрос решён, помогли добрый люди)))

Кому интересно вот решение:

В engine/engine.php

Меняем:

$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\">\n";

На:

		if ($key == "description"){
          if( ($subaction == 'showfull') AND in_array( intval($category_id), array('1', '2')) ){
				$og_description=str_replace(array("{", "}", "[", "]"), "", $metatags['description']) . ', Произвольный текст1: ' . xfieldsdataload($xfieldsdata)['pole1'] . ', Произвольный текст2: ' . xfieldsdataload($xfieldsdata)['pole2'];
				}
          if( ($subaction == 'showfull') AND in_array( intval($category_id), array('3', '4')) ){
				$og_description=str_replace(array("{", "}", "[", "]"), "", $metatags['description']);
				}
            	$s_meta .= "<meta property=\"og:description\" content=\"{$og_description}\">\n";
			} else {
			$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\">\n";
			}

Получаем что при просмотре полных новостей из категорий 1 и 2 мы имеем og:description=description+Произвольный текст1+данные из доп поля [pole1]+Произвольный текст2+данные из доп поля [pole2]

При просмотре полных новостей из категорий 3 и 4 мы имеем og:description=description

 

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

Вопрос решён, помогли добрый люди)))

Кому интересно вот решение:

В engine/engine.php

Меняем:


$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\">\n";

На:


		if ($key == "description"){
          if( ($subaction == 'showfull') AND in_array( intval($category_id), array('1', '2')) ){
				$og_description=str_replace(array("{", "}", "[", "]"), "", $metatags['description']) . ', Произвольный текст1: ' . xfieldsdataload($xfieldsdata)['pole1'] . ', Произвольный текст2: ' . xfieldsdataload($xfieldsdata)['pole2'];
				}
          if( ($subaction == 'showfull') AND in_array( intval($category_id), array('3', '4')) ){
				$og_description=str_replace(array("{", "}", "[", "]"), "", $metatags['description']);
				}
            	$s_meta .= "<meta property=\"og:description\" content=\"{$og_description}\">\n";
			} else {
			$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\">\n";
			}

Получаем что при просмотре полных новостей из категорий 1 и 2 мы имеем og:description=description+Произвольный текст1+данные из доп поля [pole1]+Произвольный текст2+данные из доп поля [pole2]

При просмотре полных новостей из категорий 3 и 4 мы имеем og:description=description

 

Всегда пожалуйста.

 

Но лучше сделать так

if ($key == 'description') {
	if (($subaction == 'showfull') && in_array(intval($category_id), [1, 2])) {
		$ogField = xfieldsdataload($xfieldsdata);
		$og_description = $metatags['description'] . ', Произвольный текст1: ' . $ogField['pole1'] . ', Произвольный текст2: ' . $ogField['pole2'];
	}
	if (($subaction == 'showfull') && in_array(intval($category_id), [3, 4])) {
		$og_description = $metatags['description'];
	}
	
	$og_description = str_replace(['{', '}', '[', ']'], '' $og_description);
	$s_meta .= "<meta property=\"og:description\" content=\"{$og_description}\">\n";
} else {
	$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\">\n";
}

 

Ссылка на сообщение
Поделиться на других сайтах
В 11.11.2018 в 08:34, Gameer сказал:

Но лучше сделать так

Может тогда подскажете вариант, как сделать, чтоб

Произвольный текст1: ' . $ogField['pole1'] 

и

Произвольный текст2: ' . $ogField['pole2']

Выводились только при условии что доп поле [pole1] и/или [pole2] заполнены.

(если заполнено только одно любое доп поле, то выводилось только со своим произвольным текстом)

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

Может тогда подскажете вариант, как сделать, чтоб


Произвольный текст1: ' . $ogField['pole1'] 

и


Произвольный текст2: ' . $ogField['pole2']

Выводились только при условии что доп поле [pole1] и/или [pole2] заполнены.

(если заполнено только одно любое доп поле, то выводилось только со своим произвольным текстом)

if ($key == 'description') {
	$ogField = xfieldsdataload($xfieldsdata);
	if (($subaction == 'showfull') && in_array(intval($category_id), [1, 2]) && (isset($ogField['pole1']) || isset($ogField['pole2']))) {
		
		$og_description = $metatags['description'] . ', Произвольный текст1: ' . $ogField['pole1'] . ', Произвольный текст2: ' . $ogField['pole2'];
	}
	if (($subaction == 'showfull') && in_array(intval($category_id), [3, 4])) {
		$og_description = $metatags['description'];
	}
	
	$og_description = str_replace(['{', '}', '[', ']'], '' $og_description);
	$s_meta .= "<meta property=\"og:description\" content=\"{$og_description}\">\n";
} else {
	$s_meta .= "<meta property=\"og:{$key}\" content=\"{$value}\">\n";
}

если я правильно понял просьбу

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

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

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

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

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

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

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

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

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

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