0

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

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

而且我们还想使用VM注册来注册新用户。

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

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

显然,在将 mercurialmart 菜单项设置为“注册”访问的情况下,用户会被重定向到 joomla 的注册页面(它不会将我们需要的数据收集到 Virtuemart)。我在后端登录文件(com_user 和 mod_user)中可以找到的任何地方都粘贴了一个有效的 VM 注册 url,但没有运气(我认为这行不通,我是初学者)。

任何人都知道是否有解决方法?或者更好的方法来做到这一点?

谢谢你。

4

1 回答 1

0

我可以肯定地说,如果你想这样做,你需要在 VM 代码中做一个小的调整。障碍是 VM 在整个脚本中使用与默认菜单项 ID 相同的菜单项 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 安全将按您的预期触发,因为它具有正确的菜单项。

于 2012-04-30T22:34:39.867 回答