2012-04-30 3 views
0

Мы пытаемся настроить простой сайт BTB для поддержки наших розничных продавцов (где-то они могут загружать текст продукта/изображения и корпоративный брендинг). Мы используем Joomla 1.5.2 и Virtuemart 1.1.9Показать только продукты Virtuemart на основе зарегистрированного входа

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

И мы также хотим использовать регистрацию VM для регистрации новых пользователей.

Я установил безопасный доступ для категорий/продуктов, используя пункты меню Joomla, указывающие на категории virtuemart, и установите для пункта меню доступ к «зарегистрированным». Работал отлично, пользователь не вошел в систему, не видел ничего, кроме страницы всплеска. При входе в систему все категории продуктов были доступны через пункты меню.

Но мы просто поняли, что это испортило регистрацию пользователя. Мы хотим использовать пользовательский реестр Virtuemarts, поэтому нам не нужно собирать все эти данные (адресную информацию и т. Д.), А также возвращаться и вводить вручную.

Очевидно, что с элементами меню виртуоза, установленными на «зарегистрированный» доступ, пользователь перенаправляется на страницу регистрации joomla (которая не собирает данные, которые нам нужны в Virtuemart). Я вставил действительный URL-адрес регистрации виртуальной машины везде, где я мог найти в файлах входа в систему (com_user и mod_user), но не повезло (не думал, что это сработает, новичок).

Кто-нибудь знает, есть ли обходной путь? Или лучший способ сделать это?

спасибо.

ответ

0

Я могу с полной уверенностью сказать, что вам потребуется внести незначительную корректировку в код VM, если вы хотите это сделать. Препятствие заключается в том, что виртуальная машина использует тот же самый пункт меню, как и по умолчанию, по всему сценарию, поэтому даже если вы создаете другой пункт меню для регистрации, он всегда будет возвращаться к первому, что у вас было.

Единственный способ обойти это небольшой взлом в функции VM, который всегда заставляет это произойти. Поместите приведенный ниже код на с самого начала функции getShopItemid(), расположенной в ps_session.php где-то рядом с линией 459. Оставьте весь существующий код на месте, но это необходимо для запуска до.

/*Hack For multiple VM menu itemids, if there is a page specified, find THAT Itemid */ 
    global $page; 
    if($_REQUEST['Itemid']) { 
     $_REQUEST['shopItemid'] = $_REQUEST['Itemid']; 
    } elseif($page) { 
     $db_hack = new ps_DB; 
     $q = "SELECT id FROM #__menu WHERE link='index.php?option=com_virtuemart' AND published=1 AND params like '%page=".$page."%'"; 
     $db_hack->query($q); 
     if($db_hack->next_record()) { 
      $_REQUEST['shopItemid'] = $db_hack->f("id"); 
     } 
    } 

После того, как это на месте, вы должны будете иметь пункт меню Joomla, который включает в себя по крайней мере, это:

option=com_virtuemart&page=shop.registration 

С этим пунктом меню в базе данных, приведенный выше код будет найти пункт меню для этой страницы и используйте этот вариант вместо метода VM по умолчанию. Безопасность Joomla будет срабатывать так, как вы ожидаете, потому что у нее есть правильный пункт меню.

+0

Спасибо !!! Работает отлично и очень полезно! – user1366794

Смежные вопросы