Как вывести id категории на странице товара?

Тема в разделе "Общие вопросы", создана пользователем solunski.d, 6 фев 2016.

  1. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    А вы в каком кантроллере прописали и где вы находитесь, проверьте функцией var_dump($parts);
     
  2. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Спасибо, что не прокляли - :)
    Опишу более детально, конструкция (<? if ( $cat_id == 143 ) { ?>) работает если ввести номер ID = 143. Это ID категории (по адресу: имя-сайта/категория143/товар123.html).
    Все товары по умолчанию сложены в эту категорию.
    Но каждый товар также доступен по другим адресам в других категориях (пример адреса: по адресу: имя-сайта/категория143/подкатегория145/товар123.html или имя-сайта/категория143/подкатегория146/товар123.html или имя-сайта/категория143/подкатегория148/товар123.html). При этом полный страницы всегда разный в зависимости от пути.
    Если я введу цифру -143 (<? if ( $cat_id == 143 ) { ?>), то все работает! Но это корневая категория.
    Остальные цифры отличные от 143 (145, 146, 148 и т.д) - не работают.
    проще дать ссылку на один и тот же товар, но боюсь админ меня заблокирует.

    Изменения вводил в файле catalog/controller/product/product.php
    если ввожу var_dump($parts);
    то получаю ошибку:
    array(2) { [0]=> string(3) "143" [1]=> string(3) "145" }
     
  3. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Это не ошибка.
    Это функция показывает что храниться в массиве.
    Под индексом 0 храниться ID категории, под индексом 1 - подкатегория.
    Следовательно вы должны писать не 143, a 145
     
  4. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Если я вписываю цифру 145, то ничего не происходит.
    Работает только с цифрой 143.
    Как заставить смотреть на другие цифры?
     
  5. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Вам точно нужно искать исполнителя.
     
  6. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    понятно, а я думал что все возможно получить из контроллера
     
  7. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Все равно. огромное спасибо за помощь.
     
  8. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Не знаю как но у меня получилось, добавил в контроллер:
    PHP:
    if ( isset($parts[1]) ) {
                
    $this->data['cat_id1'] = $parts[1];
                }
               
                if ( isset(
    $parts[0]) ) {
                
    $this->data['cat_id0'] = $parts[0];
                }
               
                if ( isset(
    $parts[2]) ) {
                
    $this->data['cat_id2'] = $parts[2];
                }
    Добавил в TPL:
    PHP:
    <?php if ( $cat_id1 == 146 ) { ?>

    <?php echo $model?>-TTTT

    <?php ?>
    Правильно сделал?
     
  9. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Теперь в зависимости от того какой ID подкатегории я вывожу разную языковую фразу.
    Именно это я и пытался решить.
    ОЧЕНЬ БОЛЬШОЕ СПАСИБО!!!!
     
  10. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Все заработало, за исключением случая когда товар лежит в корне( имя-сайта/товар123.html)
    выскакивает ошибка: Notice: Undefined variable: cat_id0 in /hsphere/local/home/trunkcard/ipodshipnik.tk/catalog/view/theme/pav_styleshop/template/product/product.tpl on line 570
    как заставить ее применять мои условия, только когда мы находимся в каталоге?
     
  11. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Нужно делать проверку if
     
  12. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    так и делаю, вот:

    PHP:
    <?php if ($cat_id0) { ?>
                <?php if ( $cat_id1 == 144 ) { ?>
                <?php echo $text_cat144?>
            <?php ?>
            <?php if ( $cat_id1 == 145 ) { ?>
                <?php echo $text_cat145?>
            <?php ?>
            <?php if ( $cat_id1 == 146 ) { ?>
                <?php echo $text_cat146?>
            <?php ?>
                <?php if ( $cat_id1 == 147 ) { ?>
                <?php echo $text_cat147?>
            <?php ?>
                <?php if ( $cat_id1 == 148) { ?>
                <?php echo $text_cat1481?>
            <?php ?>
            <?php if ( $cat_id1 == 149 ) { ?>
                <?php echo $text_cat149?>
            <?php ?>
            <?php ?>
     
  13. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    как я понимаю, то переменную $cat_id0
    я прописал в пути:
    $
    PHP:
    $this->load->model('catalog/category');   

           if (isset(
    $this->request->get['path'])) {
               
    $path '';

               
    $parts explode('_', (string)$this->request->get['path']);
              
               if ( isset(
    $parts[0]) ) {
               
    $this->data['cat_id0'] = $parts[0];
               }
              
               if ( isset(
    $parts[1]) ) {
               
    $this->data['cat_id1'] = $parts[1];
               }
              
               if ( isset(
    $parts[2]) ) {
               
    $this->data['cat_id2'] = $parts[2];
               }
    А сейчас товар не находится в кателоге, поэтому система и не знает cat_id0
     
  14. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Говнокод :)
    Смотрите сюда это пример:
    PHP:
            if (isset($this->request->get['filter'])) {
                
    $filter $this->request->get['filter'];
            } else {
                
    $filter '';
            }
    Сделайте также в контроллере.
     
  15. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    я не сделаю, потому что не понимаю, что нужно делать
     
  16. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    В том и проблема, раз не понимаете либо изучаете либо ищите исполнителя.
    PHP:
    if ( isset($parts[0]) ) {
        
    $this->data['cat_id0'] = $parts[0];
    } else {
        
    $this->data['cat_id0'] = '';
    }
     
  17. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    я понимаю, что написано, если есть cat_id0, то приравниваем ее $parts[0] если нет, то не используем.
    Но все это написано для каталога $this->load->model('catalog/category');
    а я сейчас в корне без каталога вот она и ругается, что не знает переменную cat_id0
     
  18. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    В шаблоне переменная есть, но поступает она из контроллера, значит если переменная не объявлена,она будет равна пустой строке,
    в итоге: в шаблоне не будет выполняется условие.
     
  19. VladComplus

    VladComplus Новичок

    Сообщения:
    20
    Симпатии:
    0
    Я уже понял, добавил ваш код в чуть выше:
    PHP:
    $this->language->load('product/product');
            if ( isset(
    $parts[0]) ) {
        
    $this->data['cat_id0'] = $parts[0];
    } else {
        
    $this->data['cat_id0'] = '';
    }
    Все заработало