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

ProtectYourSite

  • Завсегдатай
  • 1072
  • 64 / 4
  • Безопасность вебсайтов
Не знаю, в какой раздел лучше, если что перенесите.
Итак, мое решение проблем с полями Publisher, Image, Даты публикаций/модификаций и непонятного mainEntityOfPage.
На основе шаблона Protostar
Редактируем файл шаблона /html/com_content/article/default.php
В область php где-то после defined('_JEXEC') or die; и перед ?> вставляем код обработки изображений. Внимание! Изображения у меня находятся в самой статье, если у вас не так, то стоит модифицировать в этом направлении.
Сам код:
Код
$myimage=$this->item->introtext;
preg_match_all('/<img[^>]+>/i', $myimage, $result);
preg_match_all('/(alt|title|src)=("[^"]*")/i',$result[0][0], $img);
$timag=$img[2][1];
if(!empty($timag)){
 $timage=str_replace("\"","",$timag);}
 else
{
  $timage= 'images/logo.png';
}
$timage=JURI::base().$timage;
$size = getimagesize($timage);
Здесь же можно добавить OpenGraph разметку для соцсетей:
Код
$doc = JFactory::getDocument();
$doc->addCustomTag( '
<meta property="og:locale" content="ru_RU">
<meta property="og:type" content="article">
<meta property="og:title" content="'.$this->escape($this->item->title).'">
<meta property="og:site_name" content="Защита сайтов ProtectYourSite">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@Protect_Site">
<meta name="twitter:creator" content="@Protect_Site">
<meta property="og:url" content="'.JURI::current().'">
<meta property="og:description" content="'.$doc->getDescription().'">
<meta property="og:image" content="'.$timage.'">
');
Необходимые поля надо заменить на свои значения.
Дальше ищем, где у нас объявлен блок микроразметки  itemtype="http://schema.org/Article"
Я вставлял после
Код
	<meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*')? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
И вставляем после следующие блоки
Код
	<meta itemscope itemprop="mainEntityOfPage"  itemtype="https://schema.org/WebPage" itemid="<?php echo JURI::current(); ?>"/>
<meta itemprop="dateModified" content="<?php echo $this->item->modified; ?>">
              <meta itemprop="datePublished" content="<?php echo $this->item->publish_up; ?>">
<span style="display:none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
<img itemprop="url" src="<?php echo $timage;?>">
<meta itemprop="image" content="<?php echo $timage;?>">
<meta itemprop="width" content="<?php echo $size[0];?>">
<meta itemprop="height" content="<?php echo $size[1];?>">
</span>
<span itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="name" content="Защита сайтов ProtectYourSite">
     <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
        <img itemprop="url" src="https://protectyoursite.ru/images/logo.png" style="display:none;"/>
        <meta itemprop="image" content="https://protectyoursite.ru/images/logo.png">
        <meta itemprop="width" content="141">
        <meta itemprop="height" content="160">
    </span>
</span>
Аналогично заменяя на свои значения в нужных местах. После этого сохраняем, очищаем кеш и смотрим полученный результат. Если всё правильно, то мы должны успешно проходить валидацию микроразметки

Стал проверять микроразметку по блогу, в итоге вылезло:
Необходимо указать значение для поля headline.
Необходимо указать значение для поля image.
Необходимо указать значение для поля publisher.

Рекомендуется заполнять поле mainEntityOfPage. Укажите значение, если оно известно.

Решил я это всё на основании того же стандартного шаблона и последней Joomla так:
Создаем в папке шаблона файл /html/layouts/joomla/content/blog_style_default_item_title.php и вставляем туда следующий код:

Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  Layout
 *
 * @copyright   Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_BASE') or die;

// Create a shortcut for params.
$params = $displayData->params;
$canEdit = $displayData->params->get('access-edit');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
$myimage=$displayData->introtext;
preg_match_all('/<img[^>]+>/i', $myimage, $result);
preg_match_all('/(alt|title|src)=("[^"]*")/i',$result[0][0], $img);
$timag=$img[2][1];
if(!empty($timag)){
 $timage=str_replace("\"","",$timag);}
 else
{
  $timage= 'images/logo.png';
}
$timage=JURI::base().$timage;
$size = getimagesize($timage);
?>

<?php if ($params->get('show_title') || $displayData->state == 0 || ($params->get('show_author') && !empty($displayData->author ))) : ?>
<div class="page-header">
<meta itemscope itemprop="mainEntityOfPage"  itemtype="https://schema.org/WebPage" itemid="<?php echo JRoute::_(
ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)
); ?>"/>
<span style="display:none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
<img itemprop="url" src="<?php echo $timage;?>">
<meta itemprop="image" content="<?php echo $timage;?>">
<meta itemprop="width" content="<?php echo $size[0];?>">
<meta itemprop="height" content="<?php echo $size[1];?>">
</span>
<span itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<meta itemprop="name" content="Защита сайтов ProtectYourSite">
     <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
        <img itemprop="url" src="https://protectyoursite.ru/images/logo.png" style="display:none;"/>
        <meta itemprop="image" content="https://protectyoursite.ru/images/logo.png">
        <meta itemprop="width" content="141">
        <meta itemprop="height" content="160">
    </span>
</span>
<?php if ($params->get('show_title')) : ?>
<h2 itemprop="headline">
<?php if ($params->get('link_titles') && ($params->get('access-view') || $params->get('show_noauth', '0') == '1')) : ?>
<a href="<?php echo JRoute::_(
ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)
); ?>" itemprop="url">
<?php echo $this->escape($displayData->title); ?>
</a>
<?php else : ?>
<?php echo $this->escape($displayData->title); ?>
<?php endif; ?>
</h2>
<?php endif; ?>

<?php if ($displayData->state == 0) : ?>
<span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>

<?php if (strtotime($displayData->publish_up) > strtotime(JFactory::getDate())) : ?>
<span class="label label-warning"><?php echo JText::_('JNOTPUBLISHEDYET'); ?></span>
<?php endif; ?>

<?php if ((strtotime($displayData->publish_down) < strtotime(JFactory::getDate()))
&& $displayData->publish_down != JFactory::getDbo()->getNullDate()) : ?>
<span class="label label-warning"><?php echo JText::_('JEXPIRED'); ?></span>
<?php endif; ?>
</div>
<?php endif; ?>

Заменив логотип на своё значение.
После этих манипуляций блог стал проходить проверку микроразметки

Если есть комментарии по разметке, пишите)
« Последнее редактирование: 28.03.2017, 14:59:02 от ProtectYourSite »
*

Филипп Сорокин

  • Сорокин Band
  • 1833
  • 148 / 4
Это чё за комбаин? Фреймворком у продвинутых мастеров ныне пользоваться не в моде?
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг
*

ChaosHead

  • Живу я здесь
  • 4773
  • 421 / 13
Спасибо, полезно на самом деле, т.к. у Joomla уже неправильная разметка, после того как Google ввёл новые изменения.
Кстати говоря больше всего бесит, что картинки теперь требуется размечать так:

Цитировать
<span style=display:none; itemprop=image itemscope itemtype=https://schema.org/ImageObject>
<img itemprop=url src=https://yoursite.ru/images/news/Google_recaptcha_exploit.jpg>
<meta itemprop=image content=https://yoursite.ru/images/news/Google_recaptcha_exploit.jpg>

я не понимаю кому это нужно...

Кстати аккуратнее с display:none в разметке, можно схлопотать санкции - она перестанет отображаться для сайта и таких примеров не мало.
*

Missile

  • Давно я тут
  • 819
  • 81 / 0
Я после тщетных попыток угодить и Яндексу, и Гуглю просто забила на это дело.
Мне кажется. вебмастерам пора устраивать акции сопротивления, потому что веб идёт куда-то не туда. Если бы, к примеру, все разом отказались от микроразметки, то в мозгу у поисковиков (точнее, у тех, кто за ними стоит) наверняка бы что-то щёлкнуло.
*

Septdir

  • Живу я здесь
  • 2738
  • 133 / 3
  • JoomlaZen
Ну я немного попарился и сделал и для Яндекс и для Google.  
Насчёт дисплей ноне.  Я просто сделал класс со стилем.
Display block
Width 0
Height 0
Font-size 0
Line-height 0
Overflow hidden
Да и все.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | JoomlaZen
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Могут ли 2 блога категорий конфликтовать?

Автор vitaliybalayan

Ответов: 1
Просмотров: 59
Последний ответ 05.12.2017, 15:39:01
от ELLE
Добавление модуля на страницах категорий/статей

Автор froggi3

Ответов: 3
Просмотров: 104
Последний ответ 24.11.2017, 09:36:12
от khan-alex
Группировка материалов блога по дополнительным полям

Автор tomclancys

Ответов: 2
Просмотров: 84
Последний ответ 28.10.2017, 15:57:12
от tomclancys
Ограничение статей для пользователя

Автор Grunya

Ответов: 2
Просмотров: 77
Последний ответ 25.09.2017, 15:29:39
от Ханиган
В материале блога сделать возврат к списку

Автор baskethome

Ответов: 8
Просмотров: 129
Последний ответ 08.09.2017, 13:36:32
от baskethome