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

Sign in to follow this  
Mek

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

Recommended Posts

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

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

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

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

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

Edited by Mek

Share this post


Link to post
Share on other sites

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

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

В 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

 

Edited by Mek

Share this post


Link to post
Share on other sites
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";
}

 

Share this post


Link to post
Share on other sites
В 11.11.2018 в 08:34, Gameer сказал:

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

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

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

и

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

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

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

Edited by Mek

Share this post


Link to post
Share on other sites
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";
}

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this