0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 379 Просмотров
*

Аня

  • Давно я тут
  • 701
  • 32 / 0
  • Копатыч нестабилен!
Здравствуйте, друзья!
Задача стоит такая: добавить в head особые мета-данные (Dublin Core). Частично я с этой задачей справилась при помощи такого решения:
Код
<meta name="DC.Title" content="<?php echo $this->title; ?>">
<meta name="DC.Description" content="<?php echo $this->description; ?>">
<meta name="DC.Identifier" content="<?php echo JURI::current(); ?>">
Но я хочу еще добавить автора и ключевые слова. Ключевые слова я пробовала ввести разными способами типа:
Код
<meta name="DC.Subject" content="<?php
$document=& JFactory::getDocument();
$metakeywords = $document->getMetaData('keywords');
echo ''.$metakeywords.'';
?>">
или
Код
<meta name="DC.Description" content="<?php echo $this->keywords; ?>">
но ругается система на такое, пишет, undefined property и та же история с автором контента, хотя в обычных метаданных выводятся же они.
Ну, и вопрос: как же мне вывести в этих полях автора контента (не автора публикации) и ключевые слова?

Или - еще такой вариант решения проблемы и тоже непонятно, как добиться, как вывести в эти теги значения моих дополнительных полей?
Fatal error - это фатально!!!!
*

gartes

  • Завсегдатай
  • 1700
  • 131 / 5
  • Е = mс²
Re: Добавить свои мета-данные в head
« Ответ #1 : 02.12.2020, 07:53:42 »
Ну, и вопрос: как же мне вывести в этих полях автора контента (не автора публикации) и ключевые слова?
Аня - Точно не скажу но так Вы сможете посмотреть что лежит у Вас в Документе !
Код
$doc = \Joomla\CMS\Factory::getDocument();
echo'<pre>';print_r( $doc );echo'</pre>'.__FILE__.' '.__LINE__;
die(__FILE__ .' '. __LINE__ );
*

sivers

  • Завсегдатай
  • 1639
  • 226 / 0
Re: Добавить свои мета-данные в head
« Ответ #2 : 02.12.2020, 08:11:43 »
но ругается система на такое, пишет, undefined property
Так может на тот момент этих свойств еще нет? Попробуйте делать это в макете материала, когда ключевые слова и автор уже точно сформированы.
На связи в телеге @sivers
*

gartes

  • Завсегдатай
  • 1700
  • 131 / 5
  • Е = mс²
Re: Добавить свои мета-данные в head
« Ответ #3 : 02.12.2020, 08:19:30 »
Попробуйте делать это в макете материала, когда ключевые слова и автор уже точно сформированы.
Да правильно !
А добавить в HEAD - Можно методом
Код
$doc = \Joomla\CMS\Factory::getDocument();
if($doc->getType() == 'html')
{
       $html = '<meta name="DC.Title" content="'.$this->title.'">' ;
       $doc->addCustomTag($html) ;
}
*

sivers

  • Завсегдатай
  • 1639
  • 226 / 0
На связи в телеге @sivers
*

Аня

  • Давно я тут
  • 701
  • 32 / 0
  • Копатыч нестабилен!
Re: Добавить свои мета-данные в head
« Ответ #5 : 02.12.2020, 12:47:55 »
Слушайте, ребята! Это просто бомба! Спасибо огромное за поддержку! Ларчик просто открывался. Я сделала так:
В индексе задала прямо сразу переменные:
Код
$metakeywords = $this->getMetaData('keywords');
$metaauthor = $this -> getMetaData('author');

А потом написала:
Код
   <meta name="DC.Content" content="<?php echo  $metakeywords; ?>">
    <meta name="DC.Creator" content="<?php echo  $metaauthor; ?>">

Я только одного не поняла, почему
Код
<meta name="DC.Description" content="<?php echo $this->description; ?>">
было норм, а
Код
<meta name="DC.Content" content="<?php echo $this->keywords; ?>">
- неопределенная property?

По сути, это же элементы одного порядка. Но почему-то с desctription не надо было дополнительно извращаться, а с ключевиками и автором надо?
Fatal error - это фатально!!!!
*

Аня

  • Давно я тут
  • 701
  • 32 / 0
  • Копатыч нестабилен!
Re: Добавить свои мета-данные в head
« Ответ #6 : 08.12.2020, 13:47:05 »
На этом я не остановилась) Потому что мне все-таки нужны были теги именно из моих дополнительных полей. Хотя я добросовестно скопировала через БД аннотации и ключевые слова своих статей в стандартные метатеги Joomla. Вся эта работа, довольно хитроумная, оказалась напрасной, но приятной)
И вот как я реализовала:
Сделала переопределение в шаблоне для файла /html/com_content/article/default.php и прописала там кучу новых полей из дополнительных и общие. А index.php шаблона трогать не стала, потому что мне хотелось, чтобы все поля были в одном месте

Код
JHtml::_('behavior.caption');
 
$fieldValue13 = $this->item->jcfields[13]->rawvalue;
$fieldValue6 = $this->item->jcfields[6]->rawvalue;

$fieldValue3 = $this->item->jcfields[3]->rawvalue;
$fieldValue4 = $this->item->jcfields[4]->rawvalue;

$dcpublisher = '<meta name="DC.Publisher" content="IWL RAS">';

$dctitle = '<meta name="Dc.Tiltle" content="'.$this->item->title.'">';

$dcabstract = '<meta name="DC.Description"  content="'. $fieldValue6. $fieldValue13 .'">' ;

$dcmetakeys = '<meta name="DC.Subject"  content="'. $fieldValue3. $fieldValue4 .'">' ;

$dclanguage ='<meta name="DC.Language" scheme="ISO639-1"  content="'.$this->item->language.'">'; 

$dcident = '<meta name="DC.Identifier" content="'. JURI::current().'">';

$document = JFactory::getDocument();

$document->addCustomTag($dcpublisher);
$document->addCustomTag($dctitle);
$document->addCustomTag($dcabstract);
$document->addCustomTag($dcmetakeys);
$document->addCustomTag($dclanguage);
$document->addCustomTag($dcident);

В subject и description по два значения, потому что сайт на двух языках.
« Последнее редактирование: 08.12.2020, 13:53:34 от Аня »
Fatal error - это фатально!!!!
*

rsn

  • Давно я тут
  • 512
  • 34 / 3
Re: Добавить свои мета-данные в head
« Ответ #7 : 08.12.2020, 18:43:08 »
Сделала переопределение в шаблоне для файла /html/com_content/article/default.php и прописала там
Я бы тоже переопределял метаданные в шаблоне вывода конкретного типа контента, в не в общем шаблоне  ;)
В общем шаблоне - можно внедрить финальную проверку. Если нечто нужное так и не установлено, тогда добавить.
Собственно, не "бы", а так и делаю обычно )
Возможно, будет интересно: Интеграция с Ozon
*

Аня

  • Давно я тут
  • 701
  • 32 / 0
  • Копатыч нестабилен!
Re: Добавить свои мета-данные в head
« Ответ #8 : 09.12.2020, 16:24:51 »
Во я как авторов своих многочисленных вывела (максимум три автора на статью):

Код
$dclanguage ='<meta name="DC.Language" scheme="ISO639-1"  content="'.$this->item->language.'">';  
$fieldValue1 = $this->item->jcfields[1]->rawvalue;
$fieldValue27 = $this->item->jcfields[27]->rawvalue;
$fieldValue29 = $this->item->jcfields[29]->rawvalue;
$fieldValue13 = $this->item->jcfields[13]->rawvalue;
$fieldValue31 = $this->item->jcfields[31]->rawvalue;
$fieldValue33 = $this->item->jcfields[33]->rawvalue;

$dcauthor1  = '<meta name="DC.Creator" content="'.$fieldValue1.'">'  ;
 
if ($fieldValue27 !== ''){
$dcauthor27  = '<meta name="DC.Creator" content="'.$fieldValue27.'">' ;}

if ($fieldValue29 !== ''){
$dcauthor29  = '<meta name="DC.Creator" content="'.$fieldValue29.'">' ;}

$dcauthor13  = '<meta name="DC.Creator" content="'.$fieldValue13.'">' ;

if ($fieldValue31 !== ''){
$dcauthor31  = '<meta name="DC.Creator" content="'.$fieldValue31.'">' ;}

if ($fieldValue33 !== ''){
$dcauthor33  = '<meta name="DC.Creator" content="'.$fieldValue33.'">' ;}

$document = JFactory::getDocument();
$document->addCustomTag($dclanguage);
$lang = JFactory::getLanguage()->getTag();
if ($lang=='ru-RU') {
$document->addCustomTag($dcauthor1);
$document->addCustomTag($dcauthor27);
$document->addCustomTag($dcauthor29);
}
if ($lang=='en-GB') {
$document->addCustomTag($dcauthor13);
$document->addCustomTag($dcauthor31);
$document->addCustomTag($dcauthor33);
}

Источник идеи: https://web86.ru/joomla/joomla-custom-fields-metatags
Fatal error - это фатально!!!!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как передать данные при регистрации в базу?

Автор sesil

Ответов: 4
Просмотров: 150
Последний ответ 29.04.2021, 11:48:43
от sivers
Как активной метке добавить класс active?

Автор R31rus

Ответов: 1
Просмотров: 179
Последний ответ 13.04.2021, 00:18:53
от R31rus
Не отображается поле мета-тег в админке Joomla

Автор maxim_prog

Ответов: 0
Просмотров: 86
Последний ответ 03.02.2021, 12:49:57
от maxim_prog
Как добавить документ pdf c возможностью скачивания на главную страницу сайта?

Автор Yulya_ivanova

Ответов: 1
Просмотров: 120
Последний ответ 28.12.2020, 11:11:05
от Yulya_ivanova
Как добавить +1 к числовому значению?

Автор R31rus

Ответов: 3
Просмотров: 329
Последний ответ 05.10.2020, 11:15:11
от R31rus