Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


magere

Recommended Posts

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

 

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

 

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'а.

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 - возможно там что-то будет

Змінено користувачем Гість
Надіслати
Поділитися на інших сайтах

В общем посмотрел стандартный шаблон и контроллер - там нет переменной $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 - возможно там что-то будет

 

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.