-
-
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, тут в чатике говорят, что есть косяк по разметке.
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
Понял, в принципе, я так и думал что-то с версией связано


Uh oh!
There was an error while loading. Please reload this page.