2012-06-14 52 views
2

我有一個靜態塊,我想通過一個腳本更新通過cron運行的腳本。Magento - 以編程方式保存靜態塊內容

我已經找到了如何以編程方式創建或檢索塊,但不知道如何編輯現有的塊。

這個工程檢索塊:

// Retrieve the layout object 
$layout = Mage::getSingleton('core/layout'); 

// Generate a CMS block object 
$block = $layout->createBlock('cms/block'); 

// Set the block ID of the static block 
$block->setBlockId('my_block_id'); 

// Write the static block content to screen 
echo $block->toHtml(); 

我想我失去了一些東西簡單在這裏,但這樣做setContent(),然後保存()在該塊只是導致「無效的方法Mage_Cms_Block_Block ::保存」

回答

7

通過塊ID:

Mage::getModel('cms/block')->load($id) 
    ->setData('content', 'Example content') 
    ->save(); 

通過標識符:

Mage::getModel('cms/block') 
    ->getCollection() 
    ->addFieldToFilter('identifier', 'my_block_id') 
    ->load() 
    ->setData('content', 'Example content') 
    ->save(); 
+0

謝謝,這個工程很好。 – jsims281

6
$identifier = 'footer_links'; 
Mage::getModel('cms/block') 
    ->load($identifier, 'identifier') 
    ->setData('content', 'Your new block content') 
    ->save() 
; 

或者,如果你知道塊ID:

$id = 1; 
Mage::getModel('cms/block') 
    ->load($id) 
    ->setData('content', 'Your new block content') 
    ->save() 
; 
+0

謝謝,這個作品很棒,diNord只是毆打你的答案,所以我會給他接受! – jsims281

0

更新和使用Magento的腳本

function createBlock($blockData) { 

$block = Mage::getModel('cms/block')->load($blockData['identifier']); 
$block->setTitle($blockData['title']); 
$block->setIdentifier($blockData['identifier']); 
$block->setStores(array($blockData['storeId'])); 
$block->setIsActive($blockData['active']); 
$block->setContent($blockData['content']); 
$block->save(); 

}

請參見我的博客一步一步添加靜態塊解釋

http://www.pearlbells.co.uk/how-to-create-and-update-the-static-blocks-using-magento-script/