2011-08-09 40 views
2

情況現在:Magento的:Storeview訪問

我有一個實時系統及其運行得很好。 我沒有測試系統。

我們的現場系統是一個多商店,在一個網站上有多個商店視圖。

問題:

我需要到livesystem內增加一個storeview而努力上。如何限制對此商店視圖的訪問權限,以便任何客戶(無論是否已登錄)都能看到此商店?這甚至有可能嗎?

我只需要一個管理員(我)來訪問此storeview。

當然,我可以禁用其他直播商店中的所有商店搜索器,但我不認爲這將是我的問題的一個很好的解決方案。 :)

+0

其顯而易見,建立了一個開發網站 –

+0

以及如何合併數據庫?我不想放棄任何訂單或客戶。 – Marek123

+0

老兄,你不需要一個uptodate數據庫來開發。通常它是這樣的,你有開發,分期和生活網站。你只能合併數據庫從現場到開發和舞臺,而不是從開發階段到現場。每個設置你都可以通過模塊設置腳本來完成,這樣你就可以保證你的站點和代碼庫不受限制和可恢復 –

回答

2

如果你不想在你的語言下拉列表中選擇字段中顯示的當前編輯存儲(視圖),請執行以下操作:

  1. 添加所謂的「管理員」一個新的客戶羣,以你的店鋪和記住列表中出現的ID。

  2. 如果尚未進行,添加一個新的客戶管理,並將其分配給剛創建的客戶羣

  3. 轉到系統 - >存儲 - 視圖,單擊StoreView名稱的鏈接 - 你不想顯示在前端和克利克其列,你會看到StoreView ID在URL /index.php/admin/system_store/editStore/store_id/ /按鍵/,記住它

  4. 現在編輯文件: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的任何其他部分,顯示了爲存儲視圖中選擇字段,這只是一個半解決方案。祝你好運:-)

+0

這實際上並沒有阻止訪問,也沒有回答OP的問題。它只是刪除對前端其他商店的引用。如果不想要的用戶知道要訪問的URL,他們仍然可以訪問該網站。 –

1

如果您使用Magento Enterprise,您會得到一箇中轉站點,您可以在將它們推送到生產環境之前進行這些更改。

或者,你可以像上面說的@Anton S那樣做並創建一個開發站點。您將使用Magento的導出功能來移動更改。不是完整的數據庫轉儲/導入。這樣你就不會失去任何客戶和訂單信息。