Программно установить текущую домашнюю CMS / страницу в Magento на PHP - PullRequest
0 голосов
/ 17 февраля 2012

Я ищу решение в PHP для программной установки домашней страницы CMS в Magento.То, что я ищу, - это то, что вы получаете, когда используете ручной метод выбора заголовка страницы из выпадающего меню в Системе-> Конфигурация-> Веб-> Домашняя страница CMS.

У меня уже есть методычтобы определить, выбрать какой-либо из набора заголовков страниц или я могу выбрать из набора URL-ключей для всех страниц CMS в магазине.Если я знаю либо заголовок страницы, либо URL-ключ, то какие методы PHP Mage необходимы для изменения текущей домашней страницы CMS.

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

Редактировать: 18.02.2012

безуспешно пробовал следующее:

    $groups['default']['fields']['cms_home_page']['value'] = 'city-grips-handle-bar-covers';

    Mage::getModel('adminhtml/config_data')
        ->setSection('web')
        ->setWebsite('Main Website') 
        ->setStore('My Store Name') // Hid Actual Store name here
        ->setGroups($groups)
        ->save();

РЕДАКТИРОВАТЬ: Спасибо за скриншот.У меня не было тех прав.Мой URL при выборе магазина: ... / index.php / admin / system_config / edit / section / general / website / base / store / default /

Что, я предполагаю, означает website = base, store = default

Интернет-магазин http://reefworkshop.com/posts/website_store_url.png

Я изменил код на:

    $groups['default']['fields']['cms_home_page']['value'] = 'city-grips-handle-bar-covers';

    Mage::getModel('adminhtml/config_data')
        ->setSection('web')
        ->setWebsite('base') 
        ->setStore('default')
        ->setGroups($groups)
        ->save();

Но я все еще не показываю изменения выбранной домашней страницы CMS.Я обновляю интерфейс, и он не переключается.Я также попытался очистить кэш без удачи.Есть идеи?Просто к вашему сведению Я использую Magento CE 1.5.1.0

РЕДАКТИРОВАТЬ:

Вот содержимое файла, который я запускаю.Я помещаю файл в корень моей Magento Install.:

<html>
    <head>
    </head>
    <body>
       <?php      
        require_once('app/Mage.php'); //Path to Magento
        umask(0);
        Mage::app(); // Change default to whatever store you want to run

        print('CMS 1<br>'); 
        $groups['default']['fields']['cms_home_page']['value'] = 'city-grips-handle-bar-covers';

        print('CMS 2<br>'); 
        Mage::getModel('adminhtml/config_data')
            ->setSection('web')
            ->setWebsite('base') // Code is the field name
            ->setStore('default')
            ->setGroups($groups)
            ->save();

        print('CMS 3<br>'); 
        ?>          
     </body>
 </html>

При запуске он видит в окне браузера:

CMS 1
CMS 2
CMS 3

РЕДАКТИРОВАТЬ: ОК Итак, я нашел решение(это работает), которое было вдохновлено последним предложенным решением:

require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app(); // Change default to whatever store you want to run

$Config = new Mage_Core_Model_Config();
$Config ->saveConfig('web/default/cms_home_page', "city-grips-handle-bar-covers");
Mage::app()->cleanCache();

Вуаля, это работает.Кеш конфигурации - это действительно все, что нужно было почистить (я подтвердил это вручную).Так что очистка всего кеша немного излишня, но да ладно, работает.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Вот оно.Это работает в хранилище по умолчанию и изменит домашнюю страницу CMS на то, что вы вставили.Очевидно, что страница CMS с этим URL должна существовать.Вы получите ошибку в интерфейсе, если вы укажете несуществующую.

require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app(); // Change default to whatever store you want to run

$Config = new Mage_Core_Model_Config();
$Config ->saveConfig('web/default/cms_home_page', "<URL-Key-goes-here>");
Mage::app()->cleanCache();
2 голосов
/ 19 февраля 2012

Попробуйте следующим образом:

        $groups['default']['fields']['cms_home_page']['value'] = '<your_cms_page_url_key>';

        Mage::getModel('adminhtml/config_data')
            ->setSection('web')
            ->setWebsite('<your_website_code>')
            ->setStore('<your_store_view_code>')
            ->setGroups($groups)
            ->save();

Чтобы быстро найти код веб-сайта и код магазина - перейдите в раздел «Система» -> «Конфигурация», выберите нужный вид магазина в раскрывающемся меню слева и посмотрите URL-адрес страницы:

РЕДАКТИРОВАТЬ:

Другой подход, работает только в сценарии установки:

/** @var $installer Mage_Catalog_Model_Resource_Eav_Mysql4_Setup */

/** @var $store Mage_Core_Model_Store */
$store = Mage::getModel('core/store');
$store->load('<needed_store_code_>');

$installer->setConfigData('web/default/cms_home_page','<your_cms_page_url_key>','stores',$store->getId())

enter image description here

...