Magento: доступ к магазину - PullRequest
       20

Magento: доступ к магазину

2 голосов
/ 09 августа 2011

Ситуация сейчас:

У меня есть живая система, и она работает очень хорошо.У меня нет системы тестирования.

Наша живая система представляет собой мульти-магазин с несколькими магазинами на одном веб-сайте.

ПРОБЛЕМА:

Мне нужно добавить еще один обзор магазина и поработать над этим в этой жизненной системе.Как я могу ограничить доступ к этому представлению магазина, чтобы ни один клиент, вошедший в систему или нет, не мог видеть этот магазин?Это вообще возможно?

Мне нужен только администратор (я), чтобы получить доступ к этому представлению магазина.

Конечно, я мог бы отключить все переключатели в других live-магазинах, но я не думаю,это было бы хорошим решением моей проблемы.:)

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

Если вы не хотите, чтобы в текущем поле выбора языка отображалось отредактированное хранилище (просмотр), выполните следующие действия:

  1. Добавьте новую группу клиентов под названием "admins" в свой магазин и запомните идентификатор, который появляется в списке.

  2. Если это еще не сделано, добавьте нового клиента для администратора и назначьте его только что созданной группе клиентов

  3. Перейдите в system-> store-view и нажмите на ссылку в столбце StoreView Name - столбец, который вы не хотите показывать на внешнем интерфейсе, и кликнув его, вы увидите идентификатор StoreView в url / index.php / admin / system_store / editStore / store_id / 3 / key /, запомните это

  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, в которой отображается поле выбора для представления магазина, это всего лишь половина решения. удачи: -)

1 голос
/ 09 августа 2011

Если вы используете Magento Enterprise, вам предоставляется промежуточный сайт, на котором вы сможете внести эти изменения, прежде чем отправлять их в производство.

Или вы можете сделать, как сказал выше @Anton S, и создать сайт для разработки. Вы бы использовали функциональность экспорта Magento, чтобы перенести изменения. НЕ полный дамп / импорт базы данных. Таким образом, вы не потеряете информацию о клиентах и ​​заказах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...