Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

ipdesign

Newbie
  
  • Posts

    36
  • Joined

  • Last visited

Everything posted by ipdesign

  1. OcStore 1.5.3.1 AdBlock блокирует изображение на главном баннере (модуль "Слайдшоу") Пробовал менять размер изображений, не помогает. Как побороть Может есть уже какое-то решение?
  2. Подскажите, модуль работает нормально, но после применения любого фильтра сбивается стиль отображения товаров в контейнере вывода товаров (меняется кнопка купить, появляется слайдер по вертикали) как исправить? UPD. Исправил сам. Потребовалось изменить файл filterpro_products.tpl согласно своей темы
  3. Также заметил одну неприятную закономерность - после удачного импорта товаров (как правило добавление новых) товары, которые попадают на главную в разделе "Последние поступления" нельзя добавить в корзину по нажатию на кнопку "Купить", сообщение, что товар добавлен в корзину появляется, но в самой корзине товаров нет и они туда не добавляются...на странице категорий и в карточке товара все ОК. И самое интересное, что если зайти в такой товар через админку и ничего в нём не меняя, а просто нажать "Сохранить", то на главной все становится нормально и товар в корзину добавляется. Что за баг и как с ним бороться?
  4. С экспортом проблем до сегодня не было. Но сегодня экспорт не прошел, а вместо файла показал такое предупреждение: 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); } и все заработало. Подскажите верны ли мои действия? может это кривой метод и нужно как-то по другому?
  5. Также после оформления в журнале ошибок появляется: PHP Notice: Undefined variable: entry_customer_group in /home/serv/public_html/catalog/view/theme/itechshop/template/checkout/guest.tpl on line 30 Во фронтенде никаких ошибок нет и регистрация проходит. Чтобы это могло быть?
  6. Методом научного тыка пришёл к тому, что экспорт не работал с включенным режимом обслуживания :ph34r: Кроме того выставил max_execution_time = 600 везде где только можно, включая php.ini на сервере и в каталогах движка, а также в файле .htaccess Пока полёт нормальный, тестирую.
  7. Нашел модуль на этом форуме выгрузки в Яндекс маркет, обновил и все.
  8. Добрый день! Только что купил ваш модуль, пробую сделать экспорт на Денвере получаю ошибку: 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 файлов из одной только категории - Веб страница недоступна...
  9. Что я могу сказать.... Купил я этот фильтр еще в Апреле 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.
  10. Всем привет! Подскажите, плиз, люди добрые и умнее меня) Каким макаром можно запретить в коротком описании выводить стили 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), Буду весьма благодарен за помощь!
  11. Проблема абсолютно не в добавлении новой вкладки. Проблема в невнимательности. У тебя во вкладке "Сопутствующие товары" кнопка "Купить" не обернута в тег <span>. Сделай вот так: <a onclick="addToCart('410');" class="button"><span>Купить</span></a> и будет тебе счастье;)
  12. ОК, спасибо за наводку, будет время посмотрю обязательно. На моем шаблоне проблем вообще не возникало - все работает как часы.
  13. Это сортировка атрибутов в админке. Работает. А как сделать такую же сортировку в самой карточке товара?
  14. Та же проблема! Подскажите где копать? есть может уже решение, кто сталкивался?
  15. Размер изображения товара берется из настроек админки (Система - Настройки - Изображения): Сейчас у нас размеры берутся из поля, выделенного красным, а мы попытаемся добавить новое поле (выделено зеленым и по умолчанию его нет) и выводить в наш блок. Идем в файл 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++ - пользуйтесь и будет вам счастье!
  16. Переходим к фронт-енду... Теперь нам нужно отобразить на сайте то, что мы научили админку записывать в базу данных. Итак, переходим в файл 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 " Все, теперь у нас все работает!
  17. Итак, все по порядку: Для начала необходимо создать новую таблицу в базе данных 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. Пример: После правки этого файла работа над добавлением новой опции в админке закончена.
  18. Разобрался сам: catalog - language - russian - russian.php находим строку $_['thousand_point'] = ','; заменяем ее на $_['thousand_point'] = ' ';
  19. а поведай, как ты с ценой разобрался?
  20. Конечно можно, в файле yourdomainwwwcatalogviewthemedefaulttemplateproductproduct.tpl находишь <div id="tabs" class="htabs"> или что-то подобное, в зависимости от темы, добавляешь внутри div'а <a href="#tab-name">Имя вкладки</a> и затем создаёшь блок с id="tab-name" куда помещаешь содержимое вкладки...
  21. сделал, работает как часы, плюс добавил в настройках магазина на вкладке "Изображения" дополнительный пункт размер изображения аксессуаров, чтобы в разном варианте выводить размер картинок для нового пункта. Кому нужно подобное решение, могу поделиться)
×
×
  • 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.