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

devel

Пользователи
  • Публикаций

    123
  • Зарегистрирован

  • Посещение

Весь контент devel

  1. Изначально, в чистом opencart, цена товара выводится либо: 1) БЕЗ НДС (например 100р) и ниже С НДС (в примере - 118р), - это если включено отображение цены с НДС, а НДС установлен 18%. либо 2) БЕЗ НДС ( в примере 100р) Это удобно, например, для США, где цены в магазине указаны без VAT, а сам налог VAT добавляется к цене на кассе. В РФ цена товара практически всегда уже включает НДС (если товар облагается НДС), а сумма налога выделяется из итоговой суммы по формуле: НДС = Цена товара * 18/118. Ранее на форуме писали об этом, но решение не найдено (или умалчивается?) Хочется вернуться к этой теме, т.к. для заказчиков юр.лиц размер ндс (и само его наличие) часто играет определяющую роль. Если установить НДС равным 18%, он будет прибавляться к цене товара. Это корень проблемы, т.к. в нашем случае ндс должен вычитаться из цены, и рассчитываться по формуле (см. выше). На форуме найдено несколько решений, в т.ч. устанавливать цены на 18% ниже, а затем прибавлять к ним НДС. Но эти решения неудобны. Правильнее найти файл, в котором происходит подсчет ндс и вместо операции сложения вывести цену с ндс, а в поле tax-text выводить не "Сумма без НДС", а само значение ндс. Например, нужно посчитать: Товар 1 Цена с НДС 100р НДС (включен в сумму) 15.25р Итого 100р В шаблоне карточки товара достаточно вывести Товар 1 Цена 100р НДС 15.25р Кто подскажет, где происходит расчет налога в opencart? www\catalog\model\total\tax.php - это?
  2. Ок. Значит, поменял блоки requred-options и no-requred-options местами, т.к. опция срок подписки - последняя в необходимых, и следовательно - она самая последняя в списке всех опций, стилями прибил столбцы по краям области контента, и все работает как надо. Еще раз выражаю автору благодарность и за модуль, и за поддержку!
  3. Так и есть. По дефолту product.tpl выводит все опции в одном блоке. А я опции разделил на два блока requred и not-requred и стилями оформил их как две колонки. Соответственно, мод работает правильно, это мои кастомизации внесли путаницу. Сделано топорно: <div id="required-options"> <h4><?php echo $text_required_param; ?></h4> <?php foreach ($options as $option) { ?> <?php if ($option['required']) { ?> <?php if ($option['type'] == 'select') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <select name="option[<?php echo $option['product_option_id']; ?>]"> <option value=""><?php echo $text_select; ?></option> <?php foreach ($option['option_value'] as $option_value) { ?> <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option['product_option_id'] == '20' || $option['product_option_id'] == '23' || $option['product_option_id'] == '24' || $option['product_option_id'] == '25'|| $option['product_option_id'] == '32' || $option['product_option_id'] == '33') { ?> <?php if ($option_value['price']) { ?> ( <?php echo 'x'; ?> <?php echo round($option_value['price'],2); ?> ) <?php } ?> <?php } else if ($option_value['price']) { ?> ( <?php echo $option_value['price_prefix']; ?> <?php echo $option_value['price']; ?> ) <?php } ?> </option> <?php } ?> </select> </div> <br /> <?php } ?> <?php if ($option['type'] == 'radio') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <?php foreach ($option['option_value'] as $option_value) { ?> <input 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 for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> <br /> <?php } ?> </div> <br /> <?php } ?> <?php if ($option['type'] == 'checkbox') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <?php foreach ($option['option_value'] as $option_value) { ?> <input type="checkbox" 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 for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> <br /> <?php } ?> </div> <br /> <?php } ?> <?php if ($option['type'] == 'image') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <table class="option-image"> <?php foreach ($option['option_value'] as $option_value) { ?> <tr> <td style="width: 1px;"><input 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']; ?>" /></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" /></label></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></td> </tr> <?php } ?> </table> </div> <br /> <?php } ?> <?php if ($option['type'] == 'text') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'textarea') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <textarea name="option[<?php echo $option['product_option_id']; ?>]" cols="40" rows="5"><?php echo $option['option_value']; ?></textarea> </div> <br /> <?php } ?> <?php if ($option['type'] == 'file') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="button" value="<?php echo $button_upload; ?>" id="button-option-<?php echo $option['product_option_id']; ?>" class="button"> <input type="hidden" name="option[<?php echo $option['product_option_id']; ?>]" value="" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'date') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="date" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'datetime') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="datetime" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'time') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="time" /> </div> <br /> <?php } ?> <?php } ?> <?php } ?> </div> <div id="no-required-options"> <h4><?php echo $text_no_required_param; ?></h4> <?php foreach ($options as $option) { ?> <?php if (!$option['required']) { ?> <?php if ($option['type'] == 'select') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <select name="option[<?php echo $option['product_option_id']; ?>]"> <option value=""><?php echo $text_select; ?></option> <?php foreach ($option['option_value'] as $option_value) { ?> <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> ( <?php echo $option_value['price_prefix']; ?> <?php echo $option_value['price']; ?> ) <?php } ?> </option> <?php } ?> </select> </div> <br /> <?php } ?> <?php if ($option['type'] == 'radio') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <?php foreach ($option['option_value'] as $option_value) { ?> <input 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 for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> ( <?php echo $option_value['price_prefix']; ?> <?php echo $option_value['price']; ?> ) <?php } ?> </label> <br /> <?php } ?> </div> <br /> <?php } ?> <?php if ($option['type'] == 'checkbox') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <?php foreach ($option['option_value'] as $option_value) { ?> <input type="checkbox" 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 for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label> <br /> <?php } ?> </div> <br /> <?php } ?> <?php if ($option['type'] == 'image') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <table class="option-image"> <?php foreach ($option['option_value'] as $option_value) { ?> <tr> <td style="width: 1px;"><input 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']; ?>" /></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><img src="<?php echo $option_value['image']; ?>" alt="<?php echo $option_value['name'] . ($option_value['price'] ? ' ' . $option_value['price_prefix'] . $option_value['price'] : ''); ?>" /></label></td> <td><label for="option-value-<?php echo $option_value['product_option_value_id']; ?>"><?php echo $option_value['name']; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></td> </tr> <?php } ?> </table> </div> <br /> <?php } ?> <?php if ($option['type'] == 'text') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'textarea') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <textarea name="option[<?php echo $option['product_option_id']; ?>]" cols="40" rows="5"><?php echo $option['option_value']; ?></textarea> </div> <br /> <?php } ?> <?php if ($option['type'] == 'file') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="button" value="<?php echo $button_upload; ?>" id="button-option-<?php echo $option['product_option_id']; ?>" class="button"> <input type="hidden" name="option[<?php echo $option['product_option_id']; ?>]" value="" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'date') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="date" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'datetime') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="datetime" /> </div> <br /> <?php } ?> <?php if ($option['type'] == 'time') { ?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php echo $option['name']; ?>:</b><br /> <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" class="time" /> </div> <br /> <?php } ?> <?php } ?> <?php } ?></div> </div> <?php } ?>
  4. Супер мод! Странно, как раньше мимо него прошел. Поставил 2.0.21 на opencart 1.5.6 и дефолтную тему. Добавил несколько опций обязательных, и несколько необязательных. Объясню на примере кабельного ТВ. Суть в том, что, если, к примеру, выбрать в кач-ве опции - умножение (например, обязательная опция - подписка на услугу, от 1 до 12 мес), а в кач-ве необязательной опции - доп услугу (например, каналы в Ultra HD, с прибавлением к прайсу определенной суммы), то умножение не учитывает доп. опции более 1 раза. Другими словами, если базовая цена услуги 100р/мес, дополнительная услуга Ultra HD - +50р/мес, то при выборе подписки на 2 месяцы, итоговая сумма получается (100*2)+50, а должно быть (100+50)*2. Т.е. доп. опции не умножаются. При этом, если опцию срока подписки сделать дополнительной (not requred), то начинает считать правильно. Можно было бы так оставить, но как быть, если таких опций (умножения) две, три и более? Например, точек оказания услуги - две, т.е. снова нужно умножить прайс на два, и он снова не учтет дополнительные +50р каждый месяц, а учтет только за 1 раз. Интуиция подсказывает, что решение простое и оно на поверхности, следует в перерасчете использовать все опции, а не только requred, но в каком модуле, mpn2005 или sergiosinicin?
  5. Все верно, Дополнение по поводу письма не учел. У себя поправил, Кто ранее пользовался полным решением - рекомендуется добавить изменения, озвученные alnem
  6. При попытке добавить в существующи заказ еще товары (менеджером, в админке), вылетает ошибка SyntaxError: Unexpected tocken. В логах вот что: 2013-11-04 14:10:43 - PHP Warning: Missing argument 4 for Cart::add(), called in www\catalog\controller\checkout\manual.php on line 74 and defined in www\system\library\cart.php on line 318 2013-11-04 14:10:43 - PHP Notice: Undefined variable: profile_id in www\system\library\cart.php on line 327 Решение найдено на форуме разработчика, как "предположительно работающее". Я проверил - работает. Решение: замена в /system/library/cart.php public function add($product_id, $qty = 1, $option, $profile_id) { на: public function add($product_id, $qty = 1, $option, $profile_id = '') { Opencart 1.5.6, Default Theme.
  7. Взялся за большое дело: правку admin/controller/catalog/product.php. Для чего: чтобы видеть доп. поля у товара, не тратить время на то, чтобы влезать в его подробное описание, Сделал вывод ID товара и SKU, Товары сортируются по ID и SKU, и, что самое важное, когда начинаем вводить SKU, ajax предлагает варианты. По моей логике - SKU - это номенклатурный номер. Он будет соответствовать полю КОД в 1С УТ в справочнике Номенклатура. Пока же он вводится вручную при добавлении товара. Модель - это vendor code, присвоенный товару или партии товара на заводе-изготовителе. Все чудесно. Добрался до Производителя. Задача аналогичная: сортировка, фильтрация, поиск. Для чего: вывести все товары одного производителя, например. Тут меня ждал сюрприз ) В БД oc_product хранится manufacturer_id. Сделал сначала вывод этого значения. Все ОК! Сортировка, фильтрация - все работает. Но помнить ИД производителя - это глупо, а выводить его неинформативно. Чтобы выводился именно производитель, в контроллере добавил это: foreach ($results as $result) { // devel add start vendor if(!empty($result['manufacturer_id'])) { $manufacturer = $this->model_catalog_manufacturer->getManufacturer($result['manufacturer_id']); $vendor = $manufacturer['name'];} else { $vendor = 'No Name'; } $vendor_id = $result['manufacturer_id']; // devel add end $action = array(); Т.е. для каждого товара в списке, вытащил наименование производителя. Отправил эти данные в др. массив: $this->data['products'][] = array( // devel add start product_id, sku 'product_id' => $result['product_id'], 'sku' => $result['sku'], // devel add end 'name' => $result['name'], 'model' => $result['model'], // devel add start vendor 'manufacturer_name' => $vendor, 'manufacturer_id' => $vendor_id, // devel add end 'price' => $result['price'], 'special' => $special, 'image' => $image, 'quantity' => $result['quantity'], 'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')), 'selected' => isset($this->request->post['selected']) && in_array($result['product_id'], $this->request->post['selected']), 'action' => $action ); } и в public function autocomplete() : $json[] = array( // devel add start product_id, sku, Здесь выпадающие значения ajax 'product_id' => $result['product_id'], 'sku' => $result['sku'], // devel add end 'name' => strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 'model' => $result['model'], // devel add start 'manufacturer_name' => $vendor, 'manufacturer_id' => $vendor_id, // devel add end 'option' => $option_data, 'price' => $result['price'] ); Я привожу только часть кода, т.к. правок я внес неимоверное кол-во, Привожу только ту часть, которая на мой взгляд "проблемная". Результат в аттаче. Сортировка по алфавиту работает, При вводе наименования производителя ajax не срабатывает. При вводе ИД производителя ajax предлагает варианты, у которых совпал ид ))) Задачу нужно разбить на две: 1) вывод наименования производителя (а не его ид) - это реализовано в контроллере 2) ввод наименования производителя. В Модели формируется запрос к p,manufacturer_id, => работать нужно с ИД производителя (аналогично SKU), но ввод и вывод - в виде наименования. С выводом я разобрался. А вот на каком этапе преобразовать то, что вводим с клавиатуры в ИД производителя - не пойму, запутался. По идее, из шаблона получаем ИД производителя, Дальше я сдулся... Прошу гуру помощи! :
  8. Говоря прямо, если возник спрос на такой фильтр, значит это не просто прихоть, а необходимость. И совсем его хоронить не буду. Просто переключился на другие вопросы. Ноябрь - да, последнее пока что изменение. Недоделанным осталась сортировка по производителю: autocomplete выводит весь список производителей, вместо нужного. Тема отложена, т.к. занят формой регистрации. Это фронтенд, он требует большего внимания.
  9. Opencart 1.5.6. В режиме обслуживания выводится header, content (сообщение, что сайт обслуживается) и footer, и как следствие - в хидере ссылки на регистрацию и вход. При попытке зарегаться, в IE9 и в Mozilla 25.0.1 вываливается "SyntaxError: JSON.parse: unexpected character OK" и листинг страницы. В хроме и опере все норм. Админ в это время не залогинен. Решение ищется.
  10. Снес с рабочего сайта. Слишком много допилов для 1.5.6. И все равно то там, то сям вылезают мелкие баги. В админке - еще полбеды. Но в фронтенде - это не айс. Версия pavblog_seo_pro.php из мода для opencart 1.5.6, как ни странно, подошла (хотя весит в 2 раза больше). Но в целом, осталось много нареканий. Спасибо автору и ikarus за адаптацию, но мне не подошел. Возможно, на 1.5.3-4 таких неожиданностей нет. Сравнил с оригинальным модом: похоже, автор выпустил апдейт. Вот его бы адаптировать к seo_pro.php... Но это большое дело, требующее больших временных затрат. В идеале, мод не должен ничего менять (особенно seo_pro.php). П.С. Чтобы не было непоняток: мод работает! Кто искал русский и с сео для 1.5.3.1 - это оно. Для более свежих движков - стоит обратить внимание на оригинал или дождаться пока Tom и ikarus переведут и подружат с сео_про новый релиз. П.С. 2. ikarus вышеописанные недочеты устранил (насколько я понял из уведомлений об обновлении файлов, коих было два). Если нет - архив с исправлениями я прибил выше.
  11. Вопреки здравому смыслу, разместил $controller->addPreAction(new Action('common/maintenance')); после сео . Все заработало. Это чистый opencart 1.5.6 Хитрый хитрого обхитрил ))))
  12. Вот еще баги: 2013-11-23 3:53:04 - PHP Notice: Undefined index: list in /home/ххх/www/admin/controller/module/pavblog.php on line 198 2013-11-23 3:58:57 - PHP Notice: Undefined index: list in /home/ххх/www/admin/controller/module/pavblog.php on line 198 2013-11-23 13:35:23 - PHP Notice: Undefined index: blog_id in /home/ххх/www/catalog/controller/pavblog/blog.php on line 71 2013-11-23 13:35:23 - PHP Notice: Undefined variable: category_id in /home/ххх/www/catalog/controller/pavblog/blog.php on line 232
  13. Проверил index.php, что в корне - там так же: // Front Controller $controller = new Front($registry); // Maintenance Mode $controller->addPreAction(new Action('common/maintenance')); // SEO URL's //$controller->addPreAction(new Action('common/seo_url')); if (!$seo_type = $config->get('config_seo_url_type')) { $seo_type = 'seo_url'; } $controller->addPreAction(new Action('common/' . $seo_type)); // Router if (isset($request->get['route'])) { $action = new Action($request->get['route']); } else { $action = new Action('common/home'); } // Dispatch $controller->dispatch($action, new Action('error/not_found')); // Output $response->output(); ?> Вобще, когда в админке кто-то есть (менеджер или админ) - ссылки ЧПУ. Все вышли - ссылки не ЧПУ =)
  14. Нет стокового jquery и части картинок. Поправил запросы, добавил картинки и js. pavblog_rus_seopro_1.zip pavblog_rus_seopro_1.zip
  15. Ищите лишние пробелы между oc_ и url_alias в файлах модуля. Как минимум, в этом проблема. Я тоже не сразу заметил.\admin\model\pavblog\menu.php - здесь в запросе убрать перед url_alias public function getInfo( $id ){ $sql = ' SELECT m.*, md.title,md.description, (SELECT keyword FROM ' . DB_PREFIX . ' url_alias WHERE query = "id=' . (int)$id . '") AS meta_alias FROM ' . DB_PREFIX . 'pavblog_category m LEFT JOIN ' .DB_PREFIX.'pavblog_category_description md ON m.category_id=md.category_id AND language_id='.(int)$this->config->get('config_language_id') ; \admin\model\pavblog\blog.php - здесь убрать перед url_alias: public function getBlog( $blogId ){ $query = 'SELECT b.*, (SELECT keyword FROM ' . DB_PREFIX . ' url_alias WHERE query = "blog_id=' . (int)$blogId . '") AS meta_alias FROM ' . DB_PREFIX . 'pavblog_blog b LEFT JOIN ' . DB_PREFIX . 'pavblog_category c ON c.category_id=b.category_id'; \admin\model\pavblog\blog.php - здесь добавить после FROM: public function getBlog( $blogId ){ $query = 'SELECT b.*, (SELECT keyword FROM' . DB_PREFIX . 'url_alias WHERE query = "blog_id=' . (int)$blogId . '") AS meta_alias FROM ' . DB_PREFIX . 'pavblog_blog b LEFT JOIN ' . DB_PREFIX . 'pavblog_category c ON c.category_id=b.category_id';
  16. Включил ИМ в режим обслуживания (т.е. выключил для посетителей), и все ссылки приняли не ЧПУ вид. Норма? Что увидит бот, забегая в этот момент поиндексить странички: ЧПУ ссылки или "родные"?
  17. devel

    Цена в том числе НДС

    Возможно, вам это решение подойдет. Пока, к сожалению, не vqmod
  18. В чистом opencart 1.5.6 увидел новый пункт tab-marketplace-links. В \www\admin\view\template\catalog\product_form.tpl табы перечислены в этом блоке: <div id="tabs" class="htabs"><a href="#tab-general"><?php echo $tab_general; ?></a><a href="#tab-data"><?php echo $tab_data; ?></a><a href="#tab-links"><?php echo $tab_links; ?></a><a href="#tab-attribute"><?php echo $tab_attribute; ?></a><a href="#tab-option"><?php echo $tab_option; ?></a><a href="#tab-profile"><?php echo $tab_profile; ?></a><a href="#tab-discount"><?php echo $tab_discount; ?></a><a href="#tab-special"><?php echo $tab_special; ?></a><a href="#tab-image"><?php echo $tab_image; ?></a><a href="#tab-reward"><?php echo $tab_reward; ?></a><a href="#tab-design"><?php echo $tab_design; ?></a></div> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form"> За ним идет форма. Если табы не умещаются в одну строку, то возникает глюк, с отображением неуместившихся в строку табов: они "жмутся" не к левому краю div class="content", а к левому краю активного таба. Что еще хуже, - область настроек (form id='form') также начинает ползти вправо и появляется горизонтальная прокрутка. Если в \www\admin\view\stylesheet\stylesheet.css добавить: #form {clear:both;} то левая граница формы будет у левого края блока div class="content". Как укратить табы пока не разобрался. В коде, приведенном выше таб #tab-marketplace отсутствует, однако он выводится : <a href="#tab-openbay" style="display: block;"> tab_marketplace_links </a> Почему у него display: block, когда у других табов inline - непонятно. Каким образом он попадает в контейнер div id='tabs' - тоже загадка. Повторюсь, проьлема в чистом opencart 1.5.6. в ситуации, когда табы не умещаются в одну строку.:
  19. Разбираясь с order_form.php наткнулся на такой момент: если добавить в существующий заказ еще товар, то после сообщения об успешном добавлении товара в заказ, цена меняется с дробной на целую. Т.е., допустим было 1550.0000, стало 1550. Первая цифра выводится php в том виде в котором она есть в БД (1550.0000), и может быть "отформатирована" в нужный формат (хххх.хх) с помощью sprintf (например, так: <?php echo sprintf("%01.2f", $order_product['price']); ?>). А вторая получается в результате отработки javasript в шаблоне: html += ' <td class="right">' + product['price'] + '<input type="hidden" name="order_product[' + product_row + '][price]" value="' + product['price'] + '" /></td>'; Как "отформатировать" вывод "+ product['price'] +", чтобы был формат хххх.хх, т.е с плавающей точкой, два разряда после точки. Мне кажется, что этот скрипт выводит строку, а нам нужно число. Слышал, что на js простого преобразование типов нет. Можете что-нибудь посоветовать?
  20. В конечном итоге, в manual.php сделал так: // Products $json['order_product'] = array(); $defcur = $this->model_setting_setting->getSetting('config'); ... $json['order_product'][] = array( 'product_id' => $product['product_id'], 'name' => $product['name'], 'model' => $product['model'], 'option' => $option_data, 'download' => $download_data, 'quantity' => $product['quantity'], 'stock' => $product['stock'], 'price' => $this->currency->format($product['price'], $defcur['config_currency']), 'total' => $this->currency->format($product['total'], $defcur['config_currency']), 'tax' => $this->tax->getTax($product['price'], $product['tax_class_id']), 'reward' => $product['reward'] );
  21. ОК. Большое спасибо, mpn2005! Реально помогли.
  22. Да, это работает. Внес в manual.php
  23. mpn2005, я тогда задам еще один вопрос, на эту же тему. В табе Итоги выводится общая сумма и налог. В шаблоне это строка: <td class="right"><?php echo $order_total['value']; ?></td> Выводятся цены без копеек. Я пошел по легкому пути, увидел в БД поле text и вывел его: <td class="right"><?php echo $order_total['text']; ?></td> Но это же не верно?
  24. Заметил следующее. Зашел как покупатель (не логинился, просто открыл главную), установил валюту евро. Зашел в админку админом, открыл кем-то ранее созданный заказ, изменил кол-во товара и отправил запрос (нажал кнопку) - цены стали в евро )))). Это если вкладки открыты в одном браузере. Если в разных - такого не происходит
×