Ajout d'un bloc CMS via un script de configuration

19

Je travaille sur un site qui a, je crois, 9 instances Magento distinctes, le même site.

Par conséquent, il existe des procédures strictes entourant toutes les données dorsales - la configuration et même pour les blocs CMS.

Je voudrais savoir comment ajouter un bloc CMS via un script de configuration.

Francis Kim
la source

Réponses:

36

Pour cela, je vous conseille d'utiliser le datadossier de l'un de vos modules personnalisés.
Disons que le module est actuellement en version 1.0.4.

Créez le fichier data/[module]_setup/data-upgrade-1.0.4-1.0.5.phpavec le contenu suivant:

Modifier: nom de fichier modifié

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

Après cela, changez simplement la version config.xmlpour 1.0.5vider le cache et actualiser n'importe quelle page.

Marius
la source
L'ajout d'un CMS est un bloc n'est guère un correctif, la version de la fonctionnalité doit donc être bumpée. 😜
user487772
Ferait de Mage::app()->getStores()même?
user487772
4

Au lieu d'utiliser le sqldossier, vous devez placer tous les scripts d'installation modifiant les données CMS dans le datadossier. Voir app/code/core/Mage/Cms/data/cms_setuppour quelques bons exemples. Ces scripts d'installation ajoutent des blocs statiques et des pages CMS.

Pour modifier les valeurs de configuration, utilisez ce code:

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

En outre, Voici un article utile

jharrison.au
la source
1

Vous pouvez également utiliser le code ci-dessous dans le script de mise à niveau:

$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
la source
Vous ne devez pas ajouter de contenu à la base de données avec SQL direct si cela peut être évité (ce qui est presque toujours le cas). Dans ce cas, vous pouvez utiliser le modèle cms / block pour ajouter des données en toute sécurité.
Ian
0

Le code suivant crée et met à jour un bloc statique à l'aide de 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
la source