Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Yoda

Користувачі
  • Публікації

    3 172
  • З нами

  • Відвідування

Усі публікації користувача Yoda

  1. находишь вот этот файл catalog/view/theme/default/template/module/slideshow.tpl Видишь там такой вот код <script type="text/javascript"><!-- $(document).ready(function() { $('#slideshow<?php echo $module; ?>').nivoSlider( ); }); --></script> и меняешь его на <script type="text/javascript"><!-- $(document).ready(function() { $('#slideshow<?php echo $module; ?>').nivoSlider( animSpeed:200, pauseTime:3000 ); }); --></script> Я думаю что такое анимспид и паузтайм не надо рассказывать ?
  2. 1. зачем обновляться сразу на рабочей версии, если можно поставить денвер и всех прусаков погонять по домашнему без ущерба для производства. 1.1 По поводу мануалов и трудностей, к счастью, разработка нормального магазина - это не скачал скрипт, подтыкнул ему шабл и готово - это кропотливая работа в течении 2-3 месяцев нескольких человек.... Вы же хотите и рыбку и сами знаете. Мануал, я подозреваю просто невозможно написать, потому что все "Умные вопросы учесть просто невозможно". Даже по опыту работы с разными клиентами ,могу сказать что кто-то налету начинает наполнять товары и не задает лишних вопросов, а кто то просит мануал на заполнение товаров...и так далее и так далее.... Если хотите избежать подобных моему ответов, php.su вам в зубы и вперед, потому что, те люди которые вам ответят грамотно на ваши вопросы 100% грызли его в свое время, так что подобные канючки типа "не задрачивайте" - не уместны. Задрачивать будут 1.2 За прошедший месяц мы обновили 5 магазинов. Обновление прошло на ура, даже удалось перенести опции атрибутов фильтра. так что скорее всего вам нужно сделать откат и провести процедуру заново, внимательно придерживаясь директив. 2. 3. 4. 5. 6. Когда описываете какие то проблемы, тут телепатов нет. Вряд ли кто то сможет понять по вашему описанию где и что и как у вас не выводится и не работает, наверное намного проще понять либо на скриншотах либо на примерах ссылок. И да пребудет с вами сила.
  3. Ну если совсем топопром вносить изменения, то просто можно существующему слайдеру задать меньшую ширину в настройках модуля слайдер. Решение крайне некорректное, но работать будет На Ура
  4. вот так как здесь http://molotochek.com.ua/ , только с автопрокруткой ?
  5. Не факт что поможет, магазин то стоит русский, соответственно все тексты берутся для русской локали, вполне может быть что шаблон криво написан и в tpl файле просто прописано мясом (add to cart) надо посмотреть вот этот файлы. /catalog/view/theme/(ТВОЙ ШАБЛОН)/template/product/category.php и /catalog/view/theme/(ТВОЙ ШАБЛОН)/template/product/product.php вылей их куда нить в файлообменник и дай сюда ссылки.
  6. дай адрес сайта сначала. Может быть у тебя там надпись на кнопке картинкой, тебе надо будет ее перерисовать... вобщем больного надо видеть!
  7. автор поста я так понимаю новичек совсем, поэтому надо бы писать сразу прямые ссылки где это находится, а то он еще не найдет на форуме... Как только он переставит норм версию, то ему не придется их править, а если уж надо будет, то смотреть здесь cataloglanguagerussian
  8. У вас видимо стоит английская сборка магазина, потому что в русской локализации надпись на кнопке нормальная!
  9. находишь файл catalogcontrollerproductcategory.php находишь там вот такой вот код $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => utf8_truncate(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 400, ' …', true), 'price' => $price, 'special' => $special, 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id']) ); и меняешь его на $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'model' => $result['model'], 'description' => utf8_truncate(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 400, ' …', true), 'price' => $price, 'special' => $special, 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id']) ); После этого открываешь catalogviewthemedefaulttemplateproductcategory.php находишь там строку <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div> и меняешь на <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?><br/><?php echo $product['model']; ?></a></div> КАЙФУЕШЬ! ПЕРЕД ТЕМ КАК ДЕЛАТЬ, СДЕЛАЙ БЕКАПЫ!
  10. зачем вам дизайн ? www.yoursite.com/price.xls и вся торговля!

  11. Какая версия движка? Есть поделочка на 1.5.3 при доработке в одну строку - будет решать ваши задачи! И еще есть чудесный модуль http://spotonsolutions.net/layered-navigation
  12. Ну вот - как бе уже лучше... Я просто бегло просмотрел контроллер и скрипт, и не отслеживал логику проверки количества...
  13. Прикручивал к этому модулю оплату сбербанком, так как он глобально подменяет контроллеры. отвечающие за оформление заказа, в чистом виде сбербанк работать как надо отказывался, после получения напильника все завелось. Даже кнопку распечатать счет прикрутил. Если у кого возникнут вопросы - стучите, расскажу детали.
  14. +100500Тут даже не вопрос по дизайну или нет, а вопрос в том что концепция верстки дефолтного шаблона, подразумевает, то что левая и правая колонка хочешь, не хочешь отталкиваются от шапки. И чтобы вносить подобные правки с растягиванием шаблона, изначально надо понимать что придется их также вносить в структуру основных блоков. А для этого не всегда хватит навыков править в стилях цвет текста firebugом.
  15. здоровенный магазззь моей мечты!

  16. если у вас правая колонка будет использоваться только на главной - то поменять вот этот стиль #column-right добавив margin-top: 312px Второй вариант - назначить дополнительный класс блоку с правой колонкой в шаблоне common/home.tpl и назначить этому классу опять же margin-top: 312px
  17. Вам нужно переделать структуру категорий и сделать две основные родительские как сказал выше уважаемый Снастик.После этого раскрыть уже освоенным методом с использованием стиля (display: block;) -это кстати не условие )))). а стиль. И таки да.. придется править tpl, в которой нужно убрать заголовок, и переназначить стили заголовка блокам категориям верхнего уровня.
  18. Комментарий ни о чем, я бы попросил вас либо раскрыть тему, либо не умничать.
  19. в 1,5,3 За добавления товара в корзину и категории отвечает вот эта функция в common.js function addToCart(product_id) { $.ajax({ url: 'index.php?route=checkout/cart/update', type: 'post', data: 'product_id=' + product_id, dataType: 'json', success: function(json) { $('.success, .warning, .attention, .information, .error').remove(); if (json['redirect']) { location = json['redirect']; } if (json['error']) { if (json['error']['warning']) { $('#notification').html('<div class="warning" style="display: none;">' + json['error']['warning'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>'); $('.warning').fadeIn('slow'); $('html, body').animate({ scrollTop: 0 }, 'slow'); } } if (json['success']) { $('#notification').html('<div class="success" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>'); $('.success').fadeIn('slow'); $('#cart_total').html(json['total']); $('html, body').animate({ scrollTop: 0 }, 'slow'); } } }); } Соответственно чтобы добавить количество тебе надо передать в запрос кроме вот этого data: 'product_id=' + product_id, еще и '&quantity=' + quantity Где переменная quantity - как раз и будет количеством. Это можно реализовать достаточно просто, добавив элемент "input" после кнопки купить к каждому товару и присваивая значения переменной quantity через селектор .next к примеру. Но могут возникнуть непредвиденные осложнения у больного, так как при этом нет проверки наличия на складе достаточного количества товара! Т.е. проверку тоже надо дописывать.
  20. для версии 0.2 Дополнение. Добавил кнопку отменить, и сделал активацию поля формы редактирования по клику на текстовый блок. Поле в шаблоне меняем вот на это! <td> <div id="<?php echo $product['product_id']; ?>" class="inlineEdit"><?php echo $product['price']; ?></div> </td> А скрипт меняем на этот: <script type="text/javascript"><!-- $(document).ready(function() { $('input[name=\'status\']').change(function() { $.post('index.php?route=catalog/product/status&token=<?php echo $token; ?>', 'status=' + ($(this).attr('checked') ? '1' : '0') + '&product_id=' + $(this).val()); var text = $(this).next().text() == 'Отключено' ? 'Включено' : 'Отключено'; $(this).next().text(text); }); }); $(".inlineEdit").bind("click", updateText); function updateText() { $(this).removeClass("inlineEdit"); OrigText = $(this).html(); OrigId = $(this).attr("id"); Save = '<a class="save">Сохранить</a> '; Revert= '<a class="revert">Отменить</a>' $(this).addClass("selected").html('<input type="text" name="price" value=' + OrigText + ' size="10" id="price' + OrigId + '" /><br/>' + Save + Revert).unbind('click', updateText); }; $(".revert").live("click", function () { $(this).parent().html(OrigText).removeClass("selected").bind("click", updateText); }); $(".save").live("click", function updatePrice(product_id) { var price = $('#price' + OrigId).val(); $.post('index.php?route=catalog/product/price&token=<?php echo $token; ?>', 'price=' + price + '&product_id=' + OrigId); alert('Цена успешно изменена. Новая цена:' + price); $(this).parent().html(price).removeClass("selected").bind("click", updateText); }); //--></script> И не забываем вносить изменения в контроллер! admin\controller\catalog\product.php
  21. Когда в Price.ua, в который я экспортировал товары через модуль яндекс-маркета у меня полбюджета съели переходы на дешевые товары, конверсия от которых не перекрывала стоимость этих переходов, возникла задача выключать из выдачи в фид неконкурентные по цене, или по иным параметрам товары. За два часа работы напильником вот что вышло. Так как движок мне достался уже с большим кол-вом допилов и изменений. Привожу последовательность действий с детальным описанием. Файлы выкладывать бесполезно - ибо пиленные. ШАГ 0 - САМЫЙ ГЛАВНЫЙ СДЕЛАЙТЕ БЕКАПЫ РЕДАКТИРУЕМЫХ ФАЙЛОВ! Шаг 1. Нам необходимо добавить в базе данных ключ по которому будет определятся отображение товара в ленте. Заходим в базу и добавляем в таблицу oc_product поле xml_status. для этого логинимся в mysql и выполняем команду ALTER TABLE `oc_product` ADD `xml_status` TINYINT( 1 ) DEFAULT '1' NOT NULL Шаг 2. Открываем admin\catalog\model\catalog\product.php Находим Public function addProduct($data) { $this->db->query("INSERT INTO " . DB_PREFIX . "product (model, sku, location, quantity, minimum, subtract, stock_status_id, date_available, manufacturer_id, shipping, price, cost, weight, weight_class_id, length, width, height, length_class_id, status, tax_class_id, sort_order, date_added, main_category_id) VALUES ('" . $this->db->escape($data['model']) . "', '" . $this->db->escape($data['sku']) . "', '" . $this->db->escape($data['location']) . "', '" . (int)$data['quantity'] . "', '" . (int)$data['minimum'] . "', '" . (int)$data['subtract'] . "', '" . (int)$data['stock_status_id'] . "', '" . $this->db->escape($data['date_available']) . "', '" . (int)$data['manufacturer_id'] . "', '" . (int)$data['shipping'] . "', '" . (float)$data['price'] . "', '" . (float)$data['cost'] . "', '" . (float)$data['weight'] . "', '" . (int)$data['weight_class_id'] . "', '" . (float)$data['length'] . "', '" . (float)$data['width'] . "', '" . (float)$data['height'] . "', '" . (int)$data['length_class_id'] . "', '" . (int)$data['status'] . "', '" . (int)$data['tax_class_id'] . "', '" . (int)$data['sort_order'] . "', NOW(), " . ((int)$data['main_category_id'] > 0 ? (int)$data['main_category_id'] : 'NULL') . ")"); Меняем на: Public function addProduct($data) { $this->db->query("INSERT INTO " . DB_PREFIX . "product (model, sku, location, quantity, minimum, subtract, stock_status_id, date_available, manufacturer_id, shipping, price, cost, weight, weight_class_id, length, width, height, length_class_id, status, tax_class_id, sort_order, date_added, main_category_id) VALUES ('" . $this->db->escape($data['model']) . "', '" . $this->db->escape($data['sku']) . "', '" . $this->db->escape($data['location']) . "', '" . (int)$data['quantity'] . "', '" . (int)$data['minimum'] . "', '" . (int)$data['subtract'] . "', '" . (int)$data['stock_status_id'] . "', '" . $this->db->escape($data['date_available']) . "', '" . (int)$data['manufacturer_id'] . "', '" . (int)$data['shipping'] . "', '" . (float)$data['price'] . "', '" . (float)$data['cost'] . "', '" . (float)$data['weight'] . "', '" . (int)$data['weight_class_id'] . "', '" . (float)$data['length'] . "', '" . (float)$data['width'] . "', '" . (float)$data['height'] . "', '" . (int)$data['length_class_id'] . "', '" . (int)$data['status'] . "', '" . (int)$data['tax_class_id'] . "', '" . (int)$data['sort_order'] . "', NOW(), " . ((int)$data['main_category_id'] > 0 ? (int)$data['main_category_id'] : 'NULL') . ",'1'". ")"); Идем дальше, находим $this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', cost = '" . (float)$data['cost'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW(), main_category_id = " . ((int)$data['main_category_id'] > 0 ? (int)$data['main_category_id'] : 'NULL') . " WHERE product_id = '" . (int)$product_id . "'"); Меняем на public function editProduct($product_id, $data) { $this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', cost = '" . (float)$data['cost'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id']. "', xml_status = '" . (int)$data['xml_status'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW(), main_category_id = " . ((int)$data['main_category_id'] > 0 ? (int)$data['main_category_id'] : 'NULL') . " WHERE product_id = '" . (int)$product_id . "'"); Идем еще дальше в районе строки 305 находим: $data['status'] = '0'; дописываем после: $data['xml_status'] = '1'; Спускаемся еще ниже находим функцию public function changeStatusProducts($products, $status) { После нее добавляем точно такую же, только для статуса XML. public function changeXMLStatusProducts($products, $xml_status) { function check_int($a) { return (int)$a; } $arr_products = array_map('check_int', $products); $products = implode("' OR product_id = '", $arr_products); $this->db->query("UPDATE " . DB_PREFIX . "product SET xml_status = '" . (int)(bool)$xml_status . "' WHERE product_id = '" . $products . "'"); } C Моделью закончено. Шаг 3. Открываем admin\controller\catalog\product.php Теперь переходим к контроллеру. Находим $this->data['products'][] = array( 'product_id' => $result['product_id'], 'name' => $result['name'], 'model' => $result['model'], 'price' => $result['price'], 'special' => $special['price'], 'image' => $image, 'quantity' => $result['quantity'], 'status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')), Добавляем после: 'xml_status' => ($result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')), Копируем вот это: if (isset($this->request->post['status'])) { $this->data['status'] = $this->request->post['status']; } else if (isset($product_info)) { $this->data['status'] = $product_info['status']; } else { $this->data['status'] = 1; } Меняя на: if (isset($this->request->post['xml_status'])) { $this->data['xml_status'] = $this->request->post['xml_status']; } else if (isset($product_info)) { $this->data['xml_status'] = $product_info['xml_status']; } else { $this->data['xml_status'] = 1; } Шаг 4. Теперь переходим к шаблону карточки товара. admin\view\template\catalog\product_form.tpl и после <tr> <td><?php echo $entry_status; ?></td> <td><select name="status"> <?php if ($status) { ?> <option value="1" selected="selected"><?php echo $text_enabled; ?></option> <option value="0"><?php echo $text_disabled; ?></option> <?php } else { ?> <option value="1"><?php echo $text_enabled; ?></option> <option value="0" selected="selected"><?php echo $text_disabled; ?></option> <?php } ?> </select></td> </tr> Добавляем <tr> <td><?php echo 'xml_status' ?></td> <td><select name="xml_status"> <?php if ($xml_status) { ?> <option value="1" selected="selected"><?php echo $text_enabled; ?></option> <option value="0"><?php echo $text_disabled; ?></option> <?php } else { ?> <option value="1"><?php echo $text_enabled; ?></option> <option value="0" selected="selected"><?php echo $text_disabled; ?></option> <?php } ?> </select></td> </tr> В силу врожденной лени мне было неохота еще делать дописку в языковой файл, но если кто хочет, может поменять <td><?php echo 'xml_status' ?></td> на <td><?php echo $xml_status; ?></td>, добавив соответствующую строку в языковом файле! И последний штрих идем в \catalog\model\export\ Открываем yandex_market.php и добавляем условие проверки статуса вывода товара в ленте. Меняя всю функцию getProduct на public function getProduct($in_stock = true, $vendor_required = true) { $query = $this->db->query("SELECT p.*, pd.name, pd.description, m.name AS manufacturer, IFNULL(p.main_category_id, p2c.category_id) AS category_id FROM " . DB_PREFIX . "product p JOIN " . DB_PREFIX . "product_to_category AS p2c ON (p.product_id = p2c.product_id) " . ($vendor_required ? '' : 'LEFT ') . "JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.date_available <= NOW() AND p.status = '1' AND p.xml_status = '1' " . ($in_stock ? " AND p.quantity > '0'" : '') . " GROUP BY p.product_id"); Потом можно зайти в базу и sql-запросами быренько поставить массово статусы например вот так UPDATE `oc_product` SET `xml_status`=1 UPDATE `oc_product` SET `xml_status`=0 WHERE `price`<300 Выключаем все товары, цена которых ниже 300 или выключить все товары определенной категории UPDATE `oc_product` SET `xml_status`=0 WHERE `main_category_id`=1 в планах сделать дописку, чтобы это можно было делать на-лету из админки. Но, так как, дописка нужна была в экстренном порядке и полностью на сегодня реализует необходимые мне функции пока руки не дошли. Необессудьте за сумбурность, по всем вопросам пишите в личку.
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.