2012-02-17 114 views
0

我正在尋找PHP解決方案以編程方式在Magento中設置CMS主頁。我正在尋找的是當您使用從系統 - >配置 - > Web-> CMS主頁的下拉菜單中選擇頁面標題的手動方法時所獲得的內容。以編程方式在PHP中設置當前在Magento中的CMS /頁面

我已經有方法確定選擇頁面標題集中的任何一個,或者我可以從存儲區中的所有CMS頁面的URL集合中選擇一個。如果我知道頁面標題或URL密鑰,那麼更改當前CMS主頁所需的PHP法師方法是什麼。

我已經想出了創建新CMS頁面的代碼。我只希望能夠選擇它,並在完成後將其主動地設置爲主頁。

編輯:2012年2月18日

嘗試沒有成功如下:

$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(); 

編輯:謝謝你的屏幕截圖。我沒有這些權利。選擇商店時的網址是.../index.php/admin/system_config/edit/section/general/website/base/store/default/

我以爲網站= base,store = default

website store 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的根安裝:

<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(); 

Voila它的工作原理。配置緩存實際上就是它需要清理的全部內容(我手動確認了這一點)。所以清理所有的緩存是有點矯枉過正,但哦,它的工作原理。

+0

你把這段代碼放在哪裏?你在'exception.log'中看到了什麼嗎? – Zyava 2012-02-20 09:03:09

+0

異常日誌中有一些東西。我不認爲它的相關:在/chroot/home/babyhalf/babyhalfoff.com/html/app/Mage.php:550中帶有消息'Invalid block type:checkout_cart'的異常'Mage_Core_Exception'有28層堆棧轉儲,但我不認爲刺激是相關的。它也重複,我只運行一次CMS頁面代碼。 – KyleDugger 2012-02-21 01:34:12

回答

2

這是它。這適用於默認商店,並會將CMS主頁更改爲您輸入的任何內容。顯然,包含此URL的CMS頁面必須存在。如果您指定一個不存在的錯誤,您將在前端出現錯誤。

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

嘗試這種方式:

 $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(); 

要快速找出網站代碼和存儲視圖代碼 - 進入系統 - >配置,在左邊從下拉式需要商店視圖,看看網頁網址:

編輯:

另一種方法,只適用於安裝腳本:

/** @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

+0

感謝您的回覆。我一直試圖讓它在沒有成功的情況下運作。我已將替換爲CMS頁面中的URL Key字段的內容。 (看起來像這是我的網址鍵)我還用管理商店下的網站名稱字段的內容替換了<您的商店網站>。我已將替換爲後端管理商店下的「商店名稱」字段的內容。我甚至嘗試了網站名稱的代碼字段。在我運行代碼並刷新瀏覽器之後,它似乎不會影響當前的CMS頁面。 – KyleDugger 2012-02-19 05:17:21

+0

我也已經修復了示例代碼中的錯字:$ groups ['default']。我知道它會運行,因爲我在添加新代碼後在代碼中打印了。我看到這些打印出來在瀏覽器中。有任何想法嗎?謝謝,凱爾 – KyleDugger 2012-02-19 05:19:26

+0

我編輯了我的答案 - 添加了截圖如何快速找出網站和商店查看代碼,希望它可以幫助你。 – Zyava 2012-02-19 10:07:11

相關問題