CMS DataLife Engine - Система управления сайтами

Авторизация  
Mek

Данные из доп поля+свой текст=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";
}

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация