2012-04-30 78 views
0

我們正試圖建立一個簡單的BTB站點,以支持我們的零售商Virtuemart產品(地方他們可以下載產品的文字/圖片和企業品牌)。我們正在使用Joomla 1.5.2和Virtuemart 1.1.9只顯示基於註冊登錄

我們希望它是完全安全的(未註冊的觀衆 - 和競爭對手 - 只需看簡單的介紹頁面,然後登錄並選擇註冊)。根本沒有任何內容。

而且我們也希望使用虛擬機註冊來註冊新用戶。

我設置了使用Joomla菜單項指出virtuemart分類,並設置菜單項獲得「註冊」類別/產品的安全訪問。完美的工作,用戶沒有登錄,沒有看到任何東西,但閃屏頁。登錄後,所有產品類別均可通過菜單項獲得。

但是我們剛剛意識到這會弄亂用戶註冊。我們希望使用Virtuemarts用戶註冊,因此我們不必收集所有數據(地址信息等)並返回並手動輸入。

顯然,在virtmart菜單項設置爲「註冊」訪問時,用戶被重定向到joomla的註冊頁面(它不會收集我們需要的數據到Virtuemart中)。我已經在後端登錄文件(com_user和mod_user)中找到了有效的VM註冊url,但沒有運氣(沒想到這會起作用,我是初學者)。

任何人都知道是否有解決方法?或者更好的方法來做到這一點?

謝謝。

回答

0

我可以告訴絕對肯定,如果你想做到這一點,你需要做一個小的調整在VM代碼。障礙在於虛擬機使用與整個腳本默認相同的菜單項ID,所以即使您爲註冊創建了不同的菜單項,也總是會回退到第一個菜單項。

解決這個問題的唯一辦法是在VM功能總是迫使這種事情發生一個小的黑客攻擊。把下面的代碼在最開始的位於ps_session.php某處大約459線留在地方所有現有的代碼功能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"); 
     } 
    } 

一旦到位,就需要有一個至少包括這樣一個Joomla菜單項:

option=com_virtuemart&page=shop.registration 

與數據庫中該菜單項,上面的代碼會發現該頁面的菜單項,並使用該項而不是默認的VM方法。 Joomla安全性將按照您的期望觸發,因爲它具有正確的菜單項。

+0

謝謝!!!作品很好,非常有幫助! – user1366794