Тэг ‘virtuemart’

vmcchk=1 - Virtuemart добавляет в конце URL vmcchk

В очередной раз порадовал Virtuemart - интернет магазин на Joomla. В этот раз красивые SEO-адреса были подпорчены непонятной припиской vmcchk=1 . Как и предпологалось из названия - это дело “рук” vm - virtuemart

Добавление этой переменной связано с проверкой Cookie у web-клиента (браузера т.е.). Чтобы убрать злостный vmcchk в конце УРЛ-ов следует подредактировать файл /classes/ps_session.php около 63 строки - проще всего закомментировать (в начале строки добавить // - двойной слэш)

if( @$_REQUEST['option'] == 'com_virtuemart' && USE_AS_CATALOGUE == '' ) {
$this->doCookieCheck(); // Introduced to check if the user-agent accepts cookies
}

Кроме того, не помешает для склейки страниц-дублей сделать 301 редирект на страницу без vmcchk

ps Что самое интересное, на форуме разработчиков склоняются к тому, чтобы убрать эту проверку, однако vmcchk до сих пор присутствует в URL-ах )))

Опубликовано Июнь 10, 2011 | автор: levik  |  Комментарий (1) »

virtuemart при добавлении товара белый экран-пустая страница

При входе в форму добавления товара virtuemart радует белым экраном ( в браузер выводится пустой html-документ). Обычно является это признаком fatal error в PHP. Заглядываем в LOG-файл - действительно:

[error] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 49 bytes) in …/includes/database.php on line 491

Итак, при выводе “пустой” страницы добавления товара скрипту не хватает памяти (32 МБ, конечно не так уж много, но куда??). Что самое интересное, при редактировании товара (страница та же, только установлен параметр product_id) ошибка не возникает. И ещё, раньше такого вроде не было.

В database.php на 491 строке ничего особо интересного нет - подсказка, что выводится LIST (чего - не совсем ясно)… Элементы “складируются” в массив.. и на очередном не хватает памяти.

Предварительная диагностика подсказывает, что “глюк” из-за большого количества товаров (~22 тыс). Протестировал с “обрезанной” до 7 тыс товаров - всё работает. И правда, в товарах проблема.

Смотрим в сторону файла с формой добавления/редактирования товара
administrator/components/com_virtuemart/html/product.product_form.php

Но как связана страница добавления/редактирования одного товара с количеством товаров? Точно! Есть ведь связанные товары.. Большой multiselect связанных товаров и правда содержит все записи.. однако он выводится и при редактировании товаров.. Странно.. но всякое бывает - проверяем (закомментировать строчку с выводом мультиселекта).. Ан нет.. не влияет.

Ладно.. пробуем по-другому ищем product_id (ведь для имеющегося товара все в порядке.. белый экран только при добавлении Нового товара). Из “сомнительных” (cомнительное в смысле без проверки на “корректность” product_id) мест использования этой переменной видим такое:

$db_items = $ps_product->items_sql($product_id);

После которого идет вывод формы с подстановкой значений.

Проверяем совсем наглым образом - убираем эту строку и последующие, и открываем страницу добавления товара - Открывается! :) Добавляем строку (без продолжения) - ошибка.

перейти к решению проблемы пустого экрана

Опубликовано Сентябрь 15, 2010 | автор: levik  |  Комментарии (4) »

open_basedir restriction in effect

Столкнулся с необычным проявлением ошибки open basedir restriction:

Warning: open_basedir restriction in effect.
File /path/to/file is not within the allowed path(s):
(/path/to/dir1:/path/to/dir2) in /path/to/dir/filename.php on line 385

Сообщение такого рода возникает при попытке обратиться к файлу, который расположен за пределами “разрешенных” для php каталогов. Настройки хостинга обычно не препятствуют открытию файлов в пределах “домашнего” каталога пользователя или корневого каталога сайта. Значение переменной php_value open_basedir изменяется в httpd.conf или в php.ini. В .htaccess значение open_basedir изменить нельзя!!!

Часто сообщение open_basedir restriction вызвано неправильной обработкой загруженных при помощи php файлов - использование функции copy, unlink, rename вместо правильного move_uploaded_file. Об особенностях использования функции move_uploaded_file более подробно можно прочитать тут

Однако, как оказалось, такая ошибка может возникать ещё и при использовании функции tempnam(string $dir, string $prefix), которая должна создавать временный файл в каталоге $dir, если же каталог не существует, то пытается создать этот файл во временном каталоге системы. Стоит также проверить каталог $dir на запись - в моем случае именно права на доступ к каталогу стали причиной ошибки open basedir restriction.

ps. обнаружил при работе с simple csv upload интернет-магазина на базе virtuemart

Опубликовано Февраль 5, 2010 | автор: levik  |  Комментарии (2) »

Virtuemart - скрываем пустые категории

При работе с интернет-магазином на базе Virtuemart после импорта из csv возможно появление пустых категорий, которые virtuemart не скрывает автоматически. Т.е. отображаются категории, в которых нет ни одного опубликованного товара (или вообще ни одного товара) - при заходе в такую категорию, естественно,  “ощущается пустота”.

Зачем нам отображение пустых категорий? В общем-то, если только для поисковиков.. чтоб наведывались. Однако для покупателей гораздо удобнее, если пустые категории не показываются.

В настройках Virtuemart (ни в глобальной конфигурации, ни в настройках категорий) пункта-галочки “скрывать пустые категории” (или отображать) я не нашел. Может плохо искал? Читать целиком »

Опубликовано Ноябрь 4, 2009 | автор: levik  |  Комментарии (4) »

Импорт csv в virtuemart - Simple CSV (часть 2)

Не так давно публиковал заметку о реализации импорта csv в virtuemart

Когда потребовалось повторить установку “мода” Simple CSV - пока читал форум, забыл зачем пошел. :) На десяти страницах форума слишком много “воды” и повторяющихся вопросов. Решил собрать краткий ман-faq по мод-хаку  в одном месте. Может кому-нибудь окажется полезным.

Хак для версии virtuemart 1.0.* Читать целиком »

Опубликовано Сентябрь 25, 2009 | автор: levik  |  Комментарии (5) »

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

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

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

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

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

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

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