Мне нужно, чтобы опции при отсутствии товара на складе все равно показывались, но либо были перечеркнуты или затемнены, без возможности выбора данной опции Шаблон не стандартный, верстался много раз и опции были значительно изменены (вырезан показ количества и цены), но вместо этого сделан автоматический пересчет стоимости. Одним словом значительно отличается от стандартной опции и внешне и в файлах loress.ru/dlya-muzhchin/elektroimpulsnaya-usb-zazhigalka-tiger Попробовала установить модуль Option Out of stock v15x., но к сожалению показ скрытых опций выводит вот в таком виде, как в скрине: https://yadi.sk/i/XBRWh1uq3E9gxr Заранее благодарю за помощь!
Попробуйте внести правки из модификаторов этого модуля вручную, увидите, в чём проблема и сможете поправить код. Похоже, там просто неправильно ссылка на изображение формируется.
Модуль не очень большой, но я мало смыслю.. PHP: <?xml version="1.0" encoding="UTF-8"?><modification> <id>Вывод количества на складе для опций</id> <version>1.0.5</version> <vqmver>2.2.1</vqmver> <author>mpn2005</author> <file name="catalog/view/theme/*/template/product/product.tpl"> <operation> <search position="before"><![CDATA[<?php if ($option_value['price']) { ?>]]></search> <add> <![CDATA[ <?php if ($option_value['subtract']) { if ($option_value['quantity'] > 0) echo '<span class="option_quantity"> - '.$option_value['quantity'].' '.$text_pcs.'. </span>'; else echo '<span class="option_quantity option_no_stock"> - '.$text_out_of_stock.'. </span>'; } ?> ]]> </add> </operation> <operation> <search position="replace"><![CDATA[value="<?php echo $option_value['product_option_value_id']; ?>"]]></search> <add><![CDATA[value="<?php echo $option_value['product_option_value_id']; ?>" <?php echo (($option_value['subtract'] && !$option_value['quantity']) ? 'disabled="disabled"' : ''); ?>]]></add> </operation> </file> <file name="catalog/language/english/product/product.php"> <operation error="skip"> <search position="after"><![CDATA[<?php]]></search> <add> <![CDATA[ $_['text_pcs'] = 'pcs'; $_['text_out_of_stock'] = 'out of stock'; ]]> </add> </operation> </file> <file name="catalog/language/russian/product/product.php"> <operation error="skip"> <search position="after"><![CDATA[<?php]]></search> <add> <![CDATA[ $_['text_pcs'] = 'шт'; $_['text_out_of_stock'] = 'нет на складе'; ]]> </add> </operation> </file> <file name="catalog/language/ukrainian/product/product.php"> <operation error="skip"> <search position="after"><![CDATA[<?php]]></search> <add> <![CDATA[ $_['text_pcs'] = 'шт'; $_['text_out_of_stock'] = 'нема на складі'; ]]> </add> </operation> </file> <file name="catalog/controller/product/product.php"> <operation> <search position="before"><![CDATA[$this->data['text_select']]]></search> <add> <![CDATA[ $this->data['text_pcs'] = $this->language->get('text_pcs'); $this->data['text_out_of_stock'] = $this->language->get('text_out_of_stock'); ]]> </add> </operation> <operation> <search position="after"><![CDATA[$option_value_data[] = array(]]></search> <add> <![CDATA[ 'subtract' => $option_value['subtract'], 'quantity' => $option_value['quantity'], ]]> </add> </operation> <operation> <search position="replace"><![CDATA[if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {]]></search> <add><![CDATA[if (true) {]]></add> </operation> </file> </modification>
Модуль изображения вообще не формирует, они должны были бы выводиться стандартным способом. Включите модуль, а затем скопируйте сюда код из product.tpl и product.php, которые в кеше vQmod. И научитесь пользоваться кнопкой вставки кода!
vq2-catalog_language_russian_product_product.php <?php // Text $_['text_search'] = 'Поиск'; $_['text_brand'] = 'Бренд'; $_['text_manufacturer'] = 'Производитель:'; $_['text_model'] = 'МОДЕЛЬ:'; $_['text_ean'] = 'ДОПОЛНИТЕЛЬНО:'; $_['text_upc'] = 'СПОСОБ ДОСТАВКИ:'; $_['text_reward'] = 'Бонусные баллы:'; $_['text_points'] = 'Цена в бонусных баллах:'; $_['text_stock'] = 'НАЛИЧИЕ:'; $_['text_instock'] = 'есть в наличии'; $_['text_price'] = 'ЦЕНА:'; $_['text_tax'] = 'Без НДС:'; $_['text_discount'] = '%s или более: %s'; $_['text_option'] = ''; $_['text_qty'] = '<p style="font-family:Calibri;margin-bottom:-6px!important;margin-top:0px!important;line-height:15px;font-size: 14px;font-weight:600;color:#808080">КОЛИЧЕСТВО</p>'; $_['text_minimum'] = 'минимальное кол-во заказа <a style="color: #DB4867;font-size: 14px; font-weight:600;">%s шт.</a>'; $_['text_or'] = '- или -'; $_['error_logged_guest_rate'] = 'Вы должны войти или зарегистрироваться, чтобы поставить оценку товару!'; $_['error_logged_helpfull'] = 'Вы должны быть зарегистрированы, чтобы головать за пользу отзыва!'; $_['error_logged_report_abuse'] = 'Вы должны войти в систему, чтобы сообщить о нарушении!'; $_['error_report_abuse'] = 'Пожалуйста, напишите название!'; $_['error_def_report_abuse'] = 'Please give a reason the report!'; $_['error_already_helpfull'] = 'Вы уже проголосовали!'; $_['error_helpfull'] = 'Ваш голос не был засчитан. Пожалуйста, повторите попытку позже!'; $_['error_pros_cons_limit'] = 'Плюсы и минусы должны быть от %s до %s знаков!'; $_['error_purchase_product'] = 'Чтобы оставить отзыв, Вы сначала должны купить данный товар у нас!'; $_['error_already_review_product'] = 'Вы уже оставляли отзыв о данном товаре!'; $_['error_review_title'] = 'Заголовок отзыва должен быть от 3 до 40 знаков!'; $_['entry_review_title'] = 'Заголовок отзыва'; $_['entry_add_pros'] = 'Добавить плюсы'; $_['entry_add_cons'] = 'Добавить минусы'; $_['entry_review_image'] = 'Добавить изображение к отзыву (максимальный размер %s):'; $_['entry_recommend_product'] = 'Рекомендовать этот товар друзьм по электронной почте?'; $_['text_reply'] = 'Ответ'; $_['text_pros'] = 'Плюсы'; $_['text_cons'] = 'Минусы'; $_['text_on'] = 'от'; $_['text_yes'] = 'ДА'; $_['text_no'] = 'НЕТ'; $_['text_average_review'] = 'Всего:'; $_['text_product_review'] = 'Отзывы о %s'; $_['text_general_avarage'] = 'Средний рейтинг:'; $_['text_count_recommend_product'] = '<b>%s из %s (%s)</b> отзывы бы<br />Рекомендовать этот товар друзьм по электронной почте.'; $_['text_general_count_mark'] = '<b>Всего отзывов:</b> %s<br />Оставить свой отзыв об этом товаре.'; $_['text_report_abuse'] = 'Сообщить о нарушении'; $_['text_report_it'] = 'Сообщить об этом'; $_['text_other_reason'] = 'Другое (написать ниже)'; $_['text_please_wait'] = 'Пожалуйста, подождите!'; $_['text_helpfull_percentage'] = 'Был ли отзыв полезным? <button class="vote_yes" data-vote="1" data-review-id="%s">ДА</button><button class="vote_no" data-vote="0" data-review-id="%s">НЕТ</button> %s found this review helpful.'; $_['text_helpfull_numerically'] = 'Был ли этот отзыв полезным? <button class="vote_yes" data-vote="1" data-review-id="%s">ДА</button><button class="vote_no" data-vote="0" data-review-id="%s">НЕТ</button> %s of %s people found this review helpful.'; $_['text_share_title'] = '%s обзор %s'; $_['text_success_helpfull_percentage_yes'] = 'По Вашему мнению полезность. %s нашли этот отзыв полезным.'; $_['text_success_helpfull_percentage_no'] = 'По Вашему мнению бесполезен. %s нашли этот отзыв полезным.'; $_['text_success_helpfull_numerically_yes'] = 'По Вашему мнению, является полезным. %s из %s нашли этот отзыв полезным.'; $_['text_success_helpfull_numerically_no'] = 'По Вашему мнению, является бесполезным. %s из %s нашли этот отзыв полезным.'; $_['text_report_abuse_success'] = 'Ваш отзыв был успешно отправлен. Спасибо!'; $_['text_sort'] = 'Сортировать по:'; $_['text_default'] = 'По умолчанию'; $_['text_rating_desc'] = 'По рейтингу (начиная с самых лучших)'; $_['text_rating_asc'] = 'По рейтингу (начиная с самых плохих)'; $_['text_helpfull_desc'] = 'Полезные (начиная с самых лучших)'; $_['text_helpfull_asc'] = 'Полезные (начиная с самых плохих)'; $_['text_date_added_desc'] = 'По дате (начиная с новых)'; $_['text_date_added_asc'] = 'По дате (начиная со старых)'; $_['button_write_review'] = 'Написать отзыв'; $_['error_filename'] = 'Название файла должно быть от 3 до 64 знаков!'; $_['error_filetype'] = 'Неверный тип файла!'; $_['error_upload'] = 'Загрузить!'; $_['text_upload'] = 'Файл был успешно загружен!'; $_['text_reviews'] = '<a style="color: #DB4867;font-size: 14px; font-weight:600;">%s</a>'; $_['text_write'] = 'написать отзыв'; $_['text_no_reviews'] = 'нет отзывов об этом товаре.'; $_['text_note'] = '<span style="color: #FF0000;">Примечание:</span> HTML разметка не поддерживается! Используйте обычный текст.'; $_['text_on'] = ' на '; $_['text_share'] = 'Поделиться'; $_['text_success'] = 'Спасибо за ваш отзыв! Мы ценим наших покупателей и их мнение!'; $_['text_upload'] = 'Ваш файл был успешно загружен!'; $_['text_wait'] = 'Пожалуйста, подождите!'; $_['text_tags'] = 'Метки:'; $_['text_pros'] = 'Плюсы:'; $_['text_cons'] = 'Минусы:'; $_['text_error'] = 'Товар не найден!'; $_['text_payment_profile'] = 'Платежный профиль'; $_['quantity'] = 'Платежный'; $_['text_trial_description'] = '%s каждый %d %s(s) для %d платежа(ей) тогда'; $_['text_payment_description'] = '%s каждый %d %s(s) для %d платежа(ей)'; $_['text_payment_until_canceled_description'] = '%s каждый %d %s(s) пока не будет завершен'; $_['text_day'] = 'день'; $_['text_week'] = 'неделя'; $_['text_semi_month'] = 'полмесяца'; $_['text_month'] = 'месяц'; $_['text_year'] = 'год'; // Entry $_['entry_name'] = 'Ваше имя:'; $_['entry_review'] = 'Ваш отзыв:'; $_['entry_rating'] = 'Оценка:'; $_['entry_good'] = 'Отлично'; $_['entry_add_pros'] = 'Добавить Плюсы'; $_['entry_add_cons'] = 'Добавить Минусы'; $_['entry_bad'] = 'Ужасно'; $_['entry_recommend_product'] = 'Рекомендовать этот товар друзьм по электронной почте?'; $_['entry_captcha'] = 'Введите код, указанный на картинке:'; // Tabs $_['tab_description'] = 'ОПИСАНИЕ'; $_['tab_attribute'] = 'ХАРАКТЕРИСТИКИ'; $_['tab_review'] = 'ОТЗЫВЫ (%s)'; $_['tab_related'] = 'ПОХОЖИЕ ТОВАРЫ'; // Error $_['error_name'] = 'Имя должно быть от 3 до 25 символов!'; $_['error_text'] = 'Текст отзыва должен быть от 25 до 1000 символов!'; $_['error_rating'] = 'Пожалуйста, выберите оценку!'; $_['error_captcha'] = 'Код, указанный на картинке, введен неверно!'; $_['error_upload'] = 'Требуется загрузка файла!'; $_['error_filename'] = 'Имя файла должно быть от 3 до 128 символов!'; $_['error_filetype'] = 'Недопустимый тип файла!'; ?> --- Добавлено, 16 фев 2017 --- Второй файл не влезает, пришлось закачать на яндекс диск vq2-catalog_view_theme_3dtemplates_template_product_product.tpl https://yadi.sk/d/wI6PnMK43EBDPx
А вам не показалось странным, что я попросил языковой файл? Должно было бы показать, потому что я просил контроллер страницы товара, а не её языковой файл. Если языковой файл - это единственный product.php в кеше, то давайте тогда оригинальный. Проверьте вот здесь: HTML: <img class="wert" width="41px" src="image/<?php echo $option_value['image']; ?>" title="<?php echo $option_value['name']; ?>" /> ссылку на изображение. Там бы не должно было ничего быть вписано в src кроме вывода значения переменной. И вообще, тяжело, что-то советовать не видя работы модуля в живую, а он у вас выключен. И ещё раз повторяю: научитесь пользоваться кнопкой вставки кода в редакторе! Она слева от перечёркнутого глаза (в выпадающем списке выбрать Код).
Я модуль включила, думаю ночью народу мало vq2-catalog_language_russian_product_product.php Код: <?php $_['text_pcs'] = 'шт'; $_['text_out_of_stock'] = 'нет на складе'; // Text $_['text_search'] = 'Поиск'; $_['text_brand'] = 'Бренд'; $_['text_manufacturer'] = 'Производитель:'; $_['text_model'] = 'МОДЕЛЬ:'; $_['text_ean'] = 'ДОПОЛНИТЕЛЬНО:'; $_['text_upc'] = 'СПОСОБ ДОСТАВКИ:'; $_['text_reward'] = 'Бонусные баллы:'; $_['text_points'] = 'Цена в бонусных баллах:'; $_['text_stock'] = 'НАЛИЧИЕ:'; $_['text_instock'] = 'есть в наличии'; $_['text_price'] = 'ЦЕНА:'; $_['text_tax'] = 'Без НДС:'; $_['text_discount'] = '%s или более: %s'; $_['text_option'] = ''; $_['text_qty'] = '<p style="font-family:Calibri;margin-bottom:-6px!important;margin-top:0px!important;line-height:15px;font-size: 14px;font-weight:600;color:#808080">КОЛИЧЕСТВО</p>'; $_['text_minimum'] = 'минимальное кол-во заказа <a style="color: #DB4867;font-size: 14px; font-weight:600;">%s шт.</a>'; $_['text_or'] = '- или -'; $_['error_logged_guest_rate'] = 'Вы должны войти или зарегистрироваться, чтобы поставить оценку товару!'; $_['error_logged_helpfull'] = 'Вы должны быть зарегистрированы, чтобы головать за пользу отзыва!'; $_['error_logged_report_abuse'] = 'Вы должны войти в систему, чтобы сообщить о нарушении!'; $_['error_report_abuse'] = 'Пожалуйста, напишите название!'; $_['error_def_report_abuse'] = 'Please give a reason the report!'; $_['error_already_helpfull'] = 'Вы уже проголосовали!'; $_['error_helpfull'] = 'Ваш голос не был засчитан. Пожалуйста, повторите попытку позже!'; $_['error_pros_cons_limit'] = 'Плюсы и минусы должны быть от %s до %s знаков!'; $_['error_purchase_product'] = 'Чтобы оставить отзыв, Вы сначала должны купить данный товар у нас!'; $_['error_already_review_product'] = 'Вы уже оставляли отзыв о данном товаре!'; $_['error_review_title'] = 'Заголовок отзыва должен быть от 3 до 40 знаков!'; $_['entry_review_title'] = 'Заголовок отзыва'; $_['entry_add_pros'] = 'Добавить плюсы'; $_['entry_add_cons'] = 'Добавить минусы'; $_['entry_review_image'] = 'Добавить изображение к отзыву (максимальный размер %s):'; $_['entry_recommend_product'] = 'Рекомендовать этот товар друзьм по электронной почте?'; $_['text_reply'] = 'Ответ'; $_['text_pros'] = 'Плюсы'; $_['text_cons'] = 'Минусы'; $_['text_on'] = 'от'; $_['text_yes'] = 'ДА'; $_['text_no'] = 'НЕТ'; $_['text_average_review'] = 'Всего:'; $_['text_product_review'] = 'Отзывы о %s'; $_['text_general_avarage'] = 'Средний рейтинг:'; $_['text_count_recommend_product'] = '<b>%s из %s (%s)</b> отзывы бы<br />Рекомендовать этот товар друзьм по электронной почте.'; $_['text_general_count_mark'] = '<b>Всего отзывов:</b> %s<br />Оставить свой отзыв об этом товаре.'; $_['text_report_abuse'] = 'Сообщить о нарушении'; $_['text_report_it'] = 'Сообщить об этом'; $_['text_other_reason'] = 'Другое (написать ниже)'; $_['text_please_wait'] = 'Пожалуйста, подождите!'; $_['text_helpfull_percentage'] = 'Был ли отзыв полезным? <button class="vote_yes" data-vote="1" data-review-id="%s">ДА</button><button class="vote_no" data-vote="0" data-review-id="%s">НЕТ</button> %s found this review helpful.'; $_['text_helpfull_numerically'] = 'Был ли этот отзыв полезным? <button class="vote_yes" data-vote="1" data-review-id="%s">ДА</button><button class="vote_no" data-vote="0" data-review-id="%s">НЕТ</button> %s of %s people found this review helpful.'; $_['text_share_title'] = '%s обзор %s'; $_['text_success_helpfull_percentage_yes'] = 'По Вашему мнению полезность. %s нашли этот отзыв полезным.'; $_['text_success_helpfull_percentage_no'] = 'По Вашему мнению бесполезен. %s нашли этот отзыв полезным.'; $_['text_success_helpfull_numerically_yes'] = 'По Вашему мнению, является полезным. %s из %s нашли этот отзыв полезным.'; $_['text_success_helpfull_numerically_no'] = 'По Вашему мнению, является бесполезным. %s из %s нашли этот отзыв полезным.'; $_['text_report_abuse_success'] = 'Ваш отзыв был успешно отправлен. Спасибо!'; $_['text_sort'] = 'Сортировать по:'; $_['text_default'] = 'По умолчанию'; $_['text_rating_desc'] = 'По рейтингу (начиная с самых лучших)'; $_['text_rating_asc'] = 'По рейтингу (начиная с самых плохих)'; $_['text_helpfull_desc'] = 'Полезные (начиная с самых лучших)'; $_['text_helpfull_asc'] = 'Полезные (начиная с самых плохих)'; $_['text_date_added_desc'] = 'По дате (начиная с новых)'; $_['text_date_added_asc'] = 'По дате (начиная со старых)'; $_['button_write_review'] = 'Написать отзыв'; $_['error_filename'] = 'Название файла должно быть от 3 до 64 знаков!'; $_['error_filetype'] = 'Неверный тип файла!'; $_['error_upload'] = 'Загрузить!'; $_['text_upload'] = 'Файл был успешно загружен!'; $_['text_reviews'] = '<a style="color: #DB4867;font-size: 14px; font-weight:600;">%s</a>'; $_['text_write'] = 'написать отзыв'; $_['text_no_reviews'] = 'нет отзывов об этом товаре.'; $_['text_note'] = '<span style="color: #FF0000;">Примечание:</span> HTML разметка не поддерживается! Используйте обычный текст.'; $_['text_on'] = ' на '; $_['text_share'] = 'Поделиться'; $_['text_success'] = 'Спасибо за ваш отзыв! Мы ценим наших покупателей и их мнение!'; $_['text_upload'] = 'Ваш файл был успешно загружен!'; $_['text_wait'] = 'Пожалуйста, подождите!'; $_['text_tags'] = 'Метки:'; $_['text_pros'] = 'Плюсы:'; $_['text_cons'] = 'Минусы:'; $_['text_error'] = 'Товар не найден!'; $_['text_payment_profile'] = 'Платежный профиль'; $_['quantity'] = 'Платежный'; $_['text_trial_description'] = '%s каждый %d %s(s) для %d платежа(ей) тогда'; $_['text_payment_description'] = '%s каждый %d %s(s) для %d платежа(ей)'; $_['text_payment_until_canceled_description'] = '%s каждый %d %s(s) пока не будет завершен'; $_['text_day'] = 'день'; $_['text_week'] = 'неделя'; $_['text_semi_month'] = 'полмесяца'; $_['text_month'] = 'месяц'; $_['text_year'] = 'год'; // Entry $_['entry_name'] = 'Ваше имя:'; $_['entry_review'] = 'Ваш отзыв:'; $_['entry_rating'] = 'Оценка:'; $_['entry_good'] = 'Отлично'; $_['entry_add_pros'] = 'Добавить Плюсы'; $_['entry_add_cons'] = 'Добавить Минусы'; $_['entry_bad'] = 'Ужасно'; $_['entry_recommend_product'] = 'Рекомендовать этот товар друзьм по электронной почте?'; $_['entry_captcha'] = 'Введите код, указанный на картинке:'; // Tabs $_['tab_description'] = 'ОПИСАНИЕ'; $_['tab_attribute'] = 'ХАРАКТЕРИСТИКИ'; $_['tab_review'] = 'ОТЗЫВЫ (%s)'; $_['tab_related'] = 'ПОХОЖИЕ ТОВАРЫ'; // Error $_['error_name'] = 'Имя должно быть от 3 до 25 символов!'; $_['error_text'] = 'Текст отзыва должен быть от 25 до 1000 символов!'; $_['error_rating'] = 'Пожалуйста, выберите оценку!'; $_['error_captcha'] = 'Код, указанный на картинке, введен неверно!'; $_['error_upload'] = 'Требуется загрузка файла!'; $_['error_filename'] = 'Имя файла должно быть от 3 до 128 символов!'; $_['error_filetype'] = 'Недопустимый тип файла!'; ?> --- Добавлено, 17 фев 2017 --- А вот все же оригинальные файлы карточки товара - https://yadi.sk/d/a8NggWhH3D9x92 модуля - https://yadi.sk/d/7u2f3gss3EBMjS А вот товар, где есть опции с нулевым товаром - loress.ru/dlya-muzhchin/elektroimpulsnaya-usb-zazhigalka-tiger
А зачем вы ещё раз выложили тот же языковой файл? Я же написал, что он мне не нужен. Теперь я точно могу сказать, что проблема в контроллере, потому что в $option_value['image'] ничего нет.
простите, видимо ошибочно выложила, вроде другой копировала.. проблема в контроллере карточки товара, да? т.е. мне в нем искать ошибки? Я посмотрела карточку товара, у меня в одну строку прописано не только та строка, что Вы выше написали, вообще про опцию изображение я нашла такой кусочек Код: <?php } ?> <?php if ($option['type'] == 'image') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required" style="display:none">*</span> <?php } ?> <span class="bold" style="display:none"><?php echo $option['name']; ?>:</span><br style="margin-bottom: 1px;" /> <style>input[type="radio"]:checked+label{ border: 2px solid #E14000; }</style> <div class="option-image" style="width:100%"> <?php $i=0; foreach ($option['option_value'] as $option_value) { $i++; if($i==1) { $chek='checked="checked"';} else {$chek='';} ?> <div class="opcii" style="margin-bottom: 1px!important;margin-top: 0px!important;"> <input <?php echo $chek;?> style="display:none " type="radio" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option_value['product_option_value_id']; ?>" id="option-value-<?php echo $option_value['product_option_value_id']; ?>" /> <label class="d_al" style="width:47px; height: 47px; " data-alt=" <?php echo $option_value['name']; ?>" for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img class="wert" width="41px" src="image/<?php echo $option_value['image']; ?>" title="<?php echo $option_value['name']; ?>" /></label></div> <?php } ?> </div>
Да. Посмотрите, как там формируются ссылки на изображения опций. Отсюда я и взял $option_value['image']. Остальной код там не имеет значения в контексте ошибки.