现在的情况:
我有一个实时系统并且运行良好。 我没有测试系统。
我们的实时系统是一个多商店,在一个网站上有多个商店浏览量。
问题:
我需要再添加一个storeview并在该系统中进行处理。如何限制对此商店视图的访问权限,以便没有客户(无论是否登录)都可以看到此商店?这甚至可能吗?
我只需要一个管理员(我)来访问此商店视图。
当然,我可以禁用其他实体店中的所有商店开关,但我不认为,这对我的问题来说是一个很好的解决方案。 :)
答案 0 :(得分:2)
如果您不想在语言下拉列表选择字段中显示当前编辑的商店(视图),请执行以下操作:
在您的商店中添加一个名为“admins”的新客户组,并记住列表中显示的ID。
如果尚未完成,请为管理员添加新客户并将其分配给刚创建的客户组
转到system->商店视图,然后点击StoreView名称中的链接 - 您不想在前端显示该列并点击它,您将在网址中看到StoreView ID /index.php/admin/system_store/editStore/store_id/3/key/,记住它
现在编辑文件:app / design / frontend / default / your_shop / template / page / switch / languages.phtml
从:
<?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的导出功能来移动更改。不是完整的数据库转储/导入。这样您就不会丢失任何客户和订单信息。