[Решено] ошибка "не найден индекс quantity и stock" в описании товаров

Тема в разделе "OpenCart", создана пользователем katrinok_k, 5 авг 2015.

Статус темы:
Закрыта.
  1. katrinok_k

    katrinok_k

    Регистрация:
    31 мар 2015
    Сообщения:
    63
    Симпатии:
    2
    Некоторое время не заходила на сайт, а сегодня зайдя в категорию товары обнаружила во всех товарах (пока их только 6) выдает такую вот ошибку
    по содержанию ошибки поняла что ему не найден индекс quantity и stock в catalog/view/theme/space-cart/template/product/category.tpl
    но что с ним делать
    строки 95-98
    Код:
    <?php
            if ($product['quantity']>0) echo "<input type='button' value='$button_cart' onclick='addToCart($product[product_id]);' class='button' />";
            else echo "<span style='color:red; font-weight:bold;'>$product[stock]</span><a href='index.php?route=information/contact&enquiry=", urlencode("$product[name] ($product[model])".PHP_EOL), "' target='_blank' class='button' style='color:yellow;'>Inquire Now</a>";
            ?>
    к тому же еще и кнопка купить почему-то на всех языках стала англоязычная и надпись на ней желтого цвета, уж это-то я точно не меняла
    З.Ы. сегодня в футер добавила только яндекс-метрику
    Код:
    <!-- Yandex.Metrika informer -->
    
    <a href="https://metrika.yandex.ua/stat/?id=29591170&amp;from=informer"
    
    target="_blank" rel="nofollow"><img
    src="https://mc.yandex.ru/informer/29591170/3_1_FFFFFFFF_EFEFEFFF_0_pageview
    s"
    
    style="width:88px; height:31px; border:0;" alt="Яндекс.Метрика"
    title="Яндекс.Метрика: данные за сегодня (просмотры, визиты и уникальные
    посетители)"
    onclick="try{Ya.Metrika.informer({i:this,id:29591170,lang:'ru'});return
    false}catch(e){}" /></a>
    
    <!-- /Yandex.Metrika informer -->
    
    
    <!-- Yandex.Metrika counter -->
    
    <script type="text/javascript">
    
        (function (d, w, c) {
    
            (w[c] = w[c] || []).push(function() {
    
                try {
    
                    w.yaCounter29591170 = new Ya.Metrika({
    
                        id:29591170,
    
                        clickmap:true,
    
                        trackLinks:true,
    
                        accurateTrackBounce:true,
    
                        webvisor:true
    
                    });
    
                } catch(e) { }
    
            });
    
    
            var n = d.getElementsByTagName("script")[0],
    
                s = d.createElement("script"),
    
                f = function () { n.parentNode.insertBefore(s, n); };
    
            s.type = "text/javascript";
    
            s.async = true;
    
            s.src = "https://mc.yandex.ru/metrika/watch.js";
    
    
            if (w.opera == "[object Opera]") {
    
                d.addEventListener("DOMContentLoaded", f, false);
    
            } else { f(); }
    
        })(document, window, "yandex_metrika_callbacks");
    
    </script>
    
    <noscript><div><img src="https://mc.yandex.ru/watch/29591170"
    style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    
    <!-- /Yandex.Metrika counter -->
     
  2. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.044
    Симпатии:
    775
    Чтоб внезапно на сайте не возникали никакие ошибки, не используйте vQmod :Smile:

    Вы не тот файл смотрите. В ошибке говориться про этот файл в кеше vQmod, так что смотреть нужно его, а не оригинал. Но смотреть нужно контроллер, а не шаблон - этот массив, в котором не хватает индексов, формируется в /catalog/controller/product/category.php (только, опять же, смотрите этот файл в кеше vQmod).
    А ещё посмотрите журнал ошибок vQmod.

    P.S. Вы раздел перепутали, это нужно было в OpenCart, а не Open Source.
     
  3. katrinok_k

    katrinok_k

    Регистрация:
    31 мар 2015
    Сообщения:
    63
    Симпатии:
    2
    в кэше vQmod в строкаах 95-98 вот что
    Код:
    <?php
            if ($product['quantity']>0) echo "<input type='button' value='$button_cart' onclick='addToCart($product[product_id]);' class='button' />";
            else echo "<span style='color:red; font-weight:bold;'>$product[stock]</span><a href='index.php?route=information/contact&enquiry=", urlencode("$product[name] ($product[model])".PHP_EOL), "' target='_blank' class='button' style='color:yellow;'>Inquire Now</a>";
            ?>
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.044
    Симпатии:
    775
    Как я уже написал выше, смотрите контроллер, а не шаблон. Этот массив формируется в контроллере и проблема возникает именно там. Ошибка генерируется в шаблоне только потому, что там происходит обращение к несуществующему элементу массива. Почему он не существует можно понять только по коду контроллера category.php.
     
  5. katrinok_k

    katrinok_k

    Регистрация:
    31 мар 2015
    Сообщения:
    63
    Симпатии:
    2
    угу, понять бы еще куда делся этот массив, ошибку стало выдавать не так давно, до этого все работало нормально и почему стала выводится кнопка покупки одинаково да еще и текст на ней желтый на всех языках, в чем прикол
    http://joxi.ru/8An5y0RcpkL82O
    в каком месте смотреть в контроллере этот не существующий массив
    если text_quantity там еще присутствует , то вот stock вообще не вижу там
     
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.044
    Симпатии:
    775
    vQmod же. Его задача внезапно портить код :Smile:

    Вы ставили какие-то модули, которые должны выводить что-то дополнительное в свойствах товара (например. выводить опции в категорию или атрибуты)?

    Для начала почистите кеш vQmod. Если не поможет, отключайте по очереди все vQmod модули, пока проблема не исчезнет. Если проблема и без модулей не исчезнет, смотрите оригинальный category.php - возможно, какой-то модуль его заменил своей версией.
     
  7. katrinok_k

    katrinok_k

    Регистрация:
    31 мар 2015
    Сообщения:
    63
    Симпатии:
    2
    не помогает, в последнее время не было установлено ни одного нового модуля, только яндекс-метрика в футере
     
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.044
    Симпатии:
    775
    Тогда выложите сюда оригинальный category.php.
     
  9. katrinok_k

    katrinok_k

    Регистрация:
    31 мар 2015
    Сообщения:
    63
    Симпатии:
    2
    есть файл который заливался на сервер при переносе сайта с копма, но тогда вроде бы вылазит что ему не хватает "sku"
    поиском в файлах нашла Inquire Now отображающееся на кнопке и не понятно откуда вылезшее, все это добро и $product[stock] в том числе нашлось в отключенном vqmod sold_out-v0.3.4.xml
    с какого перепугу оно всплыло?
     
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.044
    Симпатии:
    775
    Если это оригинальный файл, то он не оригинальный :Smile:
    Но проблема не в этом. Глянул на гитхабе оригинальный файл, там этих полей и не должно быть. Я их сам добавлял, потому и забыл.

    Добавьте перед
    PHP:
    $this->data['products'][] = array(
    это:
    PHP:
    if ($result['quantity'] <= 0) {
        
    $stock $result['stock_status'] ? $result['stock_status'] : $this->language->get('text_outstock') ;              
    } else {
        
    $stock $this->language->get('text_instock');
    }
    А в сам массив $this->data['products'] это:
    PHP:
    'quantity'    => $result['quantity'],
    'stock'       => $stock,
     
  11. katrinok_k

    katrinok_k

    Регистрация:
    31 мар 2015
    Сообщения:
    63
    Симпатии:
    2
    спасибо большое, в очередной раз спасли меня :Yahoo::Clapping:
     
Статус темы:
Закрыта.