gexagen
Newbie-
Posts
32 -
Joined
-
Last visited
Content Type
Profiles
Forums
Marketplace
Articles
FAQ
Our New
Store
Blogs
module__dplus_manager
Everything posted by gexagen
-
Здравствуйте, форумчане. Требуется суб-подрядчик для запуска интернет-магазина на ocStore. Тематика: камнерезка и все около этого. Мелкий опт и розница. В данный момент скрипт магазина уже развернут, сделаны минимальные настройки, начато наполнение базы товаров. Клиенту понравился шаблон http://opencartforum...BE%D0%BD-visio/ Что нужно сделать: 1. Подключить указанный шаблон. 2. Выполнить адаптацию графических элементов дизайна (логотип компании, шапка сайта, фон страницы) на основе материалов предоставленных заказчиком. 3. Выполнить настройку скрипта под требования заказчика. Из форм оплаты пока подразумевается только выставление счета для оплаты по безналу. Доставка - самовывоз или по городу. Вообще, магазин делается более для своих, т.е. чтоб постоянные клиенты могли в он-лайне заказы формировать. Но не исключается и работа со сторонними частниками/организациями. Срок запуска до 20 чисел мая. Т.е. чуть менее месяца. Если интересно взяться за работу, скидывайте предложения в личку.
-
Это под каким браузером у Вас такая картина? У себя постоянно отслеживаю в ИЕ6, ФФ и Хроме, везде все нормально, таких косяков не вижу. А по поводу полезности: по данным Яндекс Метрики за неделю пользователи расставляю 8-10 закладочек-ссылочек. Принимая во внимание, что Яндекс сейчас индексирует некоторые соц.сети, не так уж и плохо. Да и дополнительный бесплатный трафик думаю тоже еще никому не помешал.
-
Никто мне не отвечает, чтож, придется самому себе ответить... Глядя на страницу настройки блока "Поделиться" http://api.yandex.ru/share/ может сложиться неверное представление, что количество социальных сервисов ограничено предложенными 9-ю системами... Так вот же нет! И вы сами можете убедиться в этом на моём сайте: http://androidipad.ru/. Итак, приступаем к тонкому тюнингу блока "Поделиться". Список доступных на сегодняшний день для блока социальных сервисов опубликован в документации по API блока, я приведу его и здесь: blogger - Blogger; digg - Digg; evernote - Evernote; delicious - delicious; facebook - facebook; friendfeed - FriendFeed; gbuzz - Google Buzz; greader - Google Reader; juick - Juick; liveinternet - LiveInternet; linkedin - LinkedIn; lj - Живой Журнал; moikrug - Мой Круг; moimir - Мой Мир; myspace - MySpace; odnoklassniki - Одноклассники.ru; twitter - Twitter; vkontakte - ВКонтакте; yaru - Я.Ру; yazakladki - Яндекс.Закладки. Итого, 20 различных сервисов на все вкусы и предпочтения! Далее, находим в скрипте, который предлагает нам Яндекс строку data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir" здесь перечислены коды активных соц. сервисов. Вставляем сюда через запятую коды нужных нам сервисов и телемаркет! Имеем кастомный дизайн блока "Поделиться"!
-
Без автоматики всё просто, Выписываете ему купон на скидку, там Вам и процент можно указать, и срок действия и количество применений. Отправляете на мыло ко дню рождения, вместе с поздравлениями. А вот чтоб все это в автоматическом режиме крутилось... тут без программирования не получится...
-
Тема социальных кнопок уже неоднократно поднималась на форуме, например, здесь и здесь. Я и сам успел отметиться в обеих топиках, предложив как вариант на самописном коде, встроенном в шаблон страниц, так и новый сервис «Поделиться» от Яндекса. Не без успеха пропиарив Яндекс, я сам, по-прежнему, использовал собственный код на своём сайте. Просто было лень переделывать уже сделанное и отлаженное, и работающее. Но вот, произошло событие, которое заставило меня побороть лень и внести изменения в шаблоны, перейдя на использование социальных кнопок от Яндекс. Я имею в виду, новые отчеты в системе Яндекс.Метрика. Теперь вы можете узнать сколько и каких постов было отправлено вашими посетителями в различные социальные сети и сервисы. Кроме того, и сам сервис немного повзрослел: увеличилось количество кнопок-сетей и различных вариантов оформления (http://api.yandex.ru/share/). Так же, несомненным плюсом сервиса «Поделиться» является простота установки на сайт. Вам нужно просто разместить несколько строк java-script кода в соответствующем месте шаблона и всё! Я, например, вставил его в файл \catalog\view\theme\default\template\common\header.tpl, таким образом кнопки у меня располагаются на всех страницах сайта, а не только на страницах товаров и новостей. Что, лично мне, кажется более удобным и правильным. Смотреть здесь: http://androidipad.ru/
-
Кнопки добавить социальные закладки VK\FB\YA\MAIL\ и тд
gexagen replied to Xpl's topic in Модули и дополнения
Поддержим Российского производителя! С недавних пор, в API Яндекса появился следующий инструмент: Блок «Поделиться» для вашего сайта. Найти его можно вот по этой ссылке: http://api.yandex.ru/share/ Возможность настройки внешнего вида и выбора соц. сервисов для постинга: # Я.ру # Вконтакте # Facebook # Twitter # Одноклассники # МойМир # Livejournal # Friendfeed # Мой круг Встраивается путем размещения JavaScript'а в соответствующем месте страницы (читай - шаблона). Очень просто и вполне юзабельно. Сам использую и вам советую. -
Модуль Сбербанк - отказ в проведении платежа...
gexagen replied to gexagen's topic in Модули и дополнения
Сейчас уже не вспомню названия городов и сёл... Ну не Москва с Питером, конечно... но тем не менее, в других, столь же удаленных от метрополий точках, оплата проходила без проблем. Т.е. это однозначно некомпетентность, либо лень сотрудников. :( Счёт у меня на ИП. Налоги плачу. ;) -
За время работы моего магазина несколько раз получал от покупателей жалобы на то, что им отказали в проведении платежа по квитанции с сайта сославшись на "недействующий" или "несуществующий" счет. Ломал голову, перепроверял все цифры в квитанции - все в порядке, все правильно! Сходил, наконец, в местное отделение СБ и выяснил в чем там дело. Оказывается, у СБ есть внутренняя база расчетных счетов, или какой-то алгоритм, который по номеру расчетного счета определяет все остальные реквизиты платежа. Так вот, он не всегда эти реквизиты определяет, выдавая сообщение типа "счет не найден". В этом случае опытная операционистка просто вносит все оставшиеся реквизиты (БИК, кор. счет и т.д.) ручками, а неопытная или ленивая просто посылает вашего клиента куда подальше... Вот. И далеко не каждый из посланных будет с вами связываться для выяснения причин произошедшего, кто-то может вообще подумать, что вы - мошенник, раз у вас со счетом какие-то проблемы... Дописал в шаблон квитанции внизу примечание вот такого содержания: Уважаемый сотрудник Сбербанка России! Если после ввода номера расчетного счета Вы получили сообщение о несуществующем или недействующем счёте, пожалуйста, продолжите оформление перевода, указав остальные платежные реквизиты (БИК, кор. сч. и т.д.) вручную. У нас действующий и существующий счет. Платежи по указанным выше реквизитам проходят нормально. Надеюсь, поможет... не только мне ;)
-
Для правильного расчета скидки в процентах необходимо привести значения переменных Цены и Спецпредложения обратно к числам, т.к. там они уже хранятся в виде отформатированных стрингов с лишними запятыми и точками. Я это сделал так: после строки <td width="25%"><?php if (isset($products[$j])) { ?> в соответствующих шаблонах вставил: <?php if ($products[$j]['special']) { $gxrc = array(',','.'); $gxsp = (int)str_replace($gxrc,'',$products[$j]['special']); $gxpr = (int)str_replace($gxrc,'',$products[$j]['price']); ?> <div id="header"><div class="label"><?php echo '-'.(int)(($gxpr - $gxsp)/$gxpr*100).'%'; ?></div></div> <?php } ?> В моем магазине цены указываются всегда, поэтому лишнюю проверку я просто отключил. Названия переменных и классов у меня тоже свои, можно менять. Идея, думаю, понятна...
-
Здесь уже обсуждался вопрос о том, что система скидок в OpenCart не слишком гибкая. Например, на вкладке "Специальное" можно задать акционную цену на товар, но, к сожалению, только в абсолютном, т.е. денежном выражении. Сами понимаете, что это крайне не удобно: меняется цена на товар - вам нужно пересчитывать цену по акции, акции бывают разные и с разными скидками, и каждый раз нужно все считать, считать, считать... А как было бы здорово, если можно было бы указывать величину скидки в таких привычных и понятных для всех процентах! Ну что ж, попробуем реализовать нашу идею, минимальными затратами, без сложных переделок. Например, можно сделать такое условие: если цена по акции больше 1, то значит она указана традиционным способом, т.е. в денежном выражении, если же цена по акции меньше 1, то она указана в процентном выражении. Например, значение цены 0.95 соответствует 5% скидке, а 0.85 скидке в 15%. Теперь осталось модифицировать код системы для правильного расчета цены по акции. Начнем с основной страницы отображения товара, файла catalog\controller\product\product.php, необходимо модифицировать код следующим образом: $this->data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax'))); $special = $this->model_catalog_product->getProductSpecial($this->request->get['product_id']); if ($special < 1) $special = (int)($product_info['price'] * $special); // наша строка для расчета скидки в процентах if ($special) { это для основного продукта страницы. И еще в одном месте: $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); $special = $this->model_catalog_product->getProductSpecial($result['product_id']); if ($special < 1) $special = (int)($result['price'] * $special); // наша строка для расчета скидки в процентах if ($special) { это для рекомендуемых продуктов. Аналогично второму фрагменту нужно внести изменения в следующие файлы: catalog\controller\product\category.php catalog\controller\product\manufacturer.php catalog\controller\product\search.php catalog\controller\module\bestseller.php catalog\controller\module\featured.php catalog\controller\module\latest.php catalog\controller\module\special.php После внесения этих изменений у вас на сайте везде должен заработать новый способ расчета цены спец-предложения, проверьте. А вот корзина все равно считается не правильно! Пришлось повозиться. Изменения нужно внести в файл: system\library\cart.php $product_special_query = $this->db->query("SELECT price FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1"); if ($product_special_query->num_rows) { if ($product_special_query->row['price'] < 1) $price = (int)($product_query->row['price'] * $product_special_query->row['price']); // это две новых строки else $price = $product_special_query->row['price']; // это две новых строки } else { $price = $product_query->row['price']; } После этого изменения ваша корзина будет считаться так, как нам нужно. Вот и все, прошу экспериментировать и комментировать. ПС: изменения производились на ocStore 0.1.1, но не думаю, что на других версиях что-то по-другому. ППС: маленький бонус от переделки: теперь, наконец-то, можно легко и просто устанавливать постоянные скидки для постоянных клиентов в зависимости от статуса (группы) клиента. И не надо каждый раз пересчитывать кучу цен...
-
Тоже встал на эти грабли. Причина в следующем: В шапке шаблона содержится тег: <base href="http://ваш_домен/" /> который указывает браузеру, что все относительные ссылки нужно делать от корня сайта, а не от текущего адреса страницы. Решений множество: 1. Удаляем в файле /catalog/view/theme/ваша_тема/template/common/header.tpl строку с этим тегом. Я у себя так и сделал, пока полёт нормальный, глюков не обнаружил, хотя и опасался, что в аяксе что-либо перестанет работать или ещё где. 2. Присваиваем правильное значение переменной $base, это нужно в файле /catalog/controller/common/header.php поправить вот этот код: if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $this->data['base'] = HTTPS_SERVER; } else { $this->data['base'] = HTTP_SERVER; } К адресу сервера нужно добавить адрес страницы. Этот способ не пробовал, он по своему эффекту должен быть абсолютно идентичен первому, т.к. при отсутствии в <head> тега <base> за базу принимается текущий адрес. Странно, что эта ошибка так скромно обсуждается, что, никто не пользует якоря на свих сайтах?
-
Привет! Тоже много думал над этим. К сожалению, вся система акций, спец-предложений и купонов в OpenCart пока не очень гибкая-настраиваемая. Удалось выяснить только вот что: Возможности применения нескольких купонов к одному заказу нет (и слава богу). Т.е. при применении каждого нового купона к одному заказу стоимость пересчитывается согласно примененному купону от первоначальной цены. К сожалению, купон действует на акции и спец-предложения. У себя на сайте я вынужден при проведении акции по каким-то товарам отключать действие купона на них путем добавления всех неакционных товаров в те, на которые действует купон. Это гемморойно и не очень удобно (очень не удобно). А хотелось бы, чтоб можно было указывать: товары на которые действует купон или товары на которые он не действует, причем, как на уровне товаров, так и на уровне категорий. Хотелось бы сделать такую возможность, чтоб пользователь мог приобрести товар по минимальной цене, т.е. если по акции скидка 5%, а у него купон на 10%, то он получает товар по цене Первоначальная - 10%, а если скидка по акции больше, чем по купону, то по акционной цене... Хотелось бы иметь возможность устанавливать скидку по акциям и спец-предложениям в процентах а не только в виде конечной цены... Эх, мечты-мечты... а кто делать будет? ПС: а кто знает, в чем разница между вкладками Скидка и Специальное в редактировании товара? Кто-то разобрался с механизмом их действия?
-
Хм. До переезда форума на новый движок все было чики-пуки (в тексте моего сообщения), а вот после переезда оно превратилось в какой-то хлам :( Интересно, другие полезные решения тоже пострадали подобным образом? Поправил ручками, смотрите выше.
-
"сохранить Вконтакте", "Мне нравиться Facebook" и т.д. [решено]
gexagen replied to PaLadin's topic in Загальні питання
Самоё простое - прописать в файл шаблона - catalog/view/theme/ваша тема/template/product/product.tpl Например вот так: <?php $gx_page = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; $gx_title = $heading_title; ?> <div id="socialbuttons"> <a href="http://vkontakte.ru/share.php?url=<?php echo $gx_page; ?>ℑ=<?php echo $thumb; ?>" target="vkontakte" rel="nofollow" onClick="window.open('','vkontakte','width=600,height=400')">[img=/catalog/view/theme/androidipad/image_s/vkontakte.png]</a> <a href="http://twitter.com/home?status=<?php echo $gx_page; ?> <?php echo $gx_title; ?>" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/twitter.png]</a> <a href="http://my.ya.ru/posts_add_link.xml?URL=<?php echo $gx_page; ?>&title=<?php echo $gx_title; ?>" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/yandex.png]</a> <a href="http://connect.mail.ru/share?share_url=<?php echo $gx_page; ?>" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/mailru.png]</a> <a href="http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk=<?php echo $gx_page; ?>&title=<?php echo $gx_title; ?>" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/google.png]</a> <a href="http://www.google.com/buzz/post?url=<?php echo $gx_page; ?>&message=<?php echo $gx_title; ?>" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/google-buzz.png]</a> <a href="http://www.blogger.com/blog_this.pyra?t&u=<?php echo $gx_page; ?>&n=<?php echo $gx_title; ?>&a=ADD_SERVICE_FLAG&passive=true&alinsu=0&aplinsu=0&alwf=true&hl=ru&skipvpage=true&rm=false&showra=1&fpui=2&naui=8" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/blogger.png]</a> <a href="http://www.livejournal.com/update.bml?event=<a href="<?php echo $gx_page; ?>"><?php echo $gx_title; ?></a>&subject=<?php echo $gx_title; ?>" target="_blank" rel="nofollow">[img=/catalog/view/theme/androidipad/image_s/livejournal.png]</a> </div> Вставляем в любое удобное место. Картинки кнопок должны лежать в соответствующем месте, у меня это, как видите, специальная папочка в папке моей темы оформления. Ну и количество кнопок в этом модуле можно тоже нарастить по аналогии...Внимание! Приведенный код корректно работает только при включенных SEO-url (или ЧПУ). Без этого будут съедаться все переменные в адресе вашей страницы следующие после символа &... как победить эту проблему без использования javascript-ов я так и не нашел решения... https://opencartforum.com/public/style_emoticons/default/icon_question.gif Пример смотреть здесь: http://androidipad.ru/smartqt7?from=ocforum -
Изменения не вносились, в чём ошибка разобрался. Проблема вот в чём: Файл /admin/catalog/model/product.php, функция addProduct, строки: $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'"); первая строка создаёт в базе рекомендуемых пару: Товар - Рекомендуемый, вторая создаёт обратную пару Рекомендуемый - Товар. Т.е. авторы скрипта полагают, что если я рекомендую к товару А, товар Б, то и обратная рекомендация тоже истина. Но мне кажется, это не всегда так... Это во-первых... А во-вторых, это и приводит к описанной выше ошибке - созданию множества перекрестных ссылок которых никто не создавал.Аналогичный фрагмент кода есть и в функции editProduct: $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$product_id . "', related_id = '" . (int)$related_id . "'"); $this->db->query("DELETE FROM " . DB_PREFIX . "product_related WHERE product_id = '" . (int)$related_id . "' AND related_id = '" . (int)$product_id . "'"); $this->db->query("INSERT INTO " . DB_PREFIX . "product_related SET product_id = '" . (int)$related_id . "', related_id = '" . (int)$product_id . "'"); В общем, я у себя эти фрагменты кода, которые работают с обратной парой (Рекомендуемый - Товар) отключил. Посмотрю что получится. ПС: а что, кроме меня никто не пользуется функцией копирования товаров?
-
Может быть кто-то уже сталкивался с такой проблемой? Мне она уже жить спокойно не дает... При копировании товара в Админке, этот вновь созданный копированием товар почему-то автоматически попадает в Рекомендуемые ко всем остальным товарам в магазине. Нет, даже не ко всем, а по какому-то странному и не понятному мне алгоритму... А это не правильно... Работаю на ocStore 0.1.1.
-
Особенности подсчета количества товара на складе
gexagen replied to gexagen's topic in Загальні питання
Наступаем на те же грабли повторно... Если у вашего товара есть различные опции (любимый цвет, любимый размер и т.д.), то при заведении этих опций им тоже необходимо указывать количество, потому что по умолчанию система ставит туда 0, и ваши товары опять становятся не доступными для заказа! Незнание этих простых истин привело к тому, что у меня неделю траф на магазин сливался в пустую... :D- 1 reply
-
- 1
-
Всем привет! Столкнулся со следующей особенностью подсчёта товара на складе в ocStore 0.1.1. Вводная: у меня была установлена опция "Заказ при нехватке на складе" в "Да", т.к. своего склада у меня как такового и нет. Количества товара я везде изначально прописывал 9999, так, на всякий случай. Всё работало и меня вполне устраивало. И тут, вдруг, возникла необходимость снять один товар с продажи. Но просто выключать его в админке не хотелось, т.к. страница товара в индексе и терять её совсем не хорошо. Выключил вышеназванную опцию "Заказ при нехватке на складе", поставил данному товару количество 0. Стал смотреть что получилось, а получилось вот что: товар положить в корзину можно, а вот при ее просмотре выводится сообщение, что товар этот отсутствует, и оформление заказа дальше не идет. Вроде бы всё хорошо, кроме того, что товар положить в корзину всё-же можно, логичнее было-бы, чтоб и эта функция тоже была отключена (так в дальнейшем и сделал на странице просмотра товара). Ушел спать... Через 2 дня, случайно, по сообщению клиента выясняю, что сообщение об отсутствии на складе выдается абсолютно на все товары в моём магазине! Заказы не оформляются, клиенты теряются... Ужос! Стал судорожно разбираться, в чём же дело... И выяснил, что такой статус присваивался товарам по причине того, что я оставил пустым поле "Расположение" на вкладке "Данные" товара. Кто бы мог подумать! Внесение в это поле произвольной информации решило проблему. Магазин заработал так, как надо. Надеюсь, моя заметка поможет кому-то избежать подобной неприятности и потери денег и клиентов в будущем...
- 1 reply
-
- 1
-
Заголовок должен был звучать вот так гордо: Отслеживание конверсии на коленке, или первый шаг к партнерской программе... но был безжалостно порезан ограничением на количество символов. Тем не менее к сути... Как-то смотрю эта тема тут не сильно обсуждается, видимо, всем достаточно статистики Яндекс.Метрики, Гугл Аналайтикс и иже с ними... Но я лично столкнулся с такой ситуацией: пользователи приходят из платных источников, смотрят, уходят... На следующий день заходят уже напрямую, регистрируются и (о счастье) делают покупку. Вопрос: так откуда был этот долгожданный покупатель? из какой рекламной сети он пришел? с какого платного баннера? На это, ответа у статистики уже нет... Прямой заход и все тут (но мы-то с вами понимаем, что просто так к нам в магазин люди не ходят). Значит, нам нужно самостоятельно вычислять источник этого самого посетителя. Как? А вот как (например): 1. Всех посетителей с рекламы посылаем на наш сайт с переменной from="название источника" в адресе. Название у каждого источника, разумеется, своё уникальное. Этот пункт, кстати, и для Яндекс Метрики полезен, т.к. статистика по этой переменной тоже подсчитывается автоматом. 2. Если пользователь пришел к нам с переменной from в адресе, ставим ему куку с источником трафика, это можно сделать, например, вот так: файл catalogcontrollercommonheader.php, сразу после: class ControllerCommonHeader extends Controller { protected function index() { вставляем $gxfrom = $this->request->get['from']; if ($gxfrom) setcookie('customerfrom', $gxfrom, time() + (60*60*24*30)); эти строки кода устанавливают посетителю куку с источником трафика, которая будет жить 30 дней, если хотите больше, поставьте своё значение...3. При регистрации пользователя смотрим, есть ли у него наша кука, и если есть, сохраняем ее какое-либо удобное для нас поле. Я использую для этого поле Факс адреса покупателя. Мне его факс ни к чему, и во всех формах и шаблонах поле это скрыто от просмотра и изменения пользователем... Фрагментов кода далее приводить уже не буду, т.к. править нужно кучу файлов и в разных местах... Думаю, идея вам понятна и без подробностей... Теперь я вижу, откуда на самом деле приходят мои покупатели, а так как поле Факс автоматически копируется и в адрес в заказе, сразу видно, из каких источников сделаны и заказы... Очень удобно, особенно, когда выведешь эти поля в листинг заказов в админке... Красота! Теперь пытливому уму уже понятно, что отсюда, до своей собственной партнерской программы остается один шаг (ну может несколько маленьких шажков). По сути, нужно прикрутить некую партнерскую статистику к базе наших заказов и вуаля, ищите партнеров, договаривайтесь и сотрудничайте на взаимовыгодных условиях... ПС: разработкой этой системы я сейчас и занимаюсь...
-
[Доработка] Модуль Сбербанк ocStore 0.1.1 печать квитанции
gexagen replied to gexagen's topic in Отчёты об ошибках
Да, при этом возникает ситуация, что просто перебирая значение ID в адресной строке можно посмотреть Номера и суммы заказов, ФИО плательщиков и их адреса... на это я обратил внимание... Но в противном случае, т.е. со старым кодом, квитанции не печатаются совсем... что тоже не телемаркет... Защита от перебора бы не помешала, но как?в общем, окончательный вариант который сделал у себя такой:все правки в файле catalogcontrollerpaymentfl_sberbank.phpправим функцию confirm, строку: $comment .= $this->language->get('text_instruction_2') . $this->data['order_id'] = $order_info['order_id'] . $this->language->get('text_instruction_3') . "nn";меняем на: $check = md5($order_info['order_id'].'ваш секретный код'); $comment .= $this->language->get('text_instruction_2') . $this->data['order_id'] = $order_info['order_id'] . '&check=' . $check . $this->language->get('text_instruction_3') . "nn";это добавляет к нашему адресу дополнительную переменную, содержащую проверочный код, уникальный для каждого номера заказа.далее, правим функцию printpay, строки: }else{ $order_info = $this->model_account_order->getOrder($order_id); }меняем на: }else{ $check = md5($order_id.'ваш секретный код'); if ($check != $this->request->get['check']) $order_id = ''; $order_info = $this->model_checkout_order->getOrder($order_id); }здесь мы проверяем передаваемый в ссылке код, и при несоответствии, обнуляем номер заказа, чтоб не показать злоумышленнику данные чужих заказов.Не забудьте заменить в коде стринг 'ваш секретный код' на своё значение ;) В идеале бы конечно, в случае несовпадения выводить не пустую квитанцию а сообщение об ошибке переданных данных, но тут нужно еще дополнительный шаблон строчить и т.д. и т.п... лень ;) -
[Доработка] Модуль Сбербанк ocStore 0.1.1 печать квитанции
gexagen replied to gexagen's topic in Отчёты об ошибках
Да, при этом возникает ситуация, что просто перебирая значение ID в адресной строке можно посмотреть Номера и суммы заказов, ФИО плательщиков и их адреса... на это я обратил внимание... Но в противном случае, т.е. со старым кодом, квитанции не печатаются совсем... что тоже не телемаркет... Защита от перебора бы не помешала, но как? -
[Доработка] Модуль Сбербанк ocStore 0.1.1 печать квитанции
gexagen replied to gexagen's topic in Отчёты об ошибках
В оригинале вызывается функция model_account_order которой помимо номера заказа необходим и ID кастомера, соответственно, когда переходим по ссылке из письма, этого ID у нас нет и функция возвращает пустые значения, что и приводит к описанной проблеме.Я заменил её на вызов функции model_checkout_order которой нужен только номер заказа для возврата информации о нем... Странно, это только у меня такой глюк, или больше никто не проверял, какие там письма уходят покупателям?... :roll: -
Обнаружил следующую ошибку в модуле Сбербанк ocStore 0.1.1 при печати квитанции из ссылки в письме о подтверждении заказа (ну это уже после исправления адреса ведущего в никуда на правильный, с адресом сайта): В распечатываемом по этой ссылке бланке оказываются пустыми все поля относящиеся к заказу (номер, сумма, плательщик и т.д.). Проверьте у себя. Лечится следующим образом: файл catalogcontrollerpaymentfl_sberbank.php находим: if ($order_id == ''){ $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']); }else{ $order_info = $this->model_account_order->getOrder($order_id); }меняем на: if ($order_id == ''){ $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']); }else{ $order_info = $this->model_checkout_order->getOrder($order_id); } Удачных правок...
-
Аналитикс штука хорошая, но тормозная... показывает статистику с опозданием на день - полтора... Рекомендую ставить Яндекс.Метрику, она очень красивая :) Правда её или в шаблон вшивать, или HTML модулем... ПС: они и вместе живут отлично (Аналитикс и Метрика), так что можете обе для полноты картины поставить...
-
Я когда этим вопросом задался, перематерился весь... Оказалось, что в моей версии (не знаю как в остальных) ocStore 0.1.1 эти цвета просто тупо прописаны во всех шаблонах связанных с выводом товаров, а их больше 10! Пришлось все перелопачивать и прописывать ручками класс, чтоб можно было потом из CSS одним махом менять везде как надо... Начните с файла catalogviewthemedefaulttemplateproductproduct.tpl ищите вот это: <?php if ($display_price) { ?> <tr> <td>[b]<?php echo $text_price; ?>[/b]</td> <td><?php if (!$special) { ?> <?php echo $price; ?> <?php } else { ?> <span style="text-decoration: line-through;"><?php echo $price; ?></span> [color= #F00;]<?php echo $special; ?>[/color] <?php } ?></td> </tr> <?php } ?>ну и меняем примерно вот так: <?php if ($display_price) { ?> <tr> <td>[b]<?php echo $text_price; ?>[/b]</td> <td><?php if (!$special) { ?> <span class="myprice">[b]<?php echo $price; ?>[/b]</span> <?php } else { ?> <span class="myoldprice"><?php echo $price; ?></span> <span class="myprice"><?php echo $special; ?></span> <?php } ?></td> </tr> <?php } ?>затем в css файле создаем два класса myprice и myoldprice и в них прописываем как должны выглядеть наши цены.Ну а далее ищем и меняем аналогичный фрагмент кода во всех шаблонах связанных с отображением товаров (специальные, бестселлеры и т.д.)... Помучившись один раз, получите в дальнейшем возможность менять эти цвета за 10 сек! :)