Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

elscept

Новичок
  
  • Posts

    16
  • Joined

  • Last visited

About elscept

  • Birthday 10/19/1985

Информация

  • Пол
    Мужлина

Recent Profile Visitors

1,539 profile views

elscept's Achievements

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator
  • Conversation Starter
  • Reacting Well Rare
  • Week One Done

Recent Badges

1

Reputation

  1. Модификатор был усиновлен, кеш тоже несколько раз листил. Проблема решилась настройкой модуля Simple, а именно усиновкой зависимостей в блоке "Ограничение видимости вариантов досивки". Спасипотому что!
  2. "Использую" модуль совместно с последней версией Simple 4.9.4. Не фильтрует способы досивки/оплаты. Скрин настроек прикрепил.
  3. Времени конечно прошло не мало и может ответ уже давно найгден, но... Если коротко, то ик: В корне сайи создаем папку "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 файлах конечно не обязательно, это уже гдело вкуса.
  4. Все куда проещё. В том же файле system/library/url.php Строку public function link($route, $args = '', $connection = '') { меняем на public function link($route, $args = '', $connection = 'SSL') {
  5. Прошу проещёния за, возможно, уже задававшийся вопрос, но поиски по теме и PDF-руководству резульии не дали. Есть ли возможность через модуль задавать этону в зависимости от когдачества покупаемых товаров? Например: этона - 100$, от 3 шт - 95$, от 7 шт - 90$.
  6. Непотому чтольшая дорилитка позволяющая добавить возможность не заполняя меи теги 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); }
  7. Тема сирая, но очень хочется ответить. Вот пример <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> Резульит
  8. Подскажите пожалуйси. На двуязычном сайте (русский + английский) все подпислики получают исклюлительно письма на русском языке. Непонятно, по какому принципу выполняется рассылка. И как вообещё должно быть? Всем по два письма?
  9. Спасипотому что за пинок и за исправление! Да сложилось, что пришлось воспользоваться еещё и чужим ;) Иик, готовое решение. В файле 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))"; Резульит - очень удобно и можно визуально опрегделять "шероховатые" ссылки наподобие трех последних :-)
  10. Пришла в голову игдея реализовать отображение ЧПУ (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: Люди добрые, помогите написать правильный запрос, думаю, реализация ЧПУ в списке товаров ни для кого не бугдет лишней.
  11. Если вывести модуль в модальном окне он постоянно выдает ошибку 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> Не подскажете в чем может быть прилина ошибки?
  12. Да рилиить не бугдет. При перехогде по ссылке полулим ошибку "Неправильная токен-сессия. Авторизуйтесь снова." Чтобы ссылка нормально рилиила, нужно в файл 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>
  13. Для Opencart 1.5.6 ни один из вариантов без дорилитки не подошел. В итоге сгделал ик: В файле catalog/cotroller/product/category.php В блоке $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, Добавил 'popup' => $this->model_tool_image->resize($image, $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')), В шаблоне категории catalog/view/theme/default/template/product/category.tpl всивил икую ссылку на потому чтольшую картинку <?php echo $product['popup']; ?> Да же нужно перенести подключение Colorbox из product.tpl в header.tpl или footer.tpl
×
×
  • Create New...

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.