Вверх

Блог
RSS лента

Решаем ошибку Virtuemart: TCPDF ERROR: [Image] Unable to get the size of the image:

Vape Shop Эко Заправка

Столкнулся с чудной ошибкой в Virtuemart 3, при изменении статуса заказа на подтвержден, а так же если хочешь просмотреть счет, то получаешь вместо pdf такую ошибку «TCPDF ERROR: [Image] Unable to get the size of the image:http://домен_сайта/images/storie...mart/shipment/ ». Собственно в ошибке говорится что «TCPDF» плагин отвечающий за формирование пдф счетов, не может узнать размер какого-то изображения. Если дальше капнуть, то выясняется что это изображение связано с видом оплаты. Идем дальше и выясняется, что это логотип способа оплаты или доставки. На одном из заморских форумах советуют добавить или наоборот удалить логотип в способе доставки и оплаты, к сожалению я не нашел где это можно сделать. Да и в моем случае мне он там сильно и не нужен, но всё же это не решение проблемы, а обход.

Решение не такое уж и сложное что бы его не применить, всего-то нужно добавить условие на проверку существования логотипа. Так как проверку, почему то разработчики не сделали, то следующая функция пытается узнать размер логотипа (которого просто не существует) что бы его в определенном размере добавить в пдф, но ничего найти не может и весь скрипт виснет.

Я же предлагаю убрать эту небольшую оплошность разработчиков. Нам понадобится файл «vmpsplugin.php», он находится по адресу «/administrator/components/com_virtuemart/plugins/». Открываем этот файл для редактирования любым удобным для вас текстовым редактором или «Dreamweaver». Находим строки:

  1. foreach ( $logo_list as $logo ) {
  2. $alt_text = substr ( $logo , 0 , strpos ( $logo , '.' ));
  3. $img .= '<span class="vmCartPaymentLogo" ><img align="middle" src="' . $url . $logo . '" alt="' . $alt_text . '" /></span> ' ;
  4. }

заменяем на:

  1. foreach ( $logo_list as $logo ) {
  2. if(!empty( $logo )){
  3. $alt_text = substr ( $logo , 0 , strpos ( $logo , '.' ));
  4. $img .= '<span class="vmCartPaymentLogo" ><img align="middle" src="' . $url . $logo . '" alt="' . $alt_text . '" /></span> ' ;
  5. }
  6. }

Или добавляем после начала цикла:

foreach ( $logo_list as $logo ) {  

Условие проверки на существования логотипа, хотя правильней проверка на заполненость этой переменной, но не суть важно, свою роль это условие выполняет правильно.

if(!empty( $logo )){

И самое главное не забудьте добавить закрытие сравнения перед закрытием цикла, то есть «}». Хотя можно и после, не критично.

Если у вас полностью совпадает код с моим, то можете смело копировать и заменять. Если же чем то отличается, то советую вставить условие отдельно.

Так же у вас должен быть установлен компонент «com_tcpdf» иначе я так думаю все, что я написал выше, вам не поможет.

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

Ваша оценка: Пусто Средняя: 5 (2 голосов)
Главная | Портфолио | Услуги | Контакты | Блог