Как вывести ссылку на подкатегорию?

Тема в разделе "Общие вопросы", создана пользователем and-rey, 23 июл 2015.

  1. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    Доброго времени!

    Собственно проблема/вопрос:

    Необходимо вывести ссылку в карточке товара, ведущую на подкатегорию, из которой этот товар.
    Т.е. чтобы понятнее, о чём речь, вот на примере ссылок "хлебных крошек" (выделено жирным то, что нужно вытащить, а остальное не нужно показывать!) :

    Главная | Категория | Подкатегория1 | Подкатегория2 | Товар
     
    Последнее редактирование: 23 июл 2015
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    Вам именно то что в хлебных крошках или именно принадлежность из базы??

    Из хлебных проще....
     
  3. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    Нет ,я на примере хлебных крошек показал, какую ссылку вытащить хочу, но может и не удачно. Просто ковырял вчера эти файлы, и не получилось.

    Нужна в карточке товара кнопка/ссылка, называемая "Показать еще товары этой подкатегории..." или "Другие товары телевизоров Sony...". Но при клике по ней идёт переход не на страницу главной категории, а на подкатегорию(дочернюю). Например главная категория Sony, а в ней подкатегория с товарами Телевизоры, или телефоны - сюда и хочу попасть из карточки товара, чтобы не лезть в главное меню, которое думаю у всех громоздкое и перегруженное пунктами

    п.с. выход на производителя прост:

    <?php if ($manufacturer) { ?>
    <a href="<?php echo $manufacturers; ?>"><?php echo $manufacturer;?></a>
    <?php } ?>

    а вот получить ссылку подкатегории - чего-то забуксовал весь.
     
    Последнее редактирование: 23 июл 2015
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    в контролере \catalog\controller\product\product.php

    после
    PHP:
    $data['points'] = $product_info['points'];
    добавим
    PHP:
                if (isset($category_id)) {
                    
    $ycat $this->model_catalog_category->getCategory($category_id);
                    
    $data['ycat_name'] = $ycat['name'];
                    
    $data['ycat_href'] = $this->url->link('product/category''path=' $category_id);
                }
    ну и потом в шаблоне выводим переменные как $ycat_name и $ycat_href
     
    krolSS, Slait и and-rey нравится это.
  5. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    извиняюсь, немного застрял там у себя: перепутал файлы рабочего сайта и "ремонтного для правок"., потoм всё вернул как надо и...
    как бы желаемого эффекта еще не достиг. Ссылка генерируется, но с переходом на главную страницу вообще.

    сам вывод в файле product.tpl -

    <div >Другие товары раздела: <a href="<?php echo $ycat_href; ?>"><?php echo $ycat_name; ?>&nbsp;→</a></div>

    п.с. и еще, мне кажется всё-таки надо вводить "array", "foreach" и наличие переменных child или subcategory, $category_info в этом месте product.php, куда после $this->data['points'] = $product_info['points']; выше указанный код после добавлен

    иначе всё одно этот путь $this->url->link('product/category', 'path=' . $category_id); вытащит главную категорию
     
    Последнее редактирование: 23 июл 2015
  6. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    используйте тег code, а то все сливается

    Значит вы все намудрили раньше. По умолчанию в $category_id содержится последний элемент категории, которая формирует хлебными крошками.

    имя правильно выводится?

    ну ведь есть проверка..
    PHP:
    if (isset($category_id)) {
     
  7. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    Возможно, что и понаперепутал сегодня файлы, ну или остатки со вчера может где-то имеются в этом product.php - посмотрю.
    отпишусь позже.

    а у вас получилось вывести ссылку на подкатегорию, не на главную категорию?
     
    Последнее редактирование: 23 июл 2015
  8. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    конечно.
     
  9. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    ну то что у вас выводит- это ок, значит верное решение вы предложили, благодарю.

    а в моём проекте нужно еще поковыряться, так как сами переменные не приходят в product.tpl вообще. поставил проверку через if, и тогда блок с ссылкой не отображается.
    PHP:
    <?php if ($ycat_name || $ycat_href) { ?><div style="">Другие товары раздела:
    <a href="<?php echo  $ycat_href?>"><?php echo  $ycat_name?>&nbsp;→</a></div><?php ?>
    Ну и если без условия , то просто выводит пустой <a href=""> и стрелку →
    :cool:
     
    Последнее редактирование: 23 июл 2015
  10. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    надеюсь у вас версия опенкарта 2х ??
    Просто странно. Как минимум что то должно вывестись.
    Попробуйте для теста вручную category_id задать.
    Или може у вас в модификаторе закешировался контролер??
     
  11. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    =)) виноват, не озвучил изначально версию ОС. Я правки делаю на ocStore 1.5.5.2
    Хотя.. разве там существенно эти файлы "product.php" переписали, под новую 2.0.3 ?

    п.с. где кешируются контроллеры, в какой папке? чистил всё - ..system/cashe и vqcache
     
    Последнее редактирование: 23 июл 2015
  12. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    ну так надо было и писать Тут форум в основном про 2х

    В 1.5 как минимум надо писать $this->data вместо $data
     
    and-rey нравится это.
  13. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    да уж.. что-то явно я просмотрел этот момент. Переписал как надо в этом product.php ивсё заработало.)

    но пол часа назад так и подумал, что ничего не выйдет на подкатегорию, если даже разберусь позже. Там на проекте стоит упрощённое отображение ссылок товара, с пропуском цепочек категорий в таком виде:

    http://shop.com/главная_категория/товар

    вместо

    http://shop.com/главная_категория/подкатегория1/подкатегория2/товар

    И когда заработала реализация на ваших рекомендациях, которые там выше ранее изложены, то получаю ссылку на главную_категорию ...из карточки товара(
     
    Последнее редактирование: 23 июл 2015
  14. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    так и должно быть. Ведь данные берутся с хлебных крошек.
     
  15. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    как же выхватить из цепочек вложенности категорий, значение нужной подкатегории, чтобы не из хлебных крошек ,которые вверху карточки товара? (и вообще каким они тут боком) .Там видать модуль SEO-url такое деалет, согласно своим настройкам ранее.

    Если без него, то урл товара с подкатегориями видать такой будет -
    http://shop.com/index.php?route=product/product&path=9&category_id=7&product_id=55
     
    Последнее редактирование: 23 июл 2015
  16. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    тут процесс не простой.
    Вариант решения, это установить что то, что формирует урль без прямой ссылки на товар.
    Как вариант использовать сеопро или http://shop.opencart-russia.ru/ocseo-plus
     
  17. and-rey

    and-rey Новичок

    Сообщения:
    16
    Симпатии:
    6
    там мне на другом форуме давали другую реализацию, и ничего не понял почему ссылка получалась сразу на главную_категорию... решил спросить здесь, но... ))
    а теперь действительно проблема на лицо: в карточке товара, и её урл.. хлебные крошки - не содержат цепочки подкатегорий, и любые варианты решений - уводят на родительскую категорию.

    кстати, кому интересно, вот та самая реализация с правкой-дополнением только в файле "product.tpl"
    PHP:
    //ставим в любом нужном  месте код и блок "div"
    <?php
    $real_url 
    $_SERVER['REQUEST_URI'];     //получаем адрес текущей страницы
    $cut_url rtrimdirname$real_url ), "/" )."/";  //отрезаем текущий товар и получаем адрес директории
    ?>
    <div class="box">
    <a class="button"  href="<?php echo $cut_url?>">&nbsp;Перейти в раздел&nbsp;</a>
    </div>
     
    Последнее редактирование: 23 июл 2015
  18. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    какая то она неправильная из разряда фетиша.
    А если у меня путь к товару строится без ЧПУ, все конец вашему варианту )))
     
  19. mosrodik

    mosrodik Новичок

    Сообщения:
    3
    Симпатии:
    1
    Ravilr, а Вы не подскажете, как вывести ссылку на главную категорию товара в карточке? Т.е. в примере ТС это будет "Категория".

    Нашел несколько вариантов вывода "Подкатегорий", а вот главной нет.
     
  20. Ravilr

    Ravilr Специалист

    Сообщения:
    3.969
    Симпатии:
    1.083
    Возьмите первый элемент из крошек и будет вам первая категория