Magento:Storeview Access

时间:2011-08-09 09:20:21

标签: magento access-control

现在的情况:

我有一个实时系统并且运行良好。 我没有测试系统。

我们的实时系统是一个多商店,在一个网站上有多个商店浏览量。

问题:

我需要再添加一个storeview并在该系统中进行处理。如何限制对此商店视图的访问权限,以便没有客户(无论是否登录)都可以看到此商店?这甚至可能吗?

我只需要一个管理员(我)来访问此商店视图。

当然,我可以禁用其他实体店中的所有商店开关,但我不认为,这对我的问题来说是一个很好的解决方案。 :)

2 个答案:

答案 0 :(得分:2)

如果您不想在语言下拉列表选择字段中显示当前编辑的商店(视图),请执行以下操作:

  1. 在您的商店中添加一个名为“admins”的新客户组,并记住列表中显示的ID。

  2. 如果尚未完成,请为管理员添加新客户并将其分配给刚创建的客户组

  3. 转到system->商店视图,然后点击StoreView名称中的链接 - 您不想在前端显示该列并点击它,您将在网址中看到StoreView ID /index.php/admin/system_store/editStore/store_id/3/key/,记住它

  4. 现在编辑文件:app / design / frontend / default / your_shop / template / page / switch / languages.phtml

  5. 从:

    <?php if(count($this->getStores())>1): ?>
    <div class="form-language">
        <label for="select-language"><?php echo $this->__('Your Language:') ?></label>
        <select id="select-language" title="<?php echo $this->__('Your Language') ?>" onchange="window.location.href=this.value">
        <?php foreach ($this->getStores() as $_lang): ?>
            <?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' : '' ?>
            <option value="<?php echo $_lang->getCurrentUrl() ?>"<?php echo $_selected ?>><?php echo $this->htmlEscape($_lang->getName()) ?></option>
        <?php endforeach; ?>
        </select>
    </div>
    <?php endif; ?>
    

    为:

    <?php 
    // StoreView-Ids we dont want to show on frontend
    $stores = array(3);
    // Set admin group id with access to the above storeviews
    $frontendAdminGroupId = 5; 
    // Get current user group id
    $currentGroupId = $this->helper('customer')->getCurrentCustomer()->group_id;
    ?>
    <?php if(count($this->getStores())>1): ?>
    <div class="form-language">
        <label for="select-language"><?php echo $this->__('Your Language:') ?></label>
        <select id="select-language" title="<?php echo $this->__('Your Language') ?>" onchange="window.location.href=this.value">
        <?php foreach ($this->getStores() as $_lang): ?>   
            <?php foreach ($stores as $_adminStore) : ?>            
                <?php /* Admin Store! */?>
                <?php if($_adminStore == $_lang->getId() ) : ?>
                    <?php if($currentGroupId == $frontendAdminGroupId) : ?> 
                        <?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' : '' ?>
                        <option value="<?php echo $_lang->getCurrentUrl() ?>"<?php echo $_selected ?>><?php echo $this->htmlEscape($_lang->getName()) ?></option>
                    <?php endif; ?>
                <?php else: ?>
                <?php /* Normal User! */?>
                     <?php $_selected = ($_lang->getId() == $this->getCurrentStoreId()) ? ' selected="selected"' : '' ?>
                    <option value="<?php echo $_lang->getCurrentUrl() ?>"<?php echo $_selected ?>><?php echo $this->htmlEscape($_lang->getName()) ?></option>
                <?php endif; ?>
            <?php endforeach; ?>    
        <?php endforeach; ?>
        </select>
    </div>
    <?php endif; ?>
    

    你还必须编辑结帐和magento的任何其他部分,它们会显示商店视图的选择字段,这只是一半的解决方案。祝你好运: - )

答案 1 :(得分:1)

如果您使用Magento Enterprise,您将获得一个临时站点,您可以在将其推送到生产环境之前进行这些更改。

或者,您可以像@Anton S上面所说的那样创建一个开发站点。您可以使用Magento的导出功能来移动更改。不是完整的数据库转储/导入。这样您就不会丢失任何客户和订单信息。