devel

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

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

  • Посещение

Репутация

33 Очень хороший

Информация о devel

  • Звание
    Продвинутый пользователь
  • День рождения 09.06.1981

Информация

  • Пол
    Мужчина
  • Город:
    Санкт-Петербург

Посетители профиля

2 737 просмотров профиля
  1. Ок. Значит, поменял блоки requred-options и no-requred-options местами, т.к. опция срок подписки - последняя в необходимых, и следовательно - она самая последняя в списке всех опций, стилями прибил столбцы по краям области контента, и все работает как надо. Еще раз выражаю автору благодарность и за модуль, и за поддержку!
  2. Так и есть. По дефолту 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 } ?>
  3. Супер мод! Странно, как раньше мимо него прошел. Поставил 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?
  4. Все верно, Дополнение по поводу письма не учел. У себя поправил, Кто ранее пользовался полным решением - рекомендуется добавить изменения, озвученные alnem
  5. Говоря прямо, если возник спрос на такой фильтр, значит это не просто прихоть, а необходимость. И совсем его хоронить не буду. Просто переключился на другие вопросы. Ноябрь - да, последнее пока что изменение. Недоделанным осталась сортировка по производителю: autocomplete выводит весь список производителей, вместо нужного. Тема отложена, т.к. занят формой регистрации. Это фронтенд, он требует большего внимания.
  6. Opencart 1.5.6. В режиме обслуживания выводится header, content (сообщение, что сайт обслуживается) и footer, и как следствие - в хидере ссылки на регистрацию и вход. При попытке зарегаться, в IE9 и в Mozilla 25.0.1 вываливается "SyntaxError: JSON.parse: unexpected character OK" и листинг страницы. В хроме и опере все норм. Админ в это время не залогинен. Решение ищется.
  7. Снес с рабочего сайта. Слишком много допилов для 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 вышеописанные недочеты устранил (насколько я понял из уведомлений об обновлении файлов, коих было два). Если нет - архив с исправлениями я прибил выше.
  8. Вопреки здравому смыслу, разместил $controller->addPreAction(new Action('common/maintenance')); после сео . Все заработало. Это чистый opencart 1.5.6 Хитрый хитрого обхитрил ))))
  9. Вот еще баги: 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
  10. Проверил 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(); ?> Вобще, когда в админке кто-то есть (менеджер или админ) - ссылки ЧПУ. Все вышли - ссылки не ЧПУ =)
  11. Нет стокового jquery и части картинок. Поправил запросы, добавил картинки и js. pavblog_rus_seopro_1.zip pavblog_rus_seopro_1.zip
  12. Ищите лишние пробелы между 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';
  13. Включил ИМ в режим обслуживания (т.е. выключил для посетителей), и все ссылки приняли не ЧПУ вид. Норма? Что увидит бот, забегая в этот момент поиндексить странички: ЧПУ ссылки или "родные"?
  14. Цена в том числе НДС

    Возможно, вам это решение подойдет. Пока, к сожалению, не vqmod
  15. В конечном итоге, в 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'] );