Микро разметка для шаблонов приложений и элементов компонента ZOO

  • 2 Ответов
  • 265 Просмотров

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

*

radiant

  • Осваиваюсь на форуме
  • ***
  • 88
  • 3
"Микро разметка" для ZOO - Тема важная и еще не открытая на форуме
В связи с новыми тенденциями продвижения сайтов в поисковых системах, разработчики движка Joomla, в стандартные компоненты внедрили микро разметку от Schema.org, а вот в ZOO такой разметки нет!

Я решил познакомить Вас с такой возможностью, которая поднимет Ваши сайты на первые позиции в популярных поисковых системах.
Использую руководство схемой со страницы https://yandex.ru/support/webmaster/supported-schemas/address-organization.xml?lang=ru
Конечно эта тема не разбиралась, но очень актуальна. Не исключено что я мог в чем то ошибиться. Прошу ознакомиться и обсудить варианты!

Элементы:
1. В элементе media\zoo\elements\itemname\itemname.php на 57 строке, меняем
Код
return '<a title="'.htmlspecialchars($this->_item->name).'" href="' . $this->app->route->item($this->_item). '">' . $this->_item->name . '</a>';
на
Код
return '<a title="'.htmlspecialchars($this->_item->name).'" href="' . $this->app->route->item($this->_item). '" itemprop="url">' . $this->_item->name . '</a>';

2. В элементе media\zoo\elements\image\tmpl\image.php на 35 строке, меняем
Код
$content = '<img src="'.$link.'"'.$title.' alt="'.$alt.'" '.$info[3].' />'.$overlay;
на
Код
$content = '<img src="'.$link.'"'.$title.' alt="'.$alt.'" '.$info[3].' itemprop="image" />'.$overlay;

3. В элементе media\zoo\elements\media\media.php на 201 строке, меняем
Код
return '<iframe src="'.$source.$autoplay.$wmode.'"'.$width_attr.$height_attr.' allowfullscreen></iframe>';
на
Код
return '<div class="pos-video" itemprop="video" itemscope itemtype="https://schema.org/VideoObject"><div itemprop="embedHTML"><iframe src="'.$source.$autoplay.$wmode.'"'.$width_attr.$height_attr.' allowfullscreen></iframe></div></div>';

4. В элементе media\zoo\elements\relateditems\relateditems.php на 64 строке, меняем
Код
$output[] = '<a href="'.$this->app->route->item($item).'" title="'.$item->name.'">'.$item->name.'</a>';
на
Код
$output[] = '<a href="'.$this->app->route->item($item).'" title="'.$item->name.'" itemprop="url">'.$item->name.'</a>';

5. В элементе media\zoo\elements\relatedcategories\relatedcategories.php на 46 строке, меняем
Код
$category_links[] = '<a href="'.$this->app->route->category($category).'">'.$category->name.'</a>';
на
Код
$category_links[] = '<a href="'.$this->app->route->category($category).'" itemprop="genre"" title="'.$category->name.'">'.$category->name.'</a>';

6. В элементе media\zoo\elements\itemcategory\itemcategory.php на 47 строке, меняем
Код
$values[] = $params->get('linked')? '<a href="'.$this->app->route->category($category).'">'.$category->name.'</a>' : $category->name;
на
Код
$values[] = $params->get('linked')? '<a href="'.$this->app->route->category($category).'" title="'.$category->name.'" itemprop="genre">'.$category->name.'</a>' : $category->name;

7. В элементе media\zoo\elements\itemauthor\itemauthor.php на 56 строке, меняем
Код
$author = $user->name;
на
Код
$author = $author = '<span itemprop="author" itemscope itemtype="http://schema.org/Person">'.$user->name.'</span>';

8. В элементе media\zoo\elements\email\email.php на 77 странице, меняем
Код
return sprintf('<span><a href="mailto:%s">%s</a></span>', $mailto, $this->getText());
на
Код
return sprintf('<span><a href="mailto:%s" itemprop="email">%s</a></span>', $mailto, $this->getText());


Шаблоны
1. Меняем стандартный шаблон media\zoo\applications\blog\templates\default\renderer\item\full.php
Код
<?php
/**
 * @package   com_zoo
 * @author    YOOtheme http://www.yootheme.com
 * @copyright Copyright (C) YOOtheme GmbH
 * @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>
<div itemscope itemtype="http://schema.org/Article">
<?php if ($this->checkPosition('top')) : ?>
<div class="pos-top">
<?php echo $this->renderPosition('top', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if (($view->params->get('template.item_media_alignment') == "above") && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $view->params->get('template.item_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('title')) : ?>
<h1 class="pos-title" itemprop="name"><?php echo $this->renderPosition('title'); ?></h1>
<?php endif; ?>

<?php if ($this->checkPosition('meta')) : ?>
<p class="pos-meta" itemprop="datePublished">
<?php echo $this->renderPosition('meta'); ?>
</p>
<?php endif; ?>

<?php if ($this->checkPosition('subtitle')) : ?>
<h2 class="pos-subtitle">
<?php echo $this->renderPosition('subtitle'); ?>
</h2>
<?php endif; ?>

<?php if (($view->params->get('template.item_media_alignment') == "top") && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $view->params->get('template.item_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<div class="floatbox">

<?php if ((($view->params->get('template.item_media_alignment') == "left") || ($view->params->get('template.item_media_alignment') == "right")) && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $view->params->get('template.item_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('content')) : ?>
<div class="pos-content" itemprop="description">
<?php echo $this->renderPosition('content', array('style' => 'block')); ?>
</div>
<?php endif; ?>

</div>

<?php if (($view->params->get('template.item_media_alignment') == "bottom") && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $view->params->get('template.item_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('taxonomy')) : ?>
<ul class="pos-taxonomy">
<?php echo $this->renderPosition('taxonomy', array('style' => 'list')); ?>
</ul>
<?php endif; ?>

<?php if ($this->checkPosition('bottom')) : ?>
<div class="pos-bottom">
<?php echo $this->renderPosition('bottom', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('related')) : ?>
<div class="pos-related">
<h3><?php echo JText::_('Related Articles'); ?></h3>
<ul>
<?php echo $this->renderPosition('related'); ?>
</ul>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('author')) : ?>
<div class="pos-author">
<?php echo $this->renderPosition('author', array('style' => 'block')); ?>
</div>
<?php endif; ?>
</div>


2. Меняем стандартный шаблон media\zoo\applications\blog\templates\default\renderer\item\teaser.php
Код
<?php
/**
 * @package   com_zoo
 * @author    YOOtheme http://www.yootheme.com
 * @copyright Copyright (C) YOOtheme GmbH
 * @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

// init vars
$params = $item->getParams('site');

?>
<div itemscope itemtype="http://schema.org/Article">
<?php if (($params->get('template.teaseritem_media_alignment') == "above") && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $params->get('template.teaseritem_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('title')) : ?>
<h1 class="pos-title" itemprop="name">
<?php echo $this->renderPosition('title'); ?>
</h1>
<?php endif; ?>

<?php if ($this->checkPosition('meta')) : ?>
<p class="pos-meta" itemprop="datePublished">
<?php echo $this->renderPosition('meta'); ?>
</p>
<?php endif; ?>

<?php if ($this->checkPosition('subtitle')) : ?>
<h2 class="pos-subtitle">
<?php echo $this->renderPosition('subtitle'); ?>
</h2>
<?php endif; ?>

<?php if (($params->get('template.teaseritem_media_alignment') == "top") && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $params->get('template.teaseritem_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<div class="floatbox">

<?php if ((($params->get('template.teaseritem_media_alignment') == "left") || ($params->get('template.teaseritem_media_alignment') == "right")) && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $params->get('template.teaseritem_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('content')) : ?>
<div class="pos-content" itemprop="description">
<?php echo $this->renderPosition('content', array('style' => 'block')); ?>
</div>
<?php endif; ?>

</div>

<?php if (($params->get('template.teaseritem_media_alignment') == "bottom") && $this->checkPosition('media')) : ?>
<div class="pos-media media-<?php echo $params->get('template.teaseritem_media_alignment'); ?>" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('links')) : ?>
<p class="pos-links">
<?php echo $this->renderPosition('links', array('style' => 'pipe')); ?>
</p>
<?php endif; ?>
</div>


3. Меняем стандартный шаблон media\zoo\applications\blog\templates\default\renderer\item\author\full.php
Код
<?php
/**
 * @package   com_zoo
 * @author    YOOtheme http://www.yootheme.com
 * @copyright Copyright (C) YOOtheme GmbH
 * @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<div class="box" itemprop="author" itemscope itemtype="http://schema.org/Person">
<div>

<?php if ($this->checkPosition('media')) : ?>
<div class="pos-media" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media'); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('title')) : ?>
<h4 class="pos-title" itemprop="name">
<?php echo $this->renderPosition('title'); ?>
</h4>
<?php endif; ?>

<?php if ($this->checkPosition('description')) : ?>
<div class="pos-description" itemprop="description">
<?php echo $this->renderPosition('description', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('links')) : ?>
<p class="pos-links">
<?php echo $this->renderPosition('links', array('style' => 'pipe')); ?>
</p>
<?php endif; ?>

</div>
</div>

<?php if ($this->checkPosition('article')) : ?>
<div class="items" itemscope itemtype="https://schema.org/WebPage">
<?php echo $this->renderPosition('article', array('style' => 'block')); ?>
</div>
<?php endif;


4. Меняем стандартный шаблон media\zoo\applications\blog\templates\default\renderer\item\author\related.php[/b]
Код
<?php
/**
 * @package   com_zoo
 * @author    YOOtheme http://www.yootheme.com
 * @copyright Copyright (C) YOOtheme GmbH
 * @license   http://www.gnu.org/licenses/gpl.html GNU/GPL
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<?php if ($this->checkPosition('media')) : ?>
<div class="sub-pos-media" itemscope itemtype="http://schema.org/ImageObject">
<?php echo $this->renderPosition('media'); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('title')) : ?>
<h4 class="sub-pos-title" itemprop="name">
<?php echo $this->renderPosition('title'); ?>
</h4>
<?php endif; ?>

<?php if ($this->checkPosition('description')) : ?>
<div class="sub-pos-description" itemprop="description">
<?php echo $this->renderPosition('description', array('style' => 'block')); ?>
</div>
<?php endif; ?>

<?php if ($this->checkPosition('links')) : ?>
<p class="sub-pos-links">
<?php echo $this->renderPosition('links', array('style' => 'pipe')); ?>
</p>
<?php endif;


Если я в чем то ошибся или у Вас есть свои наработки или мнение, прошу присоединиться к этой теме!
Кучкуемся и разбираемся! Ставим лайки, если понравилось!
« Последнее редактирование: 12.01.2017, 17:49:45 от radiant »

*

radiant

  • Осваиваюсь на форуме
  • ***
  • 88
  • 3
В элементе media\zoo\elements\rating\tmpl\rating.php есть микро разметка для data-vocabulary.org, как заменить её для schema.org?

Код
	<div itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
<meta itemprop="itemreviewed" content="<?php echo $this->getItem()->name; ?>" />
<div itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">
<meta itemprop="average" content="<?php echo number_format($rating, 1); ?>" />
<meta itemprop="best" content="<?php echo $stars; ?>" />
</div>
<meta itemprop="votes" content="<?php echo $votes; ?>"/>
</div>
« Последнее редактирование: 12.01.2017, 00:15:24 от radiant »

*

Comoc

  • Новичок
  • *
  • 1
  • 0
Немножко добавлю.
Синтаксическая разметка для zoo cookbook.
Это работает если вы используете шаблон uikit.
Использовал: https://yandex.ru/support/webmaster/supported-schemas/recipe.html
Разобрался пока вот с этим только.


http://schema.org/Recipe
1. В элементе media/zoo/applications/cookbook/templates/uikit/renderer/item/full.php в 13 строке, добавляем
Код
<div itemscope itemtype="http://schema.org/Recipe">

2. В строке 40 меняем
Код
<div class="uk-thumbnail <?php echo 'uk-align-'.($alignment == "left" || $alignment == "right" ? 'medium-' : '').$alignment; ?>">
на
Код
<div itemprop="resultPhoto" itemprop="image" class="uk-thumbnail  <?php echo 'uk-align-'.($alignment == "left"  || $alignment == "right" ? 'medium-' : '').$alignment; ?>">

3. В 26 строке, меняем
Код
 <h1 class="uk-h1"><?php echo $this->renderPosition('title'); ?></h1>
на
Код
<h1 class="uk-h1" itemprop="name"><?php echo $this->renderPosition('title'); ?></h1>

4.  В элементе media/zoo/applications/cookbook/templates/uikit/renderer/item/positions.config в 139 строке, меняем
Код
"separated_by": "tag=[<li>%s<\/li>] enclosing_tag=[<ul class=\"uk-list\">%s<\/ul>]",
на
Код
"separated_by": "tag=[<li itemprop=\"ingredients\" itemprop=\"recipeIngredient\">%s<\/li>] enclosing_tag=[<ul class=\"uk-list\">%s<\/ul>]",

5. в строке 147, меняем
Код
"separated_by": "tag=[<div class=\"uk-margin\">%s<\/div>]",
на
Код
"separated_by": "tag=[<div itemprop=\"recipeInstructions\" class=\"uk-margin\">%s<\/div>]",


Если кто поможет с остальным буду благодарен.