-
-
Save AlekVolsk/1fe1d2add48c40118752f8b5043f19c0 to your computer and use it in GitHub Desktop.
<?php | |
use Joomla\CMS\Uri\Uri; | |
defined('_JEXEC') or die; | |
echo '<ul itemscope itemtype="http://schema.org/BreadcrumbList">'; | |
if (!$params->get('showLast', 1)) { | |
array_pop($list); | |
} | |
$count = count($list); | |
$linkCurrent = Uri::current(); | |
$linkRoot = substr(Uri::root(), 0, -1); | |
for ($i = 0; $i < $count; $i++) { | |
if ($i == 1 && !empty($list[$i]->link) && !empty($list[$i - 1]->link) && $list[$i]->link == $list[$i - 1]->link) { | |
continue; | |
} | |
if ($pos = strpos($list[$i]->name, '||')) { | |
$name = trim(substr($list[$i]->name, 0, $pos)); | |
} else { | |
$name = $list[$i]->name; | |
} | |
$meta = '<meta itemprop="position" content="' . ($i + 1) . '">'; | |
if ($i < $count - 1) { | |
if (!empty($list[$i]->link)) { | |
$link = explode('?', $list[$i]->link)[0]; | |
echo '<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem"><a itemprop="item" content="' . $linkRoot . $link . '" href="' . $link . '"><span itemprop="name">' . $name . '</span></a>' . $meta . '</li>'; | |
} else { | |
echo '<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem"><span itemprop="item" content="' . $linkRoot . $link . '"><span itemprop="name">' . $name . '</span></span>' . $meta . '</li>'; | |
} | |
} else { | |
echo '<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem"><span itemprop="item" content="' . $linkCurrent . '"><span itemprop="name">' . $name . '</span></span>' . $meta . '</li>'; | |
} | |
} | |
echo '</ul>'; |
{'pdoCrumbs' | snippet : [ | |
'showHome' => 1, | |
'outputSeparator' => '', | |
'tplWrapper' => '@INLINE <ul itemscope itemtype="http://schema.org/BreadcrumbList">{$output}</ul>', | |
'tplHome' => '@INLINE | |
<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem"> | |
<a title="{$_modx->config.site_name}" itemprop="item" content="{$_modx->config.site_url}" href="{$link}"> | |
<span itemprop="name">{$menutitle}</span> | |
</a> | |
<meta itemprop="position" content="{$idx}"> | |
</li>', | |
'tpl' => '@INLINE | |
<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem"> | |
<a title="{$menutitle}" itemprop="item" content="{$_modx->config.site_url}{$link}" href="{$link}"> | |
<span itemprop="name">{$menutitle}</span> | |
</a> | |
<meta itemprop="position" content="{$idx}"> | |
</li>', | |
'tplCurrent' => '@INLINE | |
<li itemscope itemprop="itemListElement" itemtype="http://schema.org/ListItem"> | |
<span title="{$menutitle}" itemprop="item" content="{$_modx->config.site_url}{$link}"> | |
<span itemprop="name">{$menutitle}</span> | |
</span> | |
<meta itemprop="position" content="{$idx}"> | |
</li>' | |
]} |
AlekVolsk
commented
May 27, 2019
•
@AlekVolsk, тут в чатике говорят, что есть косяк по разметке.
itemprop="position" не относится к itemprop="item", а относится к itemprop="itemListElement"
гугл даже показывает правильно вложенность на скрине
короче, нужно вынести за пределы <a
Откорректировал.
Кстати, в J-версии изначально всё правильно было :)
Спасибо за лайв хак ) Но я не понял как у вас заработало через Uri::current(); ?
Я в php не силен, но у меня из-за этого сайт не отображало, потом я нашел на стоковерфлоу - JUri::current();
Т.е. не Uri , а JUri ... и у меня всё заработало, без прописывания - use Joomla\CMS\Uri\Uri;
Это вы ошиблись в коде или я что то не то говорю?
Так вы use прописывали?
И какая джумла установлена?
Вначале прописал, потом закомментировал и без неё работает.
Версия Joomla! 3.6.2 Stable
В 3.6.2 нет нэймспейсов, поэтому и не работало. Код написан для версии 3.8+
Так что вы все правильно поправили у себя, переписав на JUri
Понял, в принципе, я так и думал что-то с версией связано