仅显示基于注册登录的Virtuemart产品

时间:2012-04-30 22:25:46

标签: joomla joomla1.5 virtuemart

我们正在尝试设置一个简单的BTB网站来支持我们的零售商(他们可以下载产品文本/图像和企业品牌)。我们使用的是Joomla 1.5.2和Virtuemart 1.1.9

我们希望它是完全安全的(未注册的观众 - 和竞争 - 只需看简单的介绍页面,并使用注册选项登录)。完全没有任何内容。

我们还希望使用VM注册来注册新用户。

我使用指向virtmart类别的Joomla菜单项设置类别/产品的安全访问,并将菜单项访问权限设置为“已注册”。工作完美,用户未登录,除了启动页面外什么都看不到。登录后,所有产品类别均可通过菜单项获得。

但我们刚刚意识到这会扰乱用户注册。我们希望使用Virtuemarts用户注册表,因此我们不必收集所有数据(地址信息等)并返回并手动输入。

显然,将virtuemart菜单项设置为“已注册”访问权限,用户将被重定向到joomla的注册页面(不会将我们需要的数据收集到Virtuemart中)。我已经在后端登录文件(com_user和mod_user)中找到了有效的VM注册URL,但没有运气(不认为这样可行,我是初学者)。

任何人都知道是否有解决方法?或者更好的方法呢?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果你想这样做,我绝对可以确定你需要对VM代码进行微调。障碍是VM在整个脚本中使用与默认相同的菜单项ID,因此即使您为注册创建了不同的菜单项,它也总是会回到您拥有的第一个菜单项。

解决这个问题的唯一方法是VM功能中的一个小小的黑客行为总是迫使这种情况发生。将以下代码放在位于第459行附近的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");
        }
    }

一旦这个到位,你需要有一个至少包含这个的Joomla菜单项:

option=com_virtuemart&page=shop.registration

使用数据库中的该菜单项,上面的代码将找到该页面的菜单项,并使用该菜单项而不是默认的VM方法。 Joomla安全性将按预期触发,因为它具有正确的菜单项。