Magento - программно сохранять содержимое статического блока

У меня есть статический блок, который я хотел бы обновить с помощью скрипта, который запускается через cron.

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

Это работает для извлечения блока:

// 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(), а затем save() в этом блоке просто приводит к "Недопустимому методу Mage_Cms_Block_Block::save"


person jsims281    schedule 14.06.2012    source источник


Ответы (3)


По идентификатору блока:

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();
person vikcherniy    schedule 14.06.2012

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

Или, если вы знаете идентификатор блока:

$id = 1;
Mage::getModel('cms/block')
    ->load($id)
    ->setData('content', 'Your new block content')
    ->save()
;
person Drew Hunter    schedule 14.06.2012
comment
Спасибо, это отлично работает, ДиНорд только что опередил вас в ответе, поэтому я дам ему согласие! - person jsims281; 14.06.2012

Обновите и добавьте статический блок с помощью скриптов 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/

person Liz Eipe C    schedule 05.11.2016