Разная домашняя страница для каждого клиента


Привет, у меня есть вопрос, можно ли создать один статический блок, чтобы получать разный контент для каждого клиента, который вошел в систему. И с этим, чтобы получить другую домашнюю страницу для клиентов.

Author: Amit Bera, 2014-08-05

3 answers

Интересная идея.
Если бы я реализовал что-то подобное, я бы сделал это так.
Давайте начнем с другой домашней страницы.
Действие, которое отображает домашнюю страницу, является Mage_Cms_IndexController::indexAction.
По умолчанию это выглядит так:

public function indexAction($coreRoute = null)
{
    $pageId = Mage::getStoreConfig(Mage_Cms_Helper_Page::XML_PATH_HOME_PAGE);
    if (!Mage::helper('cms/page')->renderPage($this, $pageId)) {
        $this->_forward('defaultIndex');
    }
}

Это означает, что magento получает страницу, которую вы установили в качестве домашней страницы в system->конфигурация, и отображает ее.
Если такой страницы нет, она возвращается на страницу по умолчанию.

Я бы переписал это действие и применил к нему свою логику. Конечно существует проблема управления этими домашними страницами. Но это зависит от вас.

Что касается блоков, то это должно быть проще.
Просто создайте один статический блок с таким содержимым:

{{block type="core/template" template="path/to/template.phtml"}}  

И вы можете поместить свою логику в path/to/template.phtml, где вы можете получить доступ к текущему клиенту следующим образом:

$customer = Mage::getSingleton('customer/session')->getCustomer();
 1
Author: Marius, 2014-08-05 12:11:42

Уверен, что это возможно.

Поместите phtml в содержимое страницы, используя этот синтакс

{{block type="core/template" template="page/home_content.phtml"}}

Внутри этого home_content.phtml поместите этот код

if(Mage::getSingleton('customer/session')->isLoggedIn()) {
$customer = Mage::getSingleton('customer/session')->getCustomer();
if($customer->isMyFriend()) //Check some data into customer 
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('cms_block_id_friend')->toHtml();
else
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('cms_block_id_foe')->toHtml();
}
else
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('cms_block_not_logged_in')->toHtml();

Конечно, это всего лишь скелет, но его должно быть достаточно, чтобы направить вас в правильном направлении

 2
Author: Giuseppe, 2014-08-05 12:18:03

Вы можете сделать это с группами клиентов и показать другой блок в соответствии с группой, в которой находится клиент. Вам придется кодировать это самостоятельно, так как я не видел никаких расширений для достижения этой цели.

 0
Author: mbalparda, 2014-08-05 12:09:52