Категория ‘Интернет-магазин’

Импорт csv в virtuemart для больших файлов

Virtuemart + joomla - неплохой и “бесплатный” инструмент для организации интернет-магазина. Для синхронизации, например с 1с (что требуется довольно часто), в virtuemart используется инструмент импорт-экспорт через CSV. Все бы ничего - после определенной настройки данные импортируются, но при солидных объемах магазина - несколько тысяч товаров в csv-файле, даже без описаний, скрипт импорта выполняется несколько минут. Площадки виртуального хостинга же, частенько, имеют ограничение на это самое время выполнения скрипта. Вот и получаем

Попытки прописать в .htaccess  php_value max_execution_time 600 (увеличить максимально разрешенное время скрипта до 600 секунд) не всегда приводят к желаемому результату, потому как довольно часто такая возможность блокируется хостером. Доступ к php.ini предоставляется далеко не всеми хостерами. Вопросы о возможности увеличения этого времени “в частном” или “в общем” порядке, в лучшем случае обычно заканчиваются предложением приобрести VPS..

Как вариант решения проблемы импорта больших файлов - разбиение CSV-файла на части, и загрузка каждой части в отдельности. Естественно, не забываем про служебную информацию (обычно - первая строка csv-файла)Размер частей подбирается опытным путем :) Однако, мягко говоря, вариант далеко не идеальный.

Поиски, как ни странно, показали, что такого рода проблемы не у меня одного, причем возникают они снова и снова. :) И, как ни странно, на многих форумах этот вопрос оставлен без ответа. При том, что решение, довольно изящное, разработано несколько лет назад пользователем tug на joomlaforum.ru

Модификация для нормальной загрузки через CSV - Simple CSV Import

Нормальная заливка это …:

* возможность заливать любые данные через CSV, т.е. товары, типы, параметры, категории, производителей, налоги, хуёги и пр.
* возможность прямо в csv указывать поля, которые нужно обрабатывать.
* когда в админке Вам нужно только указать файл и нажать “Upload”.
* возможность кастомизировать заливку и добавлять новые модули и не только для VirtueMart.

Особое внимание обратил на “только указать файл и нажать…”
Тех, кто торопится “в бой” - “поставить и забыть” - хочу предупредить, что на третьей странице лежит пятая бета-версия. Ставить лучше её. И, несмотря, на многостраничность темы, все же рекомендую ознакомиться.
Расписывать все прелести CSV-импорта от tug-а не буду. Стоит отметить, однако, что от старого доброго экспорта-импорта через csv отказываться не обязательно, они вполне могут существовать параллельно - своеобразный путь к отступлению…

upd.  Полезная информация по Simple CSV - краткая “выжимка” из 10 страниц топика на форуме. Если что упустил - поправляйте.

Опубликовано Май 13, 2009 | автор: levik  |  Комментарии (2) »

И снова бланки - работа с word средствами javascript и php

В очередной раз стала актуальной задача с подготовкой бланков. Однако, способ с бланком в формате rtf не подходит - файл .doc весит ~2 Мб, файл же rtf ~ 34 Мб. Видимо, зависит от хранения рисунков…

Работать с COM-объектом Word можно непосредственно из PHP:

// Код PHP
$word=new COM("Word.application") or die("Couldn't start Word!");
//после создания объект невидимый
//сделаем его видимым и активизируем (разумеется, для работы на сервере это необязательно)
$word->visible =1;
$word->Activate();
//Создать документ по шаблону:
$word->Documents->Add("c:\\template.dot");
// действия - найти-заменить и т.д. Описаны в документации по VisualBasic for Application - в справке MS Word (по умолчанию не устанавливается)
$word->ActiveDocument->SaveAs("C:\\".$fname);
$word->Quit();

Однако, подобный способ подходит только для Windows-серверов.

Еще один вариант - работа с COM-объектом на стороне клиента через Active-X при помощи JavaScript:


><script language="javascript">
// Создание объекта MS Word:
word = new ActiveXObject ("Word.Application");
// Создание документа и установка параметров страницы:
with (word) {
Documents.Open('c:\\0.doc');
ActiveDocument.Label1.Caption = < ?=$sum?>;
ActiveDocument.SaveAs ('c:\\1.doc');
Quit (); // завершает работу MS Word
}
</script>

Предварительно следует сохранить документ-шаблон на диск C:\ с именем 0.doc.
В шаблоне - создать “Label”-ы и расположить их в соответствии с нужным расположением текста.
С учетом специфики задачи - получаем еще один небольшой выйгрыш - “основной” файл не качается с сервера.
Технология, думаю, понятна. Вариации - насколько фантазии хватит.

ps. Не забудьте поставить разрешения в свойствах обозревателя.

( Свойства обозревателя - безопасность - Выбираем “Надежные узлы”. После чего, нажимаем “Другой..” - и устанавливаем все переключатели, где упоминается ActiveX в “Разрешено”.)

А в Надежные узлы следует добавить “Наш” сайт - где формируются бланки.

Опубликовано Март 18, 2009 | автор: levik  |  Нет комментариев »

Virtuemart напильником

Волей судьбы пришлось бороться с Virtuemart’ом. Сразу хочу отметить, что бОльшая часть файлов находится в каталоге administrator/components/com_virtuemart/.

1. меню из каталога товаров стандартное (mod_virtuemart) слишком сильно грузит магазин. Альтернативный вариант решения - меню “ручками”. Т.е. делаем меню, пунктами которого становятся ссылки на категории нашего магазина.

2. главная страница магазина (html/shop.index.php), вывод категориий (classes/ps_product_category.php), шаблон вывода товаров в категории (html/templates/browse/browse_1.php - настраивается в административной части)

3. навигационная строка где-то тут:
$nav_list = $ps_product_category->get_navigation_list($category_id);
$mainframe->appendPathWay( $nav_list );

Продолжение следует…

Опубликовано Октябрь 13, 2008 | автор: levik  |  Нет комментариев »

OsCommerce - замеченные глюки-баги

Решил собрать некоторые глюки Oscommerce (версии и сборки различные) , потому как порой, как оказалось, они встречаются чаще одного раза.. А когда помнишь, что ты уже это делал.. и не помнишь, как.. а поиск выдает что-то не то..

Возможно, окажется полезным не только мне..

OsCommerce не отображает некоторые товары

Поскольку в этом SHOP-монстре куча всевозможных настроек, следует убедиться, что “скрытый” от глаз посетителя товар не отключен этими настройками. Естественно, если один товар отображается, а другой - нет, следует… сравнить атрибуты/параметры этих товаров в админ панели Oscommerce или непосредственно в базе. В моем случае, для не отображаемых товаров просто не был указан производитель.

OsCommerce не добавляет некоторые товары в корзину

Столкнулся с “чудесами” - все товары (все проверенные - порядка 30) в корзину добавляются нормально, один - ну никак не хочет. При попытке добавить в корзину происходит переход на пустую корзину.
Проблема оказалась в добавлении к атрибуту action в теге form дополнительного параметра &sid=id_sesion..

Oscommerce не дает войти в админ центр

Проблема оказалась в принудительной установке Cookies - поправил изменением значения в таблице configuration (непосредственно в базе). Искать в базе в таблице `configuration`
where configuration_key like '%cookie%'
менять с true на false и наоборот.

Oscommerce выдает ошибку при обновлении версии MySQL

При обновлении базы MySQL, используемой OsCommerce с версии 4 на версию 5, магазин “радует” нас англоязычными сообщениями об ошибках. Поиск по аглицким форумам помог решить проблему - в свое время  пару часов пришлось повозиться. Однако, сейчас уже и не вспомню… Если повторится - дополню…

На самом деле, несмотря на кажущуюся “громоздкость”, oscommerce , если разобраться, не такой уж сложный магазин. Наличие форумов, как русскоязычных, так и забугорных, дает возможность вникнуть и решить практически любую проблему.. (не путать с “проблему решат за тебя”.. хотя, обычно, вопрос цены…)

UPD
Oscommerce не добавляет товары в корзину

При попытке добавить товар в корзину (а также при регистрации) перебрасывает на страницу “включите Cookies” (cookie_usage.php) с сообщением:

Для работы с нашим магазином Вам необходимо включить поддержку cookies в Вашем браузере.

Из возможных вариантов:
1. неправильно указаны настройки в файле /includes/configure.php и admin/includes/configure.php (ситуация часто возникает при переездах oscommerce-магазина с одного хостинга на другой:
define('HTTP_SERVER', 'http://server.name'); // eg, http://localhost - should not be empty for productive servers
define('HTTPS_SERVER', 'https://server.name'); // eg, https://localhost - should not be empty for productive servers
define('ENABLE_SSL', false); // secure webserver for checkout procedure?
define('HTTP_COOKIE_DOMAIN', 'server.name');
define('HTTPS_COOKIE_DOMAIN', '');
define('HTTP_COOKIE_PATH', '/');

2. некоторые магазины на базе OSCommerce требуют включения директив php:
php_value register_globals on
php_value register_long_arrays on

3. если ситуация с cookies на локальном компьютере, то, возможно это из-за некорректного распознавания домена localhost некоторыми браузерами (они считают домен некорректным, если в нем нет точки). Или настраивать локальный web-сервер, или залезть в includes/application_top.php и подправить установку домена cookies: $cookie_domain = ” (при выкладке на сервер не забыть вернуть как было :)

Опубликовано Август 19, 2008 | автор: levik  |  Комментарии (2) »

Бланки на PHP.

Довольно часто для обеспечения удобства работы с интернет магазином требуется решить задачу оформления различных шаблонных документов - всевозможные бланки почтовых отправлений, квитанций на оплату, накладных… При этом, неплохо иметь возможность “на всякий случай” отредактировать получившийся документ.

Один из вариантов решения - подготовка шаблонов документов в формате RTF (в программе MS WORD). При подготовке шаблона туда, где должны располагаться подставляемые данные, например, сумма заказа, помещаем “оригинальную” последовательность символов, например, %SUM%.
Внимание! При подготовке шаблона аккуратнее со сменой языков. При работе в программе ворд следует выделить последовательность символов (%SUM%), выбрать пункт меню Сервис-Язык-Выбрать язык. Я выбирал Русский :)
Шаблон сохраняем на сервер (например, с именем template.rtf в каталог со скриптом)

В скрипте, при работе с шаблоном, просто заменяем последовательность символов:$file = file_get_contents('template.rtf');
$file = str_replace("%SUM%", ' '.$sum, $file);
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename=nakladnaya.rtf');

Где брать бланки документов? В интернете.. Все более-менее актуальные есть в “свободном” доступе. В крайнем случае, можно заплатить.

Опубликовано Апрель 12, 2008 | автор: levik  |  Нет комментариев »