Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
*

bizzon

  • Новичок
  • 1
  • 0 / 0
Здравствуйте!
Помогите исправить https://yadi.sk/i/fwVud13sfXADt
Я так понимаю что это из-за не прописанного itemscope itemtype=\"http://schema.org/Article
Как прописать в шаблоне article/default.php  Joomla 2.5
Помогите пожалуйста
« Последнее редактирование: 28.03.2015, 01:43:56 от bizzon »
*

bizzon

  • Новичок
  • 1
  • 0 / 0
Изменил extravote.php и теперь супер
Код
<?php
/*------------------------------------------------------------------------
# plg_extravote - ExtraVote Plugin
# ------------------------------------------------------------------------
# author    Jesús Vargas Garita
# Copyright (C) 2010 www.joomlahill.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://www.joomlahill.com
# Technical Support:  Forum - http://www.joomlahill.com/forum
-------------------------------------------------------------------------*/

// No direct access
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');


class plgContentExtraVote extends JPlugin
{
protected $article_id;

public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
$this->loadLanguage();

$this->view = JRequest::getCmd('view');
}

public function onContentBeforeDisplay($context, &$article, &$params, $limitstart = 1)
{
if (strpos($context, 'com_content')!== false) {

$this->article_id = $article->id;

$this->ExtraVotePrepare($article, $params);

if ( $this->params->get('display') == 0  )
{
$hide  = $this->params->get('hide', 1);

if ( $hide != 1 || $this->view == 'article' ) {
$article->xid = 0;
return $this->ContentExtraVote($article, $params);
}
}
}

  }

protected function ContentExtraVote(&$article, &$params)
{
$table =($this->params->get('table',1)==1?'#__content_extravote':'#__content_rating');
$rating_count=$rating_sum=0;
$html=$ip='';

if ($params->get('show_vote'))
{
$db = JFactory::getDBO();
$query='SELECT * FROM ' . $table . ' WHERE content_id='.$this->article_id . ($table == '#__content_extravote' ? ' AND extra_id = 0' : '');
$db->setQuery($query);
$vote=$db->loadObject();

if($vote) {
$rating_sum = $vote->rating_sum;
$rating_count = intval($vote->rating_count);
$ip = $vote->lastip;
}

$html .= $this->plgContentExtraVoteStars( $this->article_id, $rating_sum, $rating_count, $article->xid, $ip );
}
return $html;
  }

 
  protected function plgContentExtraVoteStars( $id, $rating_sum, $rating_count, $xid, $ip )
{
$document = JFactory::getDocument();

if ( $this->params->get('css', 1) ) :
$document->addStyleSheet(JURI::root(true).'/plugins/content/extravote/assets/extravote.css');
endif;

$document->addScript(JURI::root(true).'/plugins/content/extravote/assets/extravote.js');

      global $plgContentExtraVoteAddScript;

$show_counter = $this->params->get('show_counter',1);
$show_rating  = $this->params->get('show_rating',1);
$rating_mode  = $this->params->get('rating_mode', 1);
$show_unrated = $this->params->get('show_unrated',1);
$initial_hide = $this->params->get('initial_hide',0);
$currip = $_SERVER['REMOTE_ADDR'];
$add_snippets = 0;
$rating  = 0;

if(!$plgContentExtraVoteAddScript){
          $document->addScriptDeclaration("
var ev_basefolder = '".JURI::base(true)."';
var extravote_text=Array('".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_NO_AJAX')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_LOADING')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_THANKS')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_LOGIN')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_MESSAGE_RATED')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_VOTES')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_VOTE')."','".
JTEXT::_('PLG_CONTENT_EXTRAVOTE_LABEL_RATING').
"');
");
      $plgContentExtraVoteAddScript = 1;
}

if( $rating_count!=0 ) {
$rating  = ($rating_sum / intval( $rating_count ));
$add_snippets = $this->params->get('snippets',0);
} elseif( $show_unrated == 0 ) {
$show_counter = -1;
$show_rating  = -1;
}

$container = 'div';
$class     = 'size-'.$this->params->get('size', 1);

if( (int)$xid ) {
if ( $show_counter == 2 ) $show_counter = 0;
if ( $show_rating == 2 ) $show_rating = 0;
$container = 'span';
$class    .= ' extravote-small'; 
$add_snippets = 0;
} else {
if ( $show_counter == 3 ) $show_counter = 0;
if ( $show_rating == 3 ) $show_rating = 0;
$class    .= ' extravote'; 
}

$stars = (($this->params->get('table',1)!=1 && !(int)$xid)?5:$this->params->get('stars',10));
$spans = '';

for ($i=0,$j=5/$stars; $i<$stars; $i++,$j+=5/$stars) :
$spans .= "
      <span class=\"extravote-star\"><a href=\"javascript:void(null)\" onclick=\"javascript:JVXVote(".$id.",".$j.",".$rating_sum.",".$rating_count.",'".$xid."',".$show_counter.",".$show_rating.",".$rating_mode.");\" title=\"".JTEXT::_('PLG_CONTENT_EXTRAVOTE_RATING_'.($j*10).'_OUT_OF_5')."\" class=\"ev-".($j*10)."-stars\">1</a></span>";
endfor;

$html = "
<".$container." class=\"".$class."\">
  <span class=\"extravote-stars\"".($add_snippets?" itemprop=\"aggregateRating\" itemscope itemtype=\"http://schema.org/AggregateRating\"":"").">".($add_snippets?"
  <meta itemprop=\"ratingCount\" content=\"".$rating_count."\" />
":"
")."<span id=\"rating_".$id."_".$xid."\" class=\"current-rating\"".((!$initial_hide||$currip==$ip)?" style=\"width:".round($rating*20)."%;\"":"")."".($add_snippets?" itemprop=\"ratingValue\"":"").">".($add_snippets?$rating:"")."</span>"
.$spans."
  </span>
  <span class=\"extravote-info\" id=\"extravote_".$id."_".$xid."\" xmlns:v=\"http://rdf.data-vocabulary.org/#\" typeof=\"v:Review-aggregate\">";
 
if ( $show_rating > 0 ) {
if ( $rating_mode == 0 ) {
$rating = round($rating*20). '%';     
} else {
$rating = number_format($rating,2);     
}
$html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_RATING', '<span rel="v:rating" typeof="v:Rating"><SPAN property="v:average">'.$rating.'</SPAN>/<SPAN property="v:best">5</SPAN></span>');
}
 
if ( $show_counter > 0 ) {
if($rating_count!=1) {
$html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_VOTES', '<SPAN property="v:votes">'.$rating_count.'</SPAN>');
} else { 
$html .= JTEXT::sprintf('PLG_CONTENT_EXTRAVOTE_LABEL_VOTE', '<SPAN property="v:votes">'.$rating_count.'</SPAN>');
}
}
 
$html .="</span>";
$html .="
</".$container.">";
 
return $html;
}

  protected function ExtraVotePrepare( $article, &$params )
{
    if (isset($this->article_id)) {

        $extra = $this->params->get('extra', 1);
$main  = $this->params->get('main', 1);

      if ( $extra != 0 ) {

        $regex = "/{extravote\s*([0-9]+)}/i";

if ( $this->view != 'article' && stripos($article->introtext, 'extravote') ) {
if ( $extra == 2 ) {
$article->introtext = preg_replace( $regex, '', $article->introtext );
} else {
$article->introtext = preg_replace_callback( $regex, array($this,'plgContentExtraVoteReplacer'), $article->introtext );
}
} elseif (stripos($article->text, 'extravote')) {
//     $this->article_id = $article->id;
        $article->text = preg_replace_callback( $regex, array($this,'plgContentExtraVoteReplacer'), $article->text );
    }
    }

      if ( $main != 0 ) {

$strposIntro = isset($article->introtext)?stripos($article->introtext, 'mainvote'):false;
$strposText  = stripos($article->text, 'mainvote');

$regex = "/{mainvote\s*([0-9]*)}/i";

if ( $main == 2 && $this->view != 'article' && $strposIntro)
    {
        $article->introtext = preg_replace( $regex, '', $article->introtext );
    } else {
    $this->article_id = $article->id;
if ( $this->view == 'article' && $strposText ) {
        $article->text = preg_replace_callback( $regex, array($this,'plgContentExtraVoteReplacer'), $article->text );
} elseif( $strposIntro ) {
        $article->introtext = preg_replace_callback( $regex, array($this,'plgContentExtraVoteReplacer'), $article->introtext );
}
    }
    }

    if ( $this->params->get('display') == 1 )  {

        $article->xid = 0;
if ( $this->view == 'article' ) {
        $article->text .= $this->ContentExtraVote($article, $params);
} elseif ( $this->params->get('hide') == 0 ) {
        $article->introtext .= $this->ContentExtraVote($article, $params);
}
    }
      }
  }
 
protected function plgContentExtraVoteReplacer(&$matches )
{
  $db = JFactory::getDBO();
  $cid = 0;
$xid = 0;
if (isset($matches[1])) {
if(stripos($matches[0], 'extravote')) {
$xid = (int)$matches[1];
} else {
$cid = (int)$matches[1];
}
}
if ( $cid == 0 && ($this->params->get('article_id') || $xid == 0) ) {
$cid = $this->article_id;
}
  $rating_sum = 0;
  $rating_count = 0;

if ( $xid == 0 ) :
global $extravote_mainvote;
$extravote_mainvote .= 'x';
$xid = $extravote_mainvote;
$table =($this->params->get('table',1)==1?'#__content_extravote':'#__content_rating');
$db->setQuery('SELECT * FROM ' . $table . ' WHERE content_id='.(int)$cid);
else : 
$db->setQuery('SELECT * FROM #__content_extravote WHERE content_id='.(int)$cid.' AND extra_id='.(int)$xid);
endif; 
  $vote = $db->loadObject();
  if($vote) {
if($vote->rating_count!=0)
$rating_sum = $vote->rating_sum;
$rating_count = intval($vote->rating_count);
}
return $this->plgContentExtraVoteStars( $cid, $rating_sum, $rating_count, $xid, ($vote?$vote->lastip:'') );
}

}
*

jeka odesskiy

  • Захожу иногда
  • 201
  • 3 / 0
Здравствуйте, я что-то запутался. Отключил стандартный рейтинг голосования, установил Rich Snippets Vote, он при просмотре в Google выдает, что проблем нет, разметка есть, но звезды в самом тексте не появляются, установил еще плагин Extra Vote, тот выдает звезды но без плагина rich -гугл и Яндекс не видят микроразметку. Ок,2 плагина в месте при проверке показывают что все ок. Но в поиске звезды не появились.Хочу звезды, но чтобы это делал плагин автоматически.)) Что делать? *DRINK*
*

Rex_One

  • Захожу иногда
  • 453
  • 37 / 0
ELLE, на сколько рационально тягаться  с этим?
Кривизна рук не компенсирует прямизну извилин.
*

Beer

  • Завсегдатай
  • 1105
  • 43 / 1
  • БИРУ - БИР!
Я вот что-то не догоняю - при проверке страниц гугль пишет Проблем нет, но и звезд тоже у меня нет... Жду появления их очень давно.
Article (1)
Код
Article
inLanguage: ru-RU
name: Сабвуфер для Land Rover Defender 110
headline: Сабвуфер для Land Rover Defender 110
datePublished: 2015-07-23
image: http://www.vodkomotornik.ru/apple-touch-icon-152x152-precomposed.png
aggregateRating [AggregateRating]:
ratingCount: 6
ratingValue: 5
aggregateRating [AggregateRating]: http://www.vodkomotornik.ru/poleznoe/motorcycle-bicycle/extravote_166_0
ratingValue: 5.00
reviewCount: 6
*

Beer

  • Завсегдатай
  • 1105
  • 43 / 1
  • БИРУ - БИР!
*

Kingsman

  • Новичок
  • 9
  • 0 / 0
Не совсем понятно, почему везде используется data-vocabulary.org для микроразметки хлебных крошек. Почему не schema.org? Может ли кто-то объяснить?

Далее. Вопрос, правильно ли оборачивать в микроразметку последний, неактивный, элемент строки навигации? Structured Data Testing Tool выдает ошибку "url: отсутствует (обязательное)". Т.е. если последний элемент у меня не ссылка, то он отображаться в хлебных крошках никак не будет? И с этим ничего не поделать?

И вопрос, правильно ли я добавил себе микроразметку строки навигации? Код (Joomla 3.4.3):

Спойлер
[свернуть]
*

jacson1985

  • Новичок
  • 8
  • 0 / 0
У меня с Joomla 3 ничего не получается. Все решения перепробовал. Все равно Google говорит "Не указан объект отзыва."
*

vovo71

  • Новичок
  • 5
  • 0 / 0
У меня Joomla 2.5 тоже пишет "Не указан объект отзыва.". Никак не могу исправить.  Помогите кто знает. А лучше выложите готовый extravote.php.
*

Adrian1111

  • Захожу иногда
  • 271
  • 1 / 0
Здравствуйте! Проверяю разметку в Google Structured Data Testing Tool.
Проверка показывает:

Product - проблем нет.
hreview - три проблемы:
 - reviewer:   отсутствует (обязательное);
 - Укажите свойство rating или dtreviewed;
 - Не указан объект отзыва;

Что с этим делать? Сами отзывы на сайте добавляются.Рейтинг-звездочки есть и работает. Просто, как выясняется это не размечено.

*

Konstanin_by

  • Осваиваюсь на форуме
  • 26
  • 4 / 0
Всем добра!
Судя по этой статье https://developers.google.com/structured-data/rich-snippets/articles?hl=ru у Google изменились правила разметки статей.
Что не может не опечалить.
Для одной статьи реализовал, но желательно всё внести в шаблон, а тут начинается проблема
в файл  templates\protostar\html\layouts\joomla\content\info_block\author.php добавил блок <dd itemprop="publisher"
Спойлер
[свернуть]

Как получить данные для переменных <?php echo $logoFile; ?> <?php echo $sitename; ?> и <?php echo $siteurl; ?> я не знаю.
Пожалуйста подскажите как в этом файле получить ссылку на логотип, имя сайта и адрес сайта.
« Последнее редактирование: 30.01.2016, 08:57:32 от Konstanin_by »
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
Всем добра!
Судя по этой статье https://developers.google.com/structured-data/rich-snippets/articles?hl=ru у Google изменились правила разметки статей.
Что не может не опечалить.
Для одной статьи реализовал, но желательно всё внести в шаблон, а тут начинается проблема
в файл  templates\protostar\html\layouts\joomla\content\info_block\author.php добавил блок <dd itemprop="publisher"

Как получить данные для переменных <?php echo $logoFile; ?> <?php echo $sitename; ?> и <?php echo $siteurl; ?> я не знаю.
Пожалуйста подскажите как в этом файле получить ссылку на логотип, имя сайта и адрес сайта.
Код: php
$app             = JFactory::getApplication();
$doc             = JFactory::getDocument();
/********************/
$sitename = $app->get('sitename');
$siteurl = JUri::root();
$logoFile = JUri::root(). $app->getTemplate(true)->params->get('logoFile');
как-то так
« Последнее редактирование: 30.01.2016, 08:24:05 от ViktorMah »
*

Konstanin_by

  • Осваиваюсь на форуме
  • 26
  • 4 / 0
Спасибо ViktorMah за помощь.

Появился ещё один вопрос.
Google Structured Data Testing Tool стал настоятельно требовать наличия itemprop="mainEntityOfPage". По сути это каноникал_адрес записываемый в itemid="" его можно оставить пустым

Код: html4strict
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid=""/>

Но думаю стоит и его заполнять.
И тут, опять, встаёт вопрос - как получить эту ссылку?
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0

Код: html4strict
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid=""/>


В нынешних реалиях сей код нужно размещать в двух файлах
1 - \html\com_content\article\default.php
Код: php
<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope 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 $doc->getBase(); ?>"/>



2 - (для Блог_Категории) \html\layouts\joomla\content\blog_style_default_item_title.php

Код: php
	<?php if ($params->get('show_title') || $displayData->state == 0 || ($params->get('show_author') && !empty($displayData->author ))) : ?>
<div class="page-header">

<?php if ($params->get('show_title')) : ?>
<h2 itemprop="name">
<?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
<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; ?>
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>"/>

как автоматизировать разметку для фото статьи я не совсем знаю
по правилам для фото мы должны получить такой код на выходе
Код: html4strict
<div itemscope="itemscope" itemtype="https://schema.org/ImageObject" itemprop="image"><img src="images/headers/фото.jpg" alt="фото111" />
<meta itemprop="width" content="1170" />
<meta itemprop="height" content="625" />
<meta itemprop="url" content="https://сайт.com/images/headers/фото.jpg" />
</div>

проблема в этих параметрах <meta itemprop="width" content="1170" /> и    <meta itemprop="height" content="625" />
их нужно как-то получать до формирования страницы.

Код: php
<?php if (isset($images->image_fulltext) && !empty($images->image_fulltext)) : ?>
<?php $imgfloat = (empty($images->float_fulltext))? $params->get('float_fulltext') : $images->float_fulltext; ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat); ?> item-image clearfix" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> <img
<?php if ($images->image_fulltext_caption):
echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_fulltext_caption). '"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_fulltext); ?>" alt="<?php echo htmlspecialchars($images->image_fulltext_alt); ?>" />
    <meta itemprop="url" content="<?php echo JUri::root(). $images->image_fulltext; ?>" />
    <meta itemprop="width" content="800" />
    <meta itemprop="height" content="800" /> </div>
<div class="clearfix"></div>
<?php endif; ?>

Пока остаётся размечать фото через саму статью и добавлять headline тоже
« Последнее редактирование: 30.01.2016, 17:08:32 от ViktorMah »
*

Артём 2014

  • Захожу иногда
  • 484
  • 6 / 3
Добрый вечер, обязательно ли нужно использовать данные разметки?
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
обязательно ли нужно использовать данные разметки?
Совсем не обязательно.
*

Roinmana

  • Захожу иногда
  • 108
  • 2 / 0
С начала года у Google изменились правила разметки http://schema.org/Article. Теперь нужно внедрять поля https://schema.org/ImageObject (с указанием width и height изображений) и publisher с указанием логотипа. Есть ли решения по доработке шаблона? В принципе все можно вставить вручную, вот только как сделать, что бы размеры изображения выводились актуальные?
« Последнее редактирование: 12.03.2016, 15:54:53 от Roinmana »
*

balashoff

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
В нынешних реалиях сей код нужно размещать в двух файлах
1 - \html\com_content\article\default.php
Код: php
<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope 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 $doc->getBase(); ?>"/>



2 - (для Блог_Категории) \html\layouts\joomla\content\blog_style_default_item_title.php

Код: php
	<?php if ($params->get('show_title') || $displayData->state == 0 || ($params->get('show_author') && !empty($displayData->author ))) : ?>
<div class="page-header">

<?php if ($params->get('show_title')) : ?>
<h2 itemprop="name">
<?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
<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; ?>
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>"/>

как автоматизировать разметку для фото статьи я не совсем знаю
по правилам для фото мы должны получить такой код на выходе
Код: html4strict
<div itemscope="itemscope" itemtype="https://schema.org/ImageObject" itemprop="image"><img src="images/headers/фото.jpg" alt="фото111" />
<meta itemprop="width" content="1170" />
<meta itemprop="height" content="625" />
<meta itemprop="url" content="https://сайт.com/images/headers/фото.jpg" />
</div>

проблема в этих параметрах <meta itemprop="width" content="1170" /> и    <meta itemprop="height" content="625" />
их нужно как-то получать до формирования страницы.

Код: php
<?php if (isset($images->image_fulltext) && !empty($images->image_fulltext)) : ?>
<?php $imgfloat = (empty($images->float_fulltext))? $params->get('float_fulltext') : $images->float_fulltext; ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat); ?> item-image clearfix" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> <img
<?php if ($images->image_fulltext_caption):
echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_fulltext_caption). '"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_fulltext); ?>" alt="<?php echo htmlspecialchars($images->image_fulltext_alt); ?>" />
    <meta itemprop="url" content="<?php echo JUri::root(). $images->image_fulltext; ?>" />
    <meta itemprop="width" content="800" />
    <meta itemprop="height" content="800" /> </div>
<div class="clearfix"></div>
<?php endif; ?>

Пока остаётся размечать фото через саму статью и добавлять headline тоже

У меня после вставки строки ниже статья не открывается (белый экран)

<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="<?php echo $doc->getBase(); ?>"/>

Артио SEF на сайте стоит. Могут ли в этом проблемы быть?
*

Beer

  • Завсегдатай
  • 1105
  • 43 / 1
  • БИРУ - БИР!
« Последнее редактирование: 25.04.2016, 20:29:31 от Beer »
*

Beer

  • Завсегдатай
  • 1105
  • 43 / 1
  • БИРУ - БИР!
У меня проблема такая:
 
url:   отсутствует (обязательное)

Но если удалю:
Код
<base href="http://site/poleznoe/beer/info.html" />
То код становится валидным.

На сколько важна эта строка?  
*

dialit

  • Захожу иногда
  • 70
  • 1 / 0
подскажите рабочий код с разметкой schema ко всем  image в материале.

в данном случае:
Код
<?php if (isset($images->image_fulltext) && !empty($images->image_fulltext)) : ?>
<?php $imgfloat = (empty($images->float_fulltext))? $params->get('float_fulltext') : $images->float_fulltext; ?>
<div class="pull-<?php echo htmlspecialchars($imgfloat); ?> item-image clearfix" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> <img
<?php if ($images->image_fulltext_caption):
echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_fulltext_caption). '"';
endif; ?>
src="<?php echo htmlspecialchars($images->image_fulltext); ?>" alt="<?php echo htmlspecialchars($images->image_fulltext_alt); ?>" />
    <meta itemprop="url" content="<?php echo JUri::root(). $images->image_fulltext; ?>" />
    <meta itemprop="width" content="800" />
    <meta itemprop="height" content="800" /> </div>
<div class="clearfix"></div>
<?php endif; ?>

размечается только изображение полного текста материала.

Как сделать так, чтобы размечались все image в статье?


Проблема в том, что добавлять к каждой картинке данный атрибут вручную неудобно, поэтому желательно этот момент автоматизировать
« Последнее редактирование: 16.05.2016, 14:30:33 от dialit »
*

ice99

  • Захожу иногда
  • 85
  • 3 / 0
Так, немножко запутался.
Делаю сайт, добавил туда микроразметку Product,Article, Breadcrumbs.

Захотел полностью разметить шаблон "по фен-шую" ))))
Страницы у меня по сути тип "Article"

Страница Article по идее должна быть размечена так

Код
<body itemscope itemtype="http://schema.org/WebPage">
     <header itemscope itemtype="http://schema.org/WPHeader"> </header>
             <ul itemscope itemtype="http://schema.org/BreadcrumbList"> </ul>
             <div itemscope itemtype="http://schema.org/Article"> </div>
             <div itemscope itemtype="http://schema.org/Product"> </div>
     <aside itemscope itemtype="http://schema.org/WPSideBar"> </aside>
     <footer itemscope itemtype="http://schema.org/WPFooter"> </footer>
</body>

Как разметить Крошки, Статью и Продукт - понятно (валидаторы в помощь)

Но ЧТО писать в WebPage, WPHeader, WPSideBar, WPFooter ? По мне так это геометрические сущности (а не логические)

2 варианта
1. Обозначить эти секции, и оставить их пустыми (без прямых свойств)
2. Заполнить их. Тогда встает проблема, например WebPage, WPHeader рекомендуют писать itemprop="headline".
itemprop="headline" у меня взят из h1, и уже использован в Article. Можно конечно искусственно прописать их на странице тегом <p> и запихнуть в скрытый div, но получается что я делаю "разметку ради разметки"

Как правильно подойти к этому вопросу?
     
*

ice99

  • Захожу иногда
  • 85
  • 3 / 0
А как добавить рейтинг к категории (макет blog.php)?

Хочу чтобы мой блог выглядел так:
-----------------------------------------
------Заголовок блога------
Статья 1 Статья 2
Статья 3 Статья 4
-----------------------
Оцените этот блог : * * * * *
--------------------------------------------
*

Jomel

  • Осваиваюсь на форуме
  • 35
  • 1 / 0
Объясните недалекому:

Возьмем такой шаблон
http://www.joomlart.com/demo/#ja_simpli
Название статьи H2
<div class="item-page" itemscope="" itemtype="https://schema.org/Article">
   <meta itemprop="inLanguage" content="en-GB">
         <div class="page-header">
               <h2 itemprop="name">
<h2 itemprop="name">.
Почему не H1? Хоть Gavick, хоть Rockettheme возьми ... Заголовок статьи не H1 в материале это же не по фэн-шую?
Внутри статьи делать H1? Но сначала h2, а уже после него H1 тоже не по фэн-шую?
Как быть? schema.org лучше знает, как надо?
*

girlwolf

  • Захожу иногда
  • 126
  • 3 / 0
Google воспринимает рейтинг в категориях как спам в структурированных данных. Глянула, после обновления до Joomla 3.7 рейтинг появился даже в категориях, но его нельзя поставить никак пользователю (формы нет, а звездочки есть). Кто знает как добавить в категории форму для голосования (рейтинга) или полностью убрать и звёздочки из категорий?
« Последнее редактирование: 18.05.2017, 14:47:35 от girlwolf »
*

korkka44

  • Захожу иногда
  • 194
  • 1 / 0
Кто вкурсе как последнею версию ExtraVote настроить рейтинг статьи, чтобы в Google отображался к материалу, в интернете много инфы, но она уже устарела, проверяла...
*

converseone

  • Новичок
  • 1
  • 0 / 0
такой вопрос, есть конкурент который подтягивает рейтинг и оценки к категориям, пример:

Собстна, в карточке товара я реализовал это, а вот с категорией тяжко пример раздела, стоит допиливать код с рейтингом и туда подвязывать разметку или возможно реализовать чисто в коде, без изменения визуальной составляющей. Кто сталкивался?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT SEO Meta templates плагин сео-шаблонов для Joomla

Автор sergeytolkachyov

Ответов: 26
Просмотров: 5714
Последний ответ 17.10.2025, 16:00:36
от sergeytolkachyov
Нет позиций в Google Joomla 3

Автор Benderalfa

Ответов: 1
Просмотров: 3280
Последний ответ 20.09.2022, 20:53:56
от darkghost
Вопрос по отличию SEO MODx и Joomla

Автор vovafit

Ответов: 7
Просмотров: 2004
Последний ответ 20.11.2021, 18:15:09
от Byzi
Решение - Редирект со страниц AMP на обычные

Автор draff

Ответов: 2
Просмотров: 1436
Последний ответ 20.11.2021, 17:03:03
от draff
Не получается поменять description на главной странице Joomla 3.

Автор illimited

Ответов: 11
Просмотров: 1699
Последний ответ 21.12.2020, 14:39:49
от illimited