Перейти к содержанию
magere

"Undefined variable: currency " как победить?

Рекомендуемые сообщения

Приветствую всех. 

 

С недавнего времени стал изучать данный движок. Сделал даже рабочий магазин на его основе. Но вот незадача - сунулся в "Журнал ошибок", увидел просто нереальное количество ошибок вида:

 

2015-08-31 16:44:21 - PHP Notice:  Undefined variable: currency in /home/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_category.tpl on line 375
2015-08-31 16:44:21 - PHP Notice:  Undefined variable: currency in /home/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_category.tpl on line 376
2015-08-31 16:44:21 - PHP Notice:  Undefined variable: currency in /home/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_category.tpl on line 377
2015-08-31 16:44:21 - PHP Notice:  Undefined variable: currency in /home/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_category.tpl on line 378
2015-08-31 16:44:21 - PHP Notice:  Undefined variable: currency in /home/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_category.tpl on line 379

 
как это победить?
 
в данном файле шаблона находятся строки:
 

<?php if (in_array($cat_id, $cat_array)) { ?>
<script type="text/javascript">
hideblocks();
function price_format(n){
c = <?php echo (empty($currency['decimals']) ? "0" : $currency['decimals'] ); ?>;
d = '<?php echo $currency['decimal_point']; ?>';
t = '<?php echo $currency['thousand_point']; ?>';
s_left = '<?php echo $currency['symbol_left']; ?>';
s_right = '<?php echo $currency['symbol_right']; ?>';
n = n * <?php echo $currency['value']; ?>;
i = parseInt(n = Math.abs(n).toFixed©) + ''; 
j = ((j = i.length) > 3) ? j % 3 : 0; 
return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed©.slice(2) : '') + s_right; 
}
</script>

 

Я так понимаю, что ошибка эта связана с неопределенной переменной, но вот где ее определить - не понимаю. Помогите пожалуйста...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Валюты в админке редактировали? Для начала попробуйте сбросить кэш у vqmod'а.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Валюты в админке редактировали? Для начала попробуйте сбросить кэш у vqmod'а.

1. Кеш сбросил - ошибки появляются;

2. Валюту редактировал - удалил все, оставил только рубль;

 

Ошибка появляется при входе в определенное место на сайте, а именно при входе в основную (главную категорию). Строк в логе всегда появляется 5. Вошел - 5 строк ошибок, обновил страницу - еще 5.

 

Как-то так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потому что в коде переменная $currency встречается 5 раз. Ее по сути нет, вот он и ругается что наткнулся на неизвестную переменную. Проверьте какая валюта стоит по-умолчанию в настройках. Удалите кэш в system/cache. До удаления других валют все нормально было?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Потому что в коде переменная $currency встречается 5 раз. Ее по сути нет, вот он и ругается что наткнулся на неизвестную переменную. Проверьте какая валюта стоит по-умолчанию в настройках. Удалите кэш в system/cache. До удаления других валют все нормально было?

 

1. по умолчанию стоит рубль. 

2. кэш очистил - те же ошибки. 

3. До удаления, к сожалению, никто в логи не смотрел. =(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем посмотрел стандартный шаблон и контроллер - там нет переменной $currency. Либо какой-то модуль стоит либо шаблон либо vqmod не добавляет строки в catalog\controller\product\category.php
В общем есть 2 варианта.
1) Если все работает нормально, но мешает только то что в логах ошибки - то просто сотрите кусок кода:
 

<?php if (in_array($cat_id, $cat_array)) { ?>
<script type="text/javascript">
hideblocks();
function price_format(n){
c = <?php echo (empty($currency['decimals']) ? "0" : $currency['decimals'] ); ?>;
d = '<?php echo $currency['decimal_point']; ?>';
t = '<?php echo $currency['thousand_point']; ?>';
s_left = '<?php echo $currency['symbol_left']; ?>';
s_right = '<?php echo $currency['symbol_right']; ?>';
n = n * <?php echo $currency['value']; ?>;
i = parseInt(n = Math.abs(n).toFixed©) + ''; 
j = ((j = i.length) > 3) ? j % 3 : 0; 
return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed©.slice(2) : '') + s_right; 
}
</script>

Но обратите внимание - код начинается с 
 

<?php if

Значит надо удалить вместе с 
 

<?php } ?>

или 
 

<?php endif; ?>

иначе будет ошибка. Если поблизости за </script> нет ничего такого, то режьте от <script> до </script> включительно
 

2) Если хотите чтобы этот скрипт работал, (судя по скрипту, он делит цену на десятки, сотни и т.д.) то проверьте папку vqmod/logs - возможно там что-то будет

Изменено пользователем Dragon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем посмотрел стандартный шаблон и контроллер - там нет переменной $currency. Либо какой-то модуль стоит либо шаблон либо vqmod не добавляет строки в catalog\controller\product\category.php
В общем есть 2 варианта.
1) Если все работает нормально, но мешает только то что в логах ошибки - то просто сотрите кусок кода:
 

<?php if (in_array($cat_id, $cat_array)) { ?>
<script type="text/javascript">
hideblocks();
function price_format(n){
c = <?php echo (empty($currency['decimals']) ? "0" : $currency['decimals'] ); ?>;
d = '<?php echo $currency['decimal_point']; ?>';
t = '<?php echo $currency['thousand_point']; ?>';
s_left = '<?php echo $currency['symbol_left']; ?>';
s_right = '<?php echo $currency['symbol_right']; ?>';
n = n * <?php echo $currency['value']; ?>;
i = parseInt(n = Math.abs(n).toFixed©) + ''; 
j = ((j = i.length) > 3) ? j % 3 : 0; 
return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed©.slice(2) : '') + s_right; 
}
</script>

Но обратите внимание - код начинается с 
 

<?php if

Значит надо удалить вместе с 
 

<?php } ?>

или 
 

<?php endif; ?>

иначе будет ошибка. Если поблизости за </script> нет ничего такого, то режьте от <script> до </script> включительно
 

2) Если хотите чтобы этот скрипт работал, (судя по скрипту, он делит цену на десятки, сотни и т.д.) то проверьте папку vqmod/logs - возможно там что-то будет

 

Спасибо большой. Вырезал кусок кода, все работает без ошибок. Посмотрим на изменения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От shayko
      300.00 руб
      Скачать/Купить дополнение


      autocurrency-oc3.ocmod.zip
      Модуль автоматической смены валюты в зависимости от того с какой страны посетитель
      1) Страна  <-----> Валюта настраивается в настройках модуля
      2)модуль использует geoip для определения страны
      3)если пользователь зашел из страны не определенной в настройках устанавливаеться валюта по умолчанию)
      4)разрешить запретить пользователю менять валюту
      autocurrency-oc3.ocmod.zip
      Добавил shayko Добавлено 06.08.2018 Категория Модули Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 3.0 ocStore Несовместим OpenCart.Pro, ocShop  
    • От shayko
      Модуль автоматической смены валюты в зависимости от того с какой страны посетитель
      1) Страна  <-----> Валюта настраивается в настройках модуля
      2)модуль использует geoip для определения страны
      3)если пользователь зашел из страны не определенной в настройках устанавливаеться валюта по умолчанию)
      4)разрешить запретить пользователю менять валюту
      autocurrency-oc3.ocmod.zip
    • От internet694
      В файлах перевода поменял и получилось как надо, но при добавлении товаврв, всеравно по старому. Я так понимаю что все в common.js написано. Кто знает где менять чтоб скрыть надпись цены  и слово "товары" на кнопке корзины.
    • От Alexandr86
      Ребят подскажите пожалуйста, столкнулся с такой проблемой загружаю несколько изображений в карточку товара, а мне пишет потом такую ошибку notice undefined index small in в карточке товара и фотки криво висят, фотку прикрепил к сообщению, как это исправить не пойму. опенкарт 1.5.6.1

    • От dannychirkov
      Добрый вечер, форумчане. 
       
      Использую бесплатный шаблон от templatemonster, после установки Модуля "Обновление цены при выборе опции, без AJAX (vqmod)" на шапке сайта стали лезть вот такие ошибки:
      Notice: Undefined variable: cart in /home/zaovgqav/public_html/catalog/view/theme/theme574/template/common/header.tpl on line 140 Notice: Undefined variable: search in/home/zaovgqav/public_html/catalog/view/theme/theme574/template/common/header.tpl on line 163 Notice: Undefined variable: categories_tm in /home/zaovgqav/public_html/catalog/view/theme/theme574/template/common/header.tpl on line 188 В этих строках:
      140 - <?php echo $cart; ?> 163 - <?php echo $search; ?> 188 - <?php if ($categories_tm) {  echo $categories_tm; } ?> Как это исправить? В гугл ходил, там инфы по этому поводу не много(
       
       
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.