ipdesign
Newbie-
Posts
36 -
Joined
-
Last visited
Content Type
Profiles
Forums
Marketplace
Articles
FAQ
Our New
Store
Blogs
module__dplus_manager
Everything posted by ipdesign
-
Подскажите, модуль работает нормально, но после применения любого фильтра сбивается стиль отображения товаров в контейнере вывода товаров (меняется кнопка купить, появляется слайдер по вертикали) как исправить? UPD. Исправил сам. Потребовалось изменить файл filterpro_products.tpl согласно своей темы
-
Разобрался
-
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
По-моему макросы - это отличное решение, у самого несколько своих таблиц, которые через макросы вывожу. А что таймлимит? -
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
Также заметил одну неприятную закономерность - после удачного импорта товаров (как правило добавление новых) товары, которые попадают на главную в разделе "Последние поступления" нельзя добавить в корзину по нажатию на кнопку "Купить", сообщение, что товар добавлен в корзину появляется, но в самой корзине товаров нет и они туда не добавляются...на странице категорий и в карточке товара все ОК. И самое интересное, что если зайти в такой товар через админку и ничего в нём не меняя, а просто нажать "Сохранить", то на главной все становится нормально и товар в корзину добавляется. Что за баг и как с ним бороться? -
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
С экспортом проблем до сегодня не было. Но сегодня экспорт не прошел, а вместо файла показал такое предупреждение: Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/techn186/public_html/admin/controller/module/csvprice_pro.php on line602_CATEGORY_ID_;_ID_;_MAIN_CATEGORY_;_NAME_;_MODEL_;_SKU_;_MANUFACTURER_;_SHIPPING_;_LOCATION_;_PRICE_;_QUANTITY_;_STOCK_STATUS_ID_;_HTML_TITLE_;_HTML_H1_;_DESCRIPTION_;_IMAGE_;_SORT_ORDER_;_STATUS_;_IMAGES_ 6,9,14,9;1;������������;"�����-������� Cooper & Hunter CH-S07LH/R2_555";10001;;"Cooper & Hunter";1;;356.00;0;5;"��������-������� ��������: �����-������� Cooper & Hunter CH-S07LH/R2. ������ �����-������� Cooper & Hunter CH-S07LH/R2 � ��������, ��������� ������� ��������, ��������������, ������.";"�����-������� Cooper & Hunter CH-S07LH/R2";" � ���������� hi-tech ������. ������ 730 ��; � �������������� ������, ��������� ����� ����� ������ ��������� � ������ ��������������� ������������� ������� SWING. ������ ��������� ��������� ��������� ������ �� ���������, ���������� � ������ ��; Честно говоря я до конца не понимаю что это, но в 602-й строке поменял // Check Coding Windows-1251 not for large file if($config['csv_export']['file_encoding'] == 'WINDOWS-1251') { $output = @iconv( 'UTF-8', "WINDOWS-1251//IGNORE", $output); } на: // Check Coding Windows-1251 not for large file if($config['csv_export']['file_encoding'] == 'WINDOWS-1251') { $output = @iconv( 'UTF-8', "WINDOWS-1251//TRANSLIT", $output); } и все заработало. Подскажите верны ли мои действия? может это кривой метод и нужно как-то по другому? -
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
Дык, а с помощью макроса, там можно выбрать minimal -
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
Методом научного тыка пришёл к тому, что экспорт не работал с включенным режимом обслуживания :ph34r: Кроме того выставил max_execution_time = 600 везде где только можно, включая php.ini на сервере и в каталогах движка, а также в файле .htaccess Пока полёт нормальный, тестирую. -
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
У меня получается тоже выдает 404, решили как-нибудь проблему? Ждем автора или может кто-то компетентен в этом вопросе? -
[Решено] Ошибка при генерации yml-файла для Яндекс-Маркет
ipdesign replied to ipdesign's topic in Модули обмена данными
Нашел модуль на этом форуме выгрузки в Яндекс маркет, обновил и все. -
Модуль CSV Price Pro import/export [Поддержка]
ipdesign replied to costas's topic in Модули обмена данными
Добрый день! Только что купил ваш модуль, пробую сделать экспорт на Денвере получаю ошибку: Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\testing\www\system\database\mysql.php on line 22 В чем может быть проблема? Поменял в \admin\php.ini max_execution_time = 600; Все равно такая же ошибка Maximum execution time of 30 seconds UPD Попробовал поставить на экспорт только поле NAME и ограничил лимит до 20 файлов из одной только категории - Веб страница недоступна... -
Что я могу сказать.... Купил я этот фильтр еще в Апреле 2012 еще на версии 2.3.0 и пользуюсь до сих пор, сейчас установил 2.7.0 и за это время фильтр очень сильно изменился, Simon обеспечивает хорошую поддержку и активно откликается на проблемы связанные с его скриптом. Несколько обновлений было сделано благодаря моей занудности. По сути фильтр достаточно мощный и позволяет сделать отбор товаров не только по атрибутам, цене и производителю, так и по опциям, тегам и наличию на складе. Удобная и понятная админка. Основная проблема была в работе фильтра - это не корректная работа на страницах отличных от первой в категории (пагинация), но теперь все отлично работает. Купил я его потому, что на то время это был действительно готовый рабочий модуль, а не костыли и грабли, которые предлагались здесь и на других форумах, ни в коем случае я не хочу обидеть никого из разработчиков, но исходя из требований на моем сайте этот подходил лучше всего и стабильно работал. Пережил я с ним несколько проблем, а разработчик только помогал мне их исправлять. В общем мой опыт использования данного модуля может оценить его только положительно. Он стоит своих 45$ для тех кто сам не пишет код и кому нужно много настраиваемых функций скрипта. For Simon: Thanks for your great filter! Glad to see you here! Good luck to you in the development of the module and the recognition on this forum! Vladimir.
-
Краткое описание товара
ipdesign replied to SlavkaWM's topic in Шаблони, дизайн та оформлення магазину
Всем привет! Подскажите, плиз, люди добрые и умнее меня) Каким макаром можно запретить в коротком описании выводить стили css? т.к. менеджеры копипастят описания из браузера прямо в редактор, а некоторые нехорошие сайты не выносят в отдельный файл свои стили откуда берется описание.... В общем и получается краткое описание вот такого вида: Вот подобного рода куски кода мешают жить: <style type="text/css">table{border-collapse: collapse; }td, th{padding: 5px; border: 1px solid black;}</style> В полном описании все нормально и там меня ничего не волнует, только короткое. Что можно выдумать и вставить в эту строку, ну или где-то в этой конструкции? 'description' => utf8_truncate(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 250, ' …', true), Буду весьма благодарен за помощь! -
[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!
ipdesign replied to aincoder's topic in Загальні питання
Проблема абсолютно не в добавлении новой вкладки. Проблема в невнимательности. У тебя во вкладке "Сопутствующие товары" кнопка "Купить" не обернута в тег <span>. Сделай вот так: <a onclick="addToCart('410');" class="button"><span>Купить</span></a> и будет тебе счастье;) -
[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!
ipdesign replied to aincoder's topic in Загальні питання
ОК, спасибо за наводку, будет время посмотрю обязательно. На моем шаблоне проблем вообще не возникало - все работает как часы. -
Это сортировка атрибутов в админке. Работает. А как сделать такую же сортировку в самой карточке товара?
-
Та же проблема! Подскажите где копать? есть может уже решение, кто сталкивался?
-
[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!
ipdesign replied to aincoder's topic in Загальні питання
Размер изображения товара берется из настроек админки (Система - Настройки - Изображения): Сейчас у нас размеры берутся из поля, выделенного красным, а мы попытаемся добавить новое поле (выделено зеленым и по умолчанию его нет) и выводить в наш блок. Идем в файл mydomainwwwadminviewtemplatesettingstore_form.tpl Находим блок <div id="tab-image"> а в нём поля таблицы: <tr> <td><span class="required">*</span> <?php echo $entry_image_related; ?></td> <td><input type="text" name="config_image_related_width" value="<?php echo $config_image_related_width; ?>" size="3" /> x <input type="text" name="config_image_related_height" value="<?php echo $config_image_related_height; ?>" size="3" /> <?php if ($error_image_related) { ?> <span class="error"><?php echo $error_image_related; ?></span> <?php } ?></td> </tr> Копируем, вставляем за ним же и меняем <?php echo $entry_image_related; ?> на <?php echo $entry_image_related2; ?>, а также все config_image_related_width и config_image_related_height на config_image_related_width2 и config_image_related_height2Теперь в файл mydomainwwwadminlanguagerussiansettingsetting.php и добавим строчку $_['entry_image_related2'] = 'Размер изображения аксессуаров к товару:'; Дальше правим файл mydomainwwwadmincontrollersettingsetting.php Находим строчку $this->data['entry_image_related'] = $this->language->get('entry_image_related'); За ней вставляем: $this->data['entry_image_related2'] = $this->language->get('entry_image_related2'); Так же ищем if (isset($this->request->post['config_image_related_width'])) { $this->data['config_image_related_width'] = $this->request->post['config_image_related_width']; } else { $this->data['config_image_related_width'] = $this->config->get('config_image_related_width'); } if (isset($this->request->post['config_image_related_height'])) { $this->data['config_image_related_height'] = $this->request->post['config_image_related_height']; } else { $this->data['config_image_related_height'] = $this->config->get('config_image_related_height'); } За ним вставляем с добавленными "двоечками" if (isset($this->request->post['config_image_related_width2'])) { $this->data['config_image_related_width2'] = $this->request->post['config_image_related_width2']; } else { $this->data['config_image_related_width2'] = $this->config->get('config_image_related_width2'); } if (isset($this->request->post['config_image_related_height2'])) { $this->data['config_image_related_height2'] = $this->request->post['config_image_related_height2']; } else { $this->data['config_image_related_height2'] = $this->config->get('config_image_related_height2'); } Ищем if (!$this->request->post['config_image_related_width'] || !$this->request->post['config_image_related_height']) { $this->error['image_related'] = $this->language->get('error_image_related'); } За ним вставляем if (!$this->request->post['config_image_related_width2'] || !$this->request->post['config_image_related_height2']) { $this->error['image_related'] = $this->language->get('error_image_related'); } Ну, и наконец возвращаемся к файлу mydomainwwwcatalogcontrollerproductproduct.php Отыскиваем наш кусок кода и добавляем "2" к config_image_related_width и config_image_related_height $results = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width2'), $this->config->get('config_image_related_height2')); } else { $image = false; } Все теперь можно идти пить пиво! :-) P.S. Firebug + TotalCommander + Notepad++ - пользуйтесь и будет вам счастье! -
[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!
ipdesign replied to aincoder's topic in Загальні питання
Переходим к фронт-енду... Теперь нам нужно отобразить на сайте то, что мы научили админку записывать в базу данных. Итак, переходим в файл mydomainwwwcatalogviewthemedefaulttemplateproductproduct.tpl, где default - папка с вашим шаблоном Находим блок <div id="tabs" class="htabs"> это блок в дефолтном шаблоне с вкладками "Описание", "Характеристики", "Отзывы" и т.д., в других шаблонах это название (id div'a) может быть другим. Если вы хотите добавить выводимые товары во вкладке, тогда Вам нужно создать якорь-ссылку по типу существующей <a href="#tab-related2"><?php echo $tab_related2; ?> (<?php echo count($products2); ?>)</a>, где <?php echo $tab_related; ?> - это название вкладки, тут вообще вместо этого можно просто написать "Аксессуары" например, а (<?php echo count($products); ?>) - это счетчик количества в скобках, тоже, если это нужно. И создать(скопировать) блок: <?php if ($products2) { ?> <!--проверям есть, ли массив товаров и выводим содержимое--> <div id="tab-related2" class="tab-content"><!--название блока, как названия якоря--> <div class="box-product"> <?php foreach ($products2 as $product) { ?> <div> <?php if ($product['thumb']) { ?> <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" /></a></div> <?php } ?> <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div> <?php if ($product['price']) { ?> <div class="price"> <?php if (!$product['special']) { ?> <?php echo $product['price']; ?> <?php } else { ?> <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span> <?php } ?> </div> <?php } ?> <a onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button"><?php echo $button_cart; ?></a></div> <?php } ?> </div> </div> <?php } ?> Если вы не хотите выводить во вкладке, а например нижевыше, то просто вставляем последний блок в нужном месте страницы и не создаем якорей. Идем дальше в файл mydomainwwwcatalogcontrollerproductproduct.php Вставляем код обозначения переменной имени вкладки из языкового файла после $this->data['tab_related'] = $this->language->get('tab_related'); $this->data['tab_related2'] = $this->language->get('tab_related2'); Ищем код $this->data['products'] = array(); копируем его и все остальное до $this->data['tags'] = array(); и вставляем также до $this->data['tags'] = array();Меняем на наши имена имя массива 'products' я просто опять добавил "2" и getProductRelated на getProductRelated2, ниже мой код: $this->data['products2'] = array(); $results = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $this->data['products2'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'price' => $price, 'special' => $special, 'rating' => $rating, 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), ); } Обратите внимание на 'config_image_related_width' и 'config_image_related_height' - это размеры изображения товара из настроек изображений в админке, но к этому мы вернемся позже. Сразу перейдем к файлу mydomainwwwcataloglanguagerussianproductproduct.php и добавим строчку $_['tab_related2'] = 'Аксессуары'; Далее к файлу mydomainwwwcatalogmodelcatalogproduct.php Находим код: public function getProductRelated($product_id) { $product_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); foreach ($query->rows as $result) { $product_data[$result['related_id']] = $this->getProduct($result['related_id']); и } копируем, вставляем за ним же и меняем в скопированном куске getProductRelated на getProductRelated2 и "product_related pr LEFT JOIN " на "product_related2 pr LEFT JOIN " Все, теперь у нас все работает! -
[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!
ipdesign replied to aincoder's topic in Загальні питання
Итак, все по порядку: Для начала необходимо создать новую таблицу в базе данных MySQL, я просто скопировал уже существующую product_related, сделать это можно в phpMyadmin (выбираем необходимую таблицу -> Операции -> Скопировать таблицу, здесь указываем имя новой таблицы и жмём ОК. дальше переходим к файлу mydomainwwwadminviewtemplatecatalogproduct_form.tpl Находим блок <div id="tab-links">, а внутри него таблицу : <tr> <td><?php echo $entry_related; ?></td> <td><input type="text" name="related" value="" /></td> </tr> <tr> <td> </td> <td><div id="product-related" class="scrollbox"> <?php $class = 'odd'; ?> <?php foreach ($product_related as $product_related) { ?> <?php $class = ($class == 'even' ? 'odd' : 'even'); ?> <div id="product-related<?php echo $product_related['product_id']; ?>" class="<?php echo $class; ?>"> <?php echo $product_related['name']; ?><img src="view/image/delete.png" /> <input type="hidden" name="product_related[]" value="<?php echo $product_related['product_id']; ?>" /> </div> <?php } ?> </div></td> </tr> <tr>Копируем её и вставляем после этого же кода.Далее в этом куске кода нужно переименовать все переменные ($entry_related), названия инпутов ("related", "product_related[]") и div' ов (product-related), я велосипед не выдумывал и просто добавлял на конце цифру "2", вы же можете, да и лучше назвать их более понятней по смыслу. Вот мой код: <tr> <td><?php echo $entry_related2; ?></td> <td><input type="text" name="related2" value="" /></td> </tr> <tr> <td> </td> <td><div id="product-related2" class="scrollbox"> <?php $class = 'odd'; ?> <?php foreach ($product_related2 as $product_related2) { ?> <?php $class = ($class == 'even' ? 'odd' : 'even'); ?> <div id="product-related2<?php echo $product_related2['product_id']; ?>" class="<?php echo $class; ?>"> <?php echo $product_related2['name']; ?><img src="view/image/delete.png" /> <input type="hidden" name="product_related2[]" value="<?php echo $product_related2['product_id']; ?>" /> </div> <?php } ?> </div></td> </tr>Дальше в этом же файле необходимо найти javascript отвечающий за добавление из инпута ввода товара, в скроллбокс, этот скрипт почти в самом конце кода. И также переименовать по смылслу все переменные, ниже вся конструкция моего скрипта: <script type="text/javascript"><!-- $('input[name='related']').autocomplete({ delay: 0, source: function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request.term), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item.name, value: item.product_id } })); } }); }, select: function(event, ui) { $('#product-related' + ui.item.value).remove(); $('#product-related').append('<div id="product-related' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" name="product_related[]" value="' + ui.item.value + '" /></div>'); $('#product-related div:odd').attr('class', 'odd'); $('#product-related div:even').attr('class', 'even'); return false; } }); $('#product-related div img').live('click', function() { $(this).parent().remove(); $('#product-related div:odd').attr('class', 'odd'); $('#product-related div:even').attr('class', 'even'); }); $('input[name='related2']').autocomplete({ delay: 0, source: function(request, response) { $.ajax({ url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request.term), dataType: 'json', success: function(json) { response($.map(json, function(item) { return { label: item.name, value: item.product_id } })); } }); }, select: function(event, ui) { $('#product-related2' + ui.item.value).remove(); $('#product-related2').append('<div id="product-related2' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" name="product_related2[]" value="' + ui.item.value + '" /></div>'); $('#product-related2 div:odd').attr('class', 'odd'); $('#product-related2 div:even').attr('class', 'even'); return false; } }); $('#product-related2 div img').live('click', function() { $(this).parent().remove(); $('#product-related2 div:odd').attr('class', 'odd'); $('#product-related2 div:even').attr('class', 'even'); }); //--></script>product_form.tpl теперь можно закрывать и переходим к файлу mydomainwwwadmincontrollercatalogproduct.phpНаходим строчку: $this->data['entry_related'] = $this->language->get('entry_related'); после нее вставляем: $this->data['entry_related2'] = $this->language->get('entry_related2');Находим: $this->data['product_related'] = array(); foreach ($products as $product_id) { $related_info = $this->model_catalog_product->getProduct($product_id); if ($related_info) { $this->data['product_related'][] = array( 'product_id' => $related_info['product_id'], 'name' => $related_info['name'] ); } } После него вставляем такой же кусок, только с нашими переименованными переменными: if (isset($this->request->post['product_related2'])) { $products = $this->request->post['product_related2']; } elseif (isset($this->request->get['product_id'])) { $products = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']); } else { $products = array(); } $this->data['product_related2'] = array(); foreach ($products as $product_id) { $related_info = $this->model_catalog_product->getProduct($product_id); if ($related_info) { $this->data['product_related2'][] = array( 'product_id' => $related_info['product_id'], 'name' => $related_info['name'] ); } } Обратите внимание на запрос getProductRelated2 его мы тоже переименовали, описывать его будем в модели. Дальше работаем с файлом mydomainwwwadminlanguagerussiancatalogproduct.php здесь добавляем только одну строчку: $_['entry_related'] = 'Рекомендуемые:'; $_['entry_related2'] = 'Аксессуары:'; Следующий файл - mydomainwwwadminmodelcatalogproduct.php Тут больше всего правок, все по тому же принципу, я советую пользоваться Notepad++ в поиск забиваете фразу related, ищете по порядку и клонируете с переименованием по смыслу, желательно нужно клонировать целыми конструкциями и выражениями, в этом файле после всех правок у меня 88 совпадений по запросу related. Пример: После правки этого файла работа над добавлением новой опции в админке закончена. -
Разобрался сам: catalog - language - russian - russian.php находим строку $_['thousand_point'] = ','; заменяем ее на $_['thousand_point'] = ' ';
-
а поведай, как ты с ценой разобрался?
-
Конечно можно, в файле yourdomainwwwcatalogviewthemedefaulttemplateproductproduct.tpl находишь <div id="tabs" class="htabs"> или что-то подобное, в зависимости от темы, добавляешь внутри div'а <a href="#tab-name">Имя вкладки</a> и затем создаёшь блок с id="tab-name" куда помещаешь содержимое вкладки...
-
[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!
ipdesign replied to aincoder's topic in Загальні питання
сделал, работает как часы, плюс добавил в настройках магазина на вкладке "Изображения" дополнительный пункт размер изображения аксессуаров, чтобы в разном варианте выводить размер картинок для нового пункта. Кому нужно подобное решение, могу поделиться)