2012-04-30 4 views
0

우리는 소매 업체 (제품 텍스트/이미지 및 기업 브랜딩을 다운로드 할 수있는 곳)를 지원할 수 있도록 간단한 BTB 사이트를 설정하려고합니다. 우리는 Joomla 1.5.2와 버추 마트를 사용하고 있습니다. 1.1.9은 등록 된 로그인을 기반으로 한 버추 마트 제품 만 표시합니다.

우리는 이것이 완전히 안전하기를 원합니다 (등록되지 않은 시청자와 경쟁자 - 간단한 소개 페이지 만보고 등록 옵션으로 로그인하십시오). 전혀 콘텐츠가 아닙니다.

또한 새로운 사용자를 등록 할 때 VM 등록을 사용하려고합니다.

virtuemart 카테고리로 지정된 Joomla 메뉴 항목을 사용하여 카테고리/제품에 대한 보안 액세스를 설정하고 메뉴 항목 액세스를 "등록"으로 설정합니다. 완벽한 작업, 로그인하지 않은 사용자, 스플래시 페이지가 보이지 않습니다. 로그인하면 모든 제품 범주를 메뉴 항목을 통해 사용할 수 있습니다.

그러나 우리는 이것이 사용자 등록을 엉망으로 만듭니다. 우리는 Virtuemarts 사용자 등록 번호를 사용하여 모든 데이터 (주소 정보 등)를 수집하고 다시 돌아와 직접 입력 할 필요가 없습니다.

사실, virtuemart 메뉴 항목을 "등록 된"액세스로 설정하면 사용자는 joomla의 등록 페이지로 리디렉션됩니다.이 페이지는 Virtuemart에 필요한 데이터를 수집하지 않습니다. 내가 유효한 백엔드 로그인 파일 (com_user 및 mod_user)에서 찾을 수있는 모든 곳의 유효한 VM 등록 URL을 붙여 넣었지만 아무런 행운도 없다고 생각했습니다 (초급).

해결 방법이 있다면 누구든지 알 수 있습니까? 또는 이것을하는 더 좋은 방법?

감사합니다.

답변

0

VM 코드에서 약간의 조정이 필요하다는 것을 확실하게 말할 수 있습니다. VM이 스크립트 전반에 걸친 기본 메뉴 항목 ID와 동일한 메뉴 항목 ID를 사용한다는 것이 장애물이기 때문에 등록을 위해 다른 메뉴 항목을 만들더라도 항상 처음 항목으로 돌아갈 것입니다.

이 문제를 해결할 수있는 유일한 방법은 항상 VM을 강제 종료하는 작은 해킹입니다. ps_session.php 어딘가에있는 getShopItemid() 함수의 시작 부분에을 넣으십시오. 모든 기존 코드는 그대로 두지 만 을 실행해야 전에 실행해야합니다.

/*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"); 
     } 
    } 

이 자리에되면, 당신은 적어도이 포함 된 줌라 메뉴 항목이 있어야합니다 : 데이터베이스에서 해당 메뉴 항목으로

option=com_virtuemart&page=shop.registration 

을 위의 코드는 찾을 해당 페이지의 메뉴 항목을 선택하고 기본 VM 방법 대신 해당 항목을 사용하십시오. 그것이 올바른 메뉴 항목을 가지고 있기 때문에 당신이 기대하는대로 Joomla 보안 트리거됩니다.

+0

고맙습니다! 위대한 작품과 매우 도움이! – user1366794

관련 문제