Jump to content

elscept

Новичок
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

1 Обычный

1 Follower

About elscept

  • Rank
    Пользователь
  • Birthday 10/19/1985

Информация

  • Пол
    Мужчина

Recent Profile Visitors

1,300 profile views
  1. Модификатор был установлен, кеш тоже несколько раз чистил. Проблема решилась настройкой модуля Simple, а именно установкой зависимостей в блоке "Ограничение видимости вариантов доставки". Спасибо!
  2. "Использую" модуль совместно с последней версией Simple 4.9.4. Не фильтрует способы доставки/оплаты. Скрин настроек прикрепил.
  3. Не похоже. Оплатил модуль, после чего отправил письмо в котором еще раз указал те же данные, что и при покупке и... все. В ответ тишина. Я понимаю, что сейчас ночь, но ведь
  4. Времени конечно прошло не мало и может ответ уже давно найден, но... Если коротко, то так: В корне сайта создаем папку "gulp", устанавливаем в нее Ноду, нужные расширения для Галпа (livereload обязательно, куда ж без него ), ставим Bower и качаем js-css библиотеки т.д. по вкусу. Далее, в gulpfile.js настраиваем таски для Галпа (что откуда брать и куда грузить после обработки) и, наконец, вместо привычного server: { baseDir: 'app' }, пишем proxy: 'myshop.loc', (вместо "myshop.loc" имя вашей папки с сайтом, естественно). Таск "gulp watch" может быть например таким gulp.task('watch', ['browser-sync', 'css-libs', 'scripts'], function() { gulp.watch('app/**/*.scss', ['sass']); gulp.watch('app/js/**/*.js', browserSync.reload); gulp.watch('../catalog/view/theme/**/*.html', browserSync.reload); gulp.watch('../catalog/view/theme/**/*.tpl', browserSync.reload); gulp.watch('../catalog/**/*.php', browserSync.reload); }); Отслеживать изменения прям во всех php файлах конечно не обязательно, это уже дело вкуса.
  5. Все куда проще. В том же файле system/library/url.php Строку public function link($route, $args = '', $connection = '') { меняем на public function link($route, $args = '', $connection = 'SSL') {
  6. Есть ли возможность через модуль задавать цену в зависимости от количества покупаемых товаров (то есть стандартные скидки для товара)? Например: цена - 100$, от 3 шт - 95$, от 7 шт - 90$.
  7. Прошу прощения за, возможно, уже задававшийся вопрос, но поиски по теме и PDF-руководству результата не дали. Есть ли возможность через модуль задавать цену в зависимости от количества покупаемых товаров? Например: цена - 100$, от 3 шт - 95$, от 7 шт - 90$.
  8. Небольшая доработка позволяющая добавить возможность не заполняя мета теги Title и Description для товаров выводить их по шаблону определяемому в категории. Делалось для версии 1.5.3.2. Доступные ключи: [title], [price], [category] - название товара, цена и категория, к которой он привязан. Приоритетность вывода тега Title и Description (кроме 4 пункта): 1. Из товара 2. Из категории к которой привязан товар 3. Из родительской категории (т.е. категории более высокого уровня) 4. Использование в качестве Title названия товара Открываем в php MyAdmin БД сайта и выполняем запрос: ALTER TABLE `oc_category_description` ADD `product_seo_title` VARCHAR(256) NOT NULL; ALTER TABLE `oc_category_description` ADD `product_seo_description` VARCHAR(512) NOT NULL В файле admin/view/template/catalog/category_form.tpl Перед: <tr> <td><?php echo $entry_seo_h1; ?></td> <td><input type="text" name="category_description[<?php echo $language['language_id']; ?>][seo_h1]" maxlength="255" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['seo_h1'] : ''; ?>" /></td> </tr> Добавляем: <tr> <td><?php echo $entry_product_seo_title; ?></td> <td><input type="text" name="category_description[<?php echo $language['language_id']; ?>][product_seo_title]" maxlength="255" size="100" value="<?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['product_seo_title'] : ''; ?>" /></td> </tr> <tr> <td><?php echo $entry_product_seo_description; ?></td> <td><textarea name="category_description[<?php echo $language['language_id']; ?>][product_seo_description]" cols="97" rows="5"><?php echo isset($category_description[$language['language_id']]) ? $category_description[$language['language_id']]['product_seo_description'] : ''; ?></textarea> </tr> В файле admin/model/catalog.php В двух местах вместо: foreach ($data['category_description'] as $language_id => $value) { $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'"); } Добавляем: foreach ($data['category_description'] as $language_id => $value) { $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = '" . (int)$category_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "', meta_keyword = '" . $this->db->escape($value['meta_keyword']) . "', meta_description = '" . $this->db->escape($value['meta_description']) . "', description = '" . $this->db->escape($value['description']) . "', seo_title = '" . $this->db->escape($value['seo_title']) . "', product_seo_title = '" . $this->db->escape($value['product_seo_title']) . "', product_seo_description = '" . $this->db->escape($value['product_seo_description']) . "', seo_h1 = '" . $this->db->escape($value['seo_h1']) . "'"); } Или, если этот код у Вас отличается, просто добавляем в него: product_seo_title = '" . $this->db->escape($value['product_seo_title']) . "', product_seo_description = '" . $this->db->escape($value['product_seo_description']). "', Далее, после: foreach ($query->rows as $result) { $category_description_data[$result['language_id']] = array( 'name' => $result['name'], Добавляем: 'product_seo_title' => $result['product_seo_title'], 'product_seo_description' => $result['product_seo_description'], В файле admin/controller/catalog/category.php После: $this->data['entry_seo_h1'] = $this->language->get('entry_seo_h1'); Добавляем: $this->data['entry_product_seo_title'] = $this->language->get('entry_product_seo_title'); $this->data['entry_product_seo_description'] = $this->language->get('entry_product_seo_description'); В файле admin/language/russian/catalog/category.php Добавляем: $_['entry_product_seo_title'] = 'Meta Title товара:'; $_['entry_product_seo_description'] = 'Meta Description товара:'; В файле catalog/model/catalog/category.php После: public function getCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); return $query->rows; } Добавляем: public function getCategoryParent($category_id) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.parent_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$category_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'"); return $query->row; } В файле catalog/controller/product/product.php Удаляем: $this->document->setDescription($product_info['meta_description']); Вместо: if ($product_info['seo_title']) { $this->document->setTitle($product_info['seo_title']); } else { $this->document->setTitle($product_info['name']); } Добавляем: $product_title = $product_info['name']; $product_price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); $product_category = $category_info['name']; $parent_category = $this->model_catalog_category->getCategoryParent($category_id); $p_product_seo_title = $category_info['product_seo_title']; $p_product_seo_title = $parent_category['product_seo_title']; $product_seo_title = $category_info['product_seo_title']; $seo_old = array("[title]", "[price]", "[category]"); $seo_new = array("$product_title", "$product_price", "$product_category"); $p_product_seo_title = str_replace($seo_old, $seo_new, $p_product_seo_title); $product_seo_title = str_replace($seo_old, $seo_new, $product_seo_title); if ($product_info['seo_title']) { $this->document->setTitle($product_info['seo_title']); } else if ($category_info['product_seo_title']) { $this->document->setTitle($product_seo_title); } else if ($parent_category['product_seo_title']) { $this->document->setTitle($p_product_seo_title); } else { $this->document->setTitle($product_info['name']); } if ($product_info['seo_h1']) { $this->data['heading_title'] = $product_info['seo_h1']; } else { $this->data['heading_title'] = $product_info['name']; } if ($product_info['meta_description']) { $this->document->setDescription($product_info['meta_description']); } else if($category_info['product_seo_description']) { $product_seo_description = $category_info['product_seo_description']; $product_seo_description = str_replace($seo_old, $seo_new, $product_seo_description); $this->document->setDescription($product_seo_description); } else if($parent_category['product_seo_description']) { $p_product_seo_description = $parent_category['product_seo_description']; $p_product_seo_description = str_replace($seo_old, $seo_new, $p_product_seo_description); $this->document->setDescription($p_product_seo_description); }
  9. Тема старая, но очень хочется ответить. Вот пример <a></a> и <input> расположенных рядом. CSS-стили задействованы одинаковые. Можно конечно повозиться с CSS, но добиться 100% визуального соответствия ссылок и инпутов все равно вряд ли получится. Кроссбраузерное решение на примере страницы изменения пароля (account/password.tpl) Добавляем к форме id заменив код <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data"> на <form action="<?php echo $action; ?>" id="<?php echo $action; ?>" method="post" enctype="multipart/form-data"> А инпут <input class="button btn" type="submit" value="<?php echo $button_continue; ?>" /> меняем на ссылку <a class="button btn" onclick="document.getElementById('<?php echo $action; ?>').submit()" ><?php echo $button_continue; ?></a> Результат
  10. Подскажите пожалуйста. На двуязычном сайте (русский + английский) все подписчики получают исключительно письма на русском языке. Непонятно, по какому принципу выполняется рассылка. И как вообще должно быть? Всем по два письма?
  11. Спасибо за пинок и за исправление! Так сложилось, что пришлось воспользоваться еще и чужим ;) Итак, готовое решение. В файле admin/view/template/catalog/product_list.tpl добавляем в ячейку с названием товара (или любую другую) код <br /> <span style="font-size:11px;color:#777;"> <?php echo $product['keyword']; ?> </span> В файле admin/controller/catalog/product.php после $this->data['products'][] = array( 'product_id' => $result['product_id'], 'name' => $result['name'], добавляем 'keyword' => $result['keyword'], В файле admin/model/catalog/product.php вместо $sql = "SELECT p.*, pd.*, m.name as 'm_name' FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)"; вставляем $sql = "SELECT p.*, pd.*, m.name as 'm_name', ua.keyword FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)"; $sql .= " LEFT JOIN " . DB_PREFIX . "url_alias ua ON (query = CONCAT('product_id=', p.product_id))"; Результат - очень удобно и можно визуально определять "шероховатые" ссылки наподобие трех последних :-)
  12. Пришла в голову идея реализовать отображение ЧПУ (seo-url, keyword, url_alias) в списке товаров в админке, а то открывать каждый товар чтобы посмотреть его ЧПУ - это просто каменный век какой-то. В файле admin/view/template/catalog/product_list.tpl добавил в ячейку с названием товара код <br /> <span style="font-size:11px;color:#777;"> <?php echo $product['keyword']; ?> </span> В файле admin/controller/catalog/product.php после $this->data['products'][] = array( 'product_id' => $result['product_id'], 'name' => $result['name'], добавил 'keyword' => $result['url_alias'], В файле admin/model/catalog/product.php после $sql = "SELECT p.*, pd.*, m.name as 'm_name' FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)"; добавил $sql .= " LEFT JOIN " . DB_PREFIX . "url_alias ua ON (query = CONCAT('product_id=', p.product_id))"; Но ничего не получилось. В Opencart привязка ЧПУ к товарам выполняется через сопоставление поля product_id из таблицы product с полем query из таблицы url_alias, в котором данные хранятся не в виде цифры, а в виде строки вида "product_id=XX", а канкотенация в моем запросе, по всей видимости, не работает. Пол дня и почти всю ночь на это убил :ugeek: Люди добрые, помогите написать правильный запрос, думаю, реализация ЧПУ в списке товаров ни для кого не будет лишней.
  13. Если вывести модуль в модальном окне он постоянно выдает ошибку E-mail адрес введен неверно! Вывожу так <a rel="prettyPhoto" id="prettyPhoto" class="btn btn_subscribe" href="#inline-1"><?php echo $text_subscribe?></a> <script type="text/javascript" charset="utf-8"> $(document).ready(function(){ $("a[rel^='prettyPhoto']").prettyPhoto({ show_title: true, default_width: 250, //I have tried playing with these values default_height: 300, //I have tried playing with these values theme: 'pp_default', overlay_gallery: false, social_tools: false }); }); </script> Код в subscribe.tpl обернут в div <div id="inline-1" style="display:none;"> ... </div> Не подскажете в чем может быть причина ошибки?
  14. Так работать не будет. При переходе по ссылке получим ошибку "Неправильная токен-сессия. Авторизуйтесь снова." Чтобы ссылка нормально работала, нужно в файл admin/controller/common/header.php после кода if (!$this->user->isLogged() || !isset($this->request->get['token']) || !isset($this->session->data['token']) || ($this->request->get['token'] != $this->session->data['token'])) { $this->data['logged'] = ''; $this->data['home'] = $this->url->link('common/login', '', 'SSL'); } else { добавить строку вида (на примере модуля featured) $this->data['featured'] = $this->url->link('module/featured', 'token=' . $this->session->data['token'], 'SSL'); а в файл admin/view/template/common/header.tpl <li><a href="<?php echo $featured ?>">Модуль "Рекомендуемые товары"</a></li>
×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.