0 Пользователей и 1 Гость просматривают эту тему.
  • 14 Ответов
  • 5503 Просмотров

Здрасти.
Есть задание - создать сайт, на котором будут хоститься магазины, которым лень делать свои сайты. Каждый продавец должен иметь возможность редактировать свой магазин отдельно от других. Инфу о магазине, о товара, о доставке и оплате. Подскажите, как это лучше реализовать... Спасибо заранее.
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: Поддержка нескольких магазинов
« Ответ #1 : 31.08.2006, 19:41:48 »
Это рроект с неху*гав*вым бюджетом. Так мне думается.
*

4853

  • Захожу иногда
  • 170
  • 20 / 11
Re: Поддержка нескольких магазинов
« Ответ #2 : 31.08.2006, 20:15:38 »
Это рроект с неху*гав*вым бюджетом. Так мне думается.
А если на субдоменах?
Получится?

Re: Поддержка нескольких магазинов
« Ответ #3 : 31.08.2006, 21:44:00 »
Ну бюджет я не видел, но проект неслабый.
А если поставить кучу ВиртуМартов, как разные компоненты(com_market1, com_market2, com_market3  и т.д.) и с разными таблицами, это сильно жопно для базы будет?
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: Поддержка нескольких магазинов
« Ответ #4 : 31.08.2006, 23:33:50 »
На субдоменах ИМХО лучший вариант.
Но блин продумывать всё нужно серьёзно, а не тут на форуме =)
Нужна команда нормальных кодеров. Базы я бы пользовал раздельные, может быть даже на разных хостах.
Но при текущем положении дел (динамика развития и жумлы и VM) я бы не стал делать такой проект на Joomla + VM, очень много геммороя.

Re: Поддержка нескольких магазинов
« Ответ #5 : 01.09.2006, 10:31:07 »
А не чем?
Геммороя и правда много, программитс один(я=( ), че делать, не знаю.

Re: Поддержка нескольких магазинов
« Ответ #6 : 04.09.2006, 09:23:07 »
В 1.0.6 ведь сделали поддержку multiple vendors - оно то мне и надо, только криво сделано. Никто не разбирался, не смотрел? Если вдруг у кого есть советы, где чего переписать, то буду рад. У меня как-то раз-через раз работает. Точнее либо нормально работает, либо нет header'а и кнопочек "Сохранить", "Новый" и т.д.

Re: Поддержка нескольких магазинов
« Ответ #7 : 01.11.2006, 11:31:00 »
Теперь этот "проект" пал на меня :-)

Tug, в принципе не все так плохо как казалось - все еще хуже.

Да, не было проведено грамотное планирование....
да вообще работы очень мало было сделано :(

Но придется продолжать:
Самый главный вопрос: зачем в VM есть функция "Список продавцов", если она совершенно не работает?

А поводу нескольких магазинов, проблему можно решить двумя путями:
1. можно для каждого нового магазина создавать отдельную структуру БД _shopXX_product

2. или оставить все в одной базе и фильтровать товары в одной таблице при помощи поля vendor

Вот собственно хочу посоветоваться со знатоками!
*

tug

  • Захожу иногда
  • 333
  • 40 / 4
Re: Поддержка нескольких магазинов
« Ответ #8 : 02.11.2006, 20:42:30 »
Ответ на самый главный вопрос: Она отлично работает.

Re: Поддержка нескольких магазинов
« Ответ #9 : 14.11.2006, 17:41:07 »
:-)

tug, 5 баллов - замечательный ответ.
Итак, с одной стороны кажется, что проще сделать отдельный магазин для каждого вендора, но на будущее лучше все складывать в одну таблицу.

У меня все равно выбора нет: нужно было сделать это хак еще на той неделе...

Поделюсь тем, что уже сделано:

1.  ps_cart.php
в класс ps_cart все равно
$cart['shopid'] = 0;
$_SESSION['cart'][$k]["shopid"]=intval($d["vendor_id"]);

Итак, у меня все равно выбора нет: нужно было сделать это хак еще на той неделе...

Поделюсь тем, что уже сделано:

1. ps_cart.php
в класс ps_cart все равно $cart['shopid'] = 0; придется добавлять переменную для отслеживания вендора

    И собственно потом при добавлении товара в корзину
    $_SESSION['cart'][$k]["shopid"]=intval($d["vendor_id"]);

    Перед этим нужно найти запрос, который обращается к VM_product и формирует массив $d, и дописать в этот запрос поле vendor_id (в базе оно уже есть, и при добавлении товара впринице этот vendor_id записывается правильно)

2. shop.browse.php
Мне не просто было осознать, что скрипт не лезет в базу за информацией о товаре, при нажатии на кнопку "добавить в корзину".
Он берет эту информацию из спратанных полей.
Поэтому нужно добавить
Код
<input type=\"hidden\" name=\"vendor_id\" value=\"".$db_browse->f('vendor_id')."\" />\n
в shop.browse.php в районе 396 строки

И естественно нужно найти запрос (фаил shop_browse_queries.php), который формирует этот массив f() и дописать в этот запрос поле vendor_id.

3.  mod_virtuemart.php
Дальше нужно или отдельны модуль сделать или дописать в mod_virtuemart функцию вывода структуры магазинов.

   Я дописал в mod_virtuemart.
   При этом добавил кусочек кода:
Код
if (isset($_GET['category_id']))
{
require_once(CLASSPATH."ps_database.php");
$db = new ps_DB();
$q  = "SELECT vendor_id FROM #__{vm}_category WHERE category_id = ".intval($_GET['category_id']);
$db->query($q);
$db->next_record();
$_SESSION['shopid'] = $db->f("vendor_id");
}
чтобы, когда мы заходим в определенный магази, в меню отображались категории этого магазина.

и соответствуенно в функцию getCategoryTreeArray нужно добавить "фильтрацию" категорий:
Код
if (isset($_SESSION['shopid']))
{
$query .= " vendor_id=".intval($_SESSION['shopid'])." AND ";
}

4. ps_checkout.php
    Столкнулся со странными сложностями в этом классе. А именно.
    Как должен вести себя скрипт при одновременном заказе товаров из разных магазинов?
    Очевидно, список выбранных в корзину товаров должен делиться на группы по единому вендору и обрабатываться эти группы должны как различные orders.

Добавил вот такой кусок:
Код
		$temp_cart=$_SESSION['cart'];

$vendors=array(); // $vendors - массив номеров вендоров
    for ($ii=0;$ii<$temp_cart['idx'];$ii++)
{
$vendors[$ii]=$temp_cart[$ii]['shopid'];
}
$vendors=array_unique($vendors);
$unique_count=count($vendors);

for($jj=0;$jj<$unique_count;$jj++)
{
$cart=array('idx'=>0);
// массив $cart мы разделяем на несколько массивов
// для каждого вендора свой order
    for ($ii=0;$ii<$temp_cart['idx'];$ii++)
{
if ($temp_cart[$ii]['shopid']==$vendors[$jj])
{
array_push($cart,$temp_cart[$ii]);
$cart['idx']++;
}

}

Еще нужно немного подправить функцию get_order_number - чтобы для этих разделенных заказов формировался различный $order_number.

    Поидее товары одного вендора должны формироваться в массив $cart и обрабатываться как отдельные заказы, однако скрипт в таблицу oreders умудряется сохранять все, что было выбрано в корзину, даже несмотря на то, что фактически в $cart попадают разные товары. Не могу понять почему?

Это собственно грабли какие-то.

5. admin.user_list.php
Почему-то отсутствовала связка пользователь-вендор. Нужно подправлять.
 Т.е. пользователю можно было назначить принадлежность к определенному магазину, но при построении <select'а не вывотилось текущее значение поля vendor_id ... почему-то и щаз я не могу найти его...

6. Я думаю, что с оплатой и доставкой потом будет проще. Главное для начала обеспечить минимальную функциональность.
*

esmark

  • Захожу иногда
  • 91
  • 9 / 0
Re: Поддержка нескольких магазинов
« Ответ #10 : 14.01.2007, 04:14:55 »
Свежий модифицированный компонент, обеспечивающий Multiple Vendor Support - Multi-Store Environment
LM, практически все, что ты предлагал к рассмотрению реализовано, кроме модуля.
Осталось разработать multi-vendor payment & shipping methods.
Цитировать
Я думаю, что с оплатой и доставкой потом будет проще. Главное для начала обеспечить минимальную функциональность.
Минимальная функциональность обеспечена, сделай, пожалуйста, коль проще.
« Последнее редактирование: 14.01.2007, 04:18:04 от esmark »
*

SteelBear

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Поддержка нескольких магазинов
« Ответ #11 : 08.02.2007, 18:05:41 »
О круто вы тут разбираетесь :) может подскажете вообще в администраторе как можно категории привязывать к вендорам? а то в базе они привязаны. а как в админке выбрать для категории определенного вендора я ненашел.

и еще может кто подскажет . вот у меня 2 вендора. я точно знаю что больше не будет как мне для одного сайта подправить где чтобы показывало категории только например  второго вендора?
*

esmark

  • Захожу иногда
  • 91
  • 9 / 0
Re: Поддержка нескольких магазинов
« Ответ #12 : 08.02.2007, 19:07:55 »
Цитировать
может подскажете вообще в администраторе как можно категории привязывать к вендорам?
Заходишь в админке в категорию товара, выбираешь продавца/поставщика из выпадающего списка. Если в вашей версии этого нет, установи сначала компонент Multi-vendor Support.
Цитировать
как мне для одного сайта подправить где чтобы показывало категории только например  второго вендора?
Для этого нужно создавать модуль вендоров, аналогичный модулю производителей, чтобы по выбору продавца выводились товары и категории только данного продавца.
*

SteelBear

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Поддержка нескольких магазинов
« Ответ #13 : 09.02.2007, 12:25:01 »
поставил. сделал все как в реадми. вообще перестал открываться virtuemart :)
пришлось вернуть все как было.
да мне ненадо модулей. у меня вообще не торговый сайт , только показывает разные штуки :).
я разобрался как 'задушить'  на одном сайте других вендоров, но только в выводимом меню

------
   function getCategoryTreeArray( $only_published=true, $keyword = "" ) {

      $db = new ps_DB;
      if( empty( $GLOBALS['category_info']['category_tree'])) {

         // Get only published categories
         $query  = "SELECT category_id, category_description, category_name,category_child_id as cid, category_parent_id as pid,list_order, category_publish
                  FROM #__{vm}_category, #__{vm}_category_xref WHERE #__{vm}_category.vendor_id=2 AND";

-------

вот в конце руками вставляю vendor_id=2 и зашибись. только второго выводит.
мне бы найти в каком селекте еще убрать из основного показа которое посередине с картинками категории которые не относятся ко второму вендору и я буду счастлив :)

*

esmark

  • Захожу иногда
  • 91
  • 9 / 0
Re: Поддержка нескольких магазинов
« Ответ #14 : 09.02.2007, 15:05:39 »
Не знаю, у меня нормально стоит. Возможно у тебя версия не VM 1.0.9, для которого предлагалась модификация.
Цитировать
мне бы найти в каком селекте еще убрать из основного показа которое посередине с картинками категории которые не относятся ко второму вендору и я буду счастлив
Замени в файле shop.index.php строки 24, 25
Код
$query  = "SELECT * FROM #__{vm}_category, #__{vm}_category_xref ";
$query .= "WHERE #__{vm}_category.category_publish='Y' AND ";
на
Код
$query  = "SELECT * FROM #__{vm}_category, #__{vm}_category_xref ";
$query .= "WHERE #__{vm}_category.category_publish='Y' AND #__{vm}_category.vendor_id=2 AND ";
Как хорошо, что так мало нужно людям для счастья. ^-^
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться