Шаблон вывода "хлебных крошек"

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 29 марта 2021 в 16:07
Привет друзья
В шаблон вывода "хлебных крошек" хочу добавить тайтл для ссылок, который бы формировался из h1 категории (по аналогии с главным меню) это возможно?

Вод кусок кода из файла breadcrumbs.tpl.php

  1. <?php $listed = array(); ?>
  2. <ul class="home">
  3. <?php if ($breadcrumbs) { ?>
  4. <?php foreach($breadcrumbs as $id=>$item){ ?>
  5. <?php if (in_array($item['href'], $listed)){ continue; } ?>
  6. <li <?php if (!isset($item['is_last'])){ ?>itemscope itemtype="http://data-vocabulary.org/Breadcrumb"<?php } ?>>
  7. <?php if (!isset($item['is_last'])){ ?>
  8. <a title="<?php echo $item['seo_h1']; ?>" href="<?php html($item['href']); ?>" itemprop="url"><span itemprop="title"><?php html($item['title']); ?></span></a>
  9. <?php } else { ?>
  10. <span><?php html($item['title']); ?></span>
  11. <?php } ?>
  12. </li>
  13.  
  14. <?php if ($id < sizeof($breadcrumbs)-1){ ?>
  15. <li> &nbsp;;<li>
  16. <?php } ?>
  17.  
  18. <?php $listed[] = $item['href']; ?>
  19. <?php } ?>
  20.  
  21. <?php } ?>
  22. </ul>

добавил в него title="<?php echo $item['seo_h1']; ?>", но Тайтл не выводится, так понял его нет в переменной $item, можно его как-то добавить?
#2 29 марта 2021 в 17:50
Хлебные крошки формируются в файле system/core/template.php. В шаблоне массив с пунктами $breadcrumbs. И вот эта переменная $item, о которой вы говорите, это элемент этого массива, она тоже содержит массив с элементами title, href и is_last для последнего пункта. И в нем нет ничего, что могло бы вам помочь. Хотя, можно, конечно, написать кода пару десятков строк и получить, что нужно. Но это копец какой получится костыль))

Это предположение конечно же, на истину не претендую. Скорее всего всё не так вообще.

Вот один из вариантов костылей (будет работать только при определенных условиях: 1. это контроллер content, 2. теги h1 для категорий вводятся вручную и хранятся в бд):

  1.  
  2.  
  3. <?php $listed = array(); ?>
  4. <ul class="home">
  5. <?php if ($breadcrumbs) { ?>
  6.  
  7. <?php $controller = cmsCore::getInstance()->uri_controller; ?>
  8.  
  9. <?php foreach($breadcrumbs as $id=>$item){ ?>
  10.  
  11. <?php
  12.  
  13. if ($controller == 'content') {
  14.  
  15. $model = cmsCore::getModel('content');
  16. $hrefs = explode('/', $item['href']);
  17. $ctype = $hrefs[1];
  18.  
  19. foreach ($hrefs as $key => $href) {
  20.  
  21. if ($key == 0 || $key == 1) continue;
  22. $seo_h1 = $model->getItemByField('con_'.$ctype.'_cats', 'slug', $href)['seo_h1'];
  23.  
  24. }
  25.  
  26. }
  27.  
  28. ?>
  29.  
  30. <?php if (in_array($item['href'], $listed)){ continue; } ?>
  31. <li <?php if (!isset($item['is_last'])){ ?>itemscope itemtype="http://data-vocabulary.org/Breadcrumb"<?php } ?>>
  32. <?php if (!isset($item['is_last'])){ ?>
  33. <a title="<?php echo isset($seo_h1) ? $seo_h1 : html($item['title']); ?>" href="<?php html($item['href']); ?>" itemprop="url"><span itemprop="title"><?php html($item['title']); ?></span></a>
  34. <?php } else { ?>
  35. <span><?php html($item['title']); ?></span>
  36. <?php } ?>
  37. </li>
  38.  
  39. <?php if ($id < sizeof($breadcrumbs)-1){ ?>
  40. <li> ;<li>
  41. <?php } ?>
  42.  
  43. <?php $listed[] = $item['href']; ?>
  44. <?php } ?>
  45.  
  46. <?php } ?>
  47. </ul>
  48.  
  49.  
#3 30 марта 2021 в 12:58
Огромное спасибо! dance
Но работает почему только для второго уровня вложенности (третьего если считать главную страницу). Для ссылок следующих уровней вложенности не работает
#4 30 марта 2021 в 17:25
Ну вот так тогда можно попробовать:
  1. <?php $listed = array(); ?>
  2. <ul class="home">
  3. <?php if ($breadcrumbs) { ?>
  4.  
  5. <?php $controller = cmsCore::getInstance()->controller; ?>
  6.  
  7. <?php foreach($breadcrumbs as $id=>$item){ ?>
  8.  
  9. <?php
  10.  
  11. if ($controller == 'content') {
  12.  
  13. $model = cmsCore::getModel($controller);
  14. $hrefs = explode('/', $item['href']);
  15. $slugs = array();
  16. foreach ($hrefs as $key => $href) {
  17. if ($key == 0 || $key == 1) continue;
  18. $slugs[] = $href;
  19. }
  20. $slug = implode('/', $slugs);
  21. $seo_h1 = $model->getItemByField('con_'.$hrefs[1].'_cats', 'slug', $slug)['seo_h1'];
  22.  
  23.  
  24. }
  25.  
  26. ?>
  27.  
  28. <?php if (in_array($item['href'], $listed)){ continue; } ?>
  29. <li <?php if (!isset($item['is_last'])){ ?>itemscope itemtype="http://data-vocabulary.org/Breadcrumb"<?php } ?>>
  30. <?php if (!isset($item['is_last'])){ ?>
  31. <a title="<?php echo isset($seo_h1) ? $seo_h1 : html($item['title']); ?>" href="<?php html($item['href']); ?>" itemprop="url"><span itemprop="title"><?php html($item['title']); ?></span></a>
  32. <?php } else { ?>
  33. <span><?php html($item['title']); ?></span>
  34. <?php } ?>
  35. </li>
  36.  
  37. <?php if ($id < sizeof($breadcrumbs)-1){ ?>
  38. <li> ;<li>
  39. <?php } ?>
  40.  
  41. <?php $listed[] = $item['href']; ?>
  42. <?php } ?>
  43.  
  44. <?php } ?>
  45. </ul>
#5 30 марта 2021 в 19:16

Ну вот так тогда можно попробовать:

Нифигаccе о-го-гошеньки

Нифигаccе о-го-гошеньки, не подскажете попутно для чего эту пимпочку здесь воткнули? Явно ж поиск должна открыть. Жмякаю, а оно не ищет cry
Иллюстрация
#6 30 марта 2021 в 20:14

Явно ж поиск должна открыть

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

Урдате. Голоса в моей голове подсказывают, что это клюшка для тенниса, вот теперь вообще не знаю, кому верить. Нужны доказательства.
#7 31 марта 2021 в 12:03
Работает dance, огромное человеческое спасибо, тема закрыта
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.