BreadCrumbs как не выводить имя товара?

В данной категории, пользователи задают вопросы относительно установки и эксплуатации MOGUTA.CMS
Ответить
Аватара пользователя
Katherine
lvl 2
Сообщения: 13
Зарегистрирован: 17 май 2018, 13:56

BreadCrumbs как не выводить имя товара?

Сообщение Katherine » 05 авг 2019, 19:50

display block last child не пойдет так как в разных категориях разное число списка

Изображение

Код: Выделить всё

<?php

/*
  Plugin Name: Хлебные крошки
  Description: Выводит навигационную цепочку в каталоге товаров. Для вывода в файлах темы views/catalog.php и views/product.php необходимо вставить шорт код [brcr]
  Author: Дмитрий Гринчевский, Авдеев Марк
  Version: 2.1
 */
new BreadCrumbs;

class BreadCrumbs {

  public function __construct() {
    mgAddShortcode('brcr', array(__CLASS__, 'breadcrumbs'));
  }

  static function breadcrumbs() {
    $breadcrumbs = Storage::get(md5('breadcrumbs'.URL::getUrl()));
    if ($breadcrumbs == null) {
      $sections = URL::getSections();
      array_splice($sections, 0, 1);
      $breadcrumbs = '<a href="'.SITE.'/catalog">Каталог</a>';
      $max = count($sections);
      $i = 0;
      $par = '';
      foreach ($sections as $section) {
        $url = $section;
        $cat = 'title';

        $data = self::checkURLname('*', 'category', $section, 'url', $par);

        $url = $data[0]['parent_url'].$section;
        $res = $data[0]['title'];
        $par = $data[0]['id'];

        if (!$data[0]['title']) {
          $cat = 'name';
          $n = '';
          $result = self::checkURLname('*', 'product', $section, 'url', $n);
          $url = $data[0]['parent_url'].$sections[1].'/'.$sections[2];
          $categoryRes = self::checkURLname('url', 'category', $result[0]['cat_id'], 'id');
          $categoryRes1 = self::checkURLname('parent_url', 'category', $result[0]['cat_id'], 'id');
          $url = $categoryRes1[0]['parent_url'].$categoryRes[0]['url'].'/'.$result[0]['url'];
          $res = $result[0]['title'];
        }

        $i++;
        if ($max == $i) {
          $breadcrumbs .= ' » <span class="last-crumb">'.$res.'</span>';
        } else {
          $breadcrumbs .= ' » <a href="'.SITE.'/'.$url.'">'.$res.'</a>';
        }
      }
      $breadcrumbs = "<div class='bread-crumbs'>".$breadcrumbs."</div>";
      //сохраняем объект в кэш
      Storage::save(md5('breadcrumbs'.URL::getUrl()), $breadcrumbs);
    }
    return $breadcrumbs;
  }

  /**
   * Метод работает с БД, получая значение по передаваемым параметрам.
   *
   * @param string $col что.
   * @param string $table от куда.
   * @param string $name условие соответствие.
   * @return array массив с результатом.
   */
  static function checkURLname($col, $table, $name, $where1, $parent_id = '') {
    if ($parent_id) {
      $where2 = 'parent';
      $sql = 'SELECT %s FROM '.PREFIX.'%s   WHERE %s="%s"  AND %s="%s"';
      $result = DB::query($sql, $col, $table, $where1, $name, $where2, $parent_id);
    } else {
      $sql = 'SELECT %s FROM '.PREFIX.'%s   WHERE %s="%s "  ';
      $result = DB::query($sql, $col, $table, $where1, $name);
    }
    while ($row = DB::fetchArray($result)) {
      $categories[] = $row;
    }
    if ($result) {
      return $categories;
    }
  }

}
Аватара пользователя
OrlovOleg
lvl 4
Сообщения: 37
Зарегистрирован: 04 июн 2019, 16:51

Re: BreadCrumbs как не выводить имя товара?

Сообщение OrlovOleg » 06 авг 2019, 17:05

Попробуйте так:
найдите следующую часть кода:

Код: Выделить всё

$i++;
        if ($max == $i) {
          $breadcrumbs .= ' » <span class="last-crumb">'.$res.'</span>';
        } else {
          $breadcrumbs .= ' » <a href="'.SITE.'/'.$url.'">'.$res.'</a>';
        }
и замените ее на этот код:

Код: Выделить всё

$i++;
        if ($max == $i) {
          $breadcrumbs .= ' ';
        } else {
          $breadcrumbs .= ' » <a href="'.SITE.'/'.$url.'">'.$res.'</a>';
        }
Аватара пользователя
Katherine
lvl 2
Сообщения: 13
Зарегистрирован: 17 май 2018, 13:56

Re: BreadCrumbs как не выводить имя товара?

Сообщение Katherine » 07 авг 2019, 20:33

спасибо но эффект такой же как от .last-crumb {display none;}

тут именно нужен подход с исключением ссылки товара

/mg-plugins/breadcrumbs/index.php
Ответить