Adicionando um bloco CMS via script de instalação

19

Estou trabalhando em um site que possui, acredito que 9 instâncias separadas do Magento, o mesmo site.

Portanto, existem procedimentos rigorosos em torno de qualquer dado de back-end - configuração e até mesmo para blocos CMS.

Gostaria de descobrir como adicionar um bloco CMS por meio de um script de instalação.

Francis Kim
fonte

Respostas:

36

Para isso, sugiro usar a datapasta de um de seus módulos personalizados.
Digamos que o módulo esteja atualmente na versão 1.0.4.

Crie o arquivo data/[module]_setup/data-upgrade-1.0.4-1.0.5.phpcom o seguinte conteúdo:

Editar: nome do arquivo alterado

$content = 'BLOCK CONTENT HERE';
//if you want one block for each store view, get the store collection
$stores = Mage::getModel('core/store')->getCollection()->addFieldToFilter('store_id', array('gt'=>0))->getAllIds();
//if you want one general block for all the store viwes, uncomment the line below
//$stores = array(0);
foreach ($stores as $store){
    $block = Mage::getModel('cms/block');
    $block->setTitle('Block title here');
    $block->setIdentifier('block_identifier_here');
    $block->setStores(array($store));
    $block->setIsActive(1);
    $block->setContent($content);
    $block->save();
}

Depois disso, basta alterar a versão config.xmlpara 1.0.5limpar o cache e atualizar qualquer página.

Marius
fonte
Adicionar um bloco CMS dificilmente é uma correção de bug, portanto a versão do recurso deve ser alterada. 😜
user487772
Faria Mage::app()->getStores()o mesmo?
usar o seguinte comando
4

Em vez de usar a sqlpasta, você deve colocar todos os scripts de configuração que modificam os dados do CMS na datapasta. Veja app/code/core/Mage/Cms/data/cms_setupalguns bons exemplos. Esses scripts de instalação adicionam blocos estáticos e páginas do CMS.

Para alterar os valores de configuração, use este código:

$installer->setConfigData(
    Mage_Page_Model_Config::XML_PATH_CMS_LAYOUTS,
    'your_value_here'
);

Além disso, aqui está um artigo útil

jharrison.au
fonte
1

Você também pode usar o código abaixo no script de atualização:

$installer = $this;
/* @var $installer Mage_Core_Model_Resource_Setup */
$connection = $installer->getConnection();
/* @var $connection Varien_Db_Adapter_Pdo_Mysql */

$installer->startSetup();
$connection->insert($installer->getTable('cms/block'), array(
    'title'             => 'Footer Links',  
    'identifier'        => 'footer-links',
    'content'           => '<ul>\r\n<li><a href=\"{{store direct_url=\"about-magento-demo-store\"}}\">About Us</a></li>\r\n<li class=\"last\"><a href=\"{{store direct_url=\"customer-service\"}}\">Customer Service</a></li>\r\n</ul>',
    'creation_time'     => now(),
    'update_time'       => now(),
));
$connection->insert($installer->getTable('cms/block_store'), array(
    'block_id'   => $connection->lastInsertId(),
    'store_id'  => 0
));
$installer->endSetup();
Bijal Bhavsar
fonte
Você não deve adicionar conteúdo ao banco de dados com SQL direto, se puder ser evitado (o que é quase sempre). Nesse caso, você pode usar o modelo cms / block para adicionar dados com segurança.
Ian
0

O código a seguir cria e atualiza o bloco estático usando scripts magento

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

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

}

Liz Eipe C
fonte