설정 스크립트를 통해 CMS 블록 추가


19

나는 9 개의 별도의 Magento 인스턴스가 동일한 사이트를 가지고있는 사이트에서 작업하고 있습니다.

따라서 모든 백엔드 데이터 (구성 및 CMS 블록)를 둘러싼 엄격한 절차가 있습니다.

설정 스크립트를 통해 CMS 블록을 추가하는 방법을 찾고 싶습니다.

답변:


36

이를 data위해 사용자 정의 모듈 중 하나의 폴더를 사용하는 것이 좋습니다 .
모듈이 현재 버전이라고 가정 해 봅시다 1.0.4.

data/[module]_setup/data-upgrade-1.0.4-1.0.5.php다음 내용으로 파일 을 작성하십시오 .

편집 : 변경된 파일 이름

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

그런 다음 버전을 변경하여 캐시 config.xml1.0.5지우고 페이지를 새로 고치십시오.


CMS를 추가하는 것은 블록 수정이 아니며 기능 버전이 충돌해야합니다. 😜
user487772

겠습니까 Mage::app()->getStores()동일한 작업을 수행?
user487772


4

sql폴더 를 사용하는 대신 폴더에 CMS 데이터를 수정하는 모든 설정 스크립트를 넣어야 data합니다. app/code/core/Mage/Cms/data/cms_setup좋은 예를 참조하십시오 . 이러한 설치 스크립트는 정적 블록 및 CMS 페이지를 추가합니다.

구성 값을 변경하려면 다음 코드를 사용하십시오.

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

또한 유용한 기사가 있습니다.


1

업그레이드 스크립트에서 아래 코드를 사용할 수도 있습니다.

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

직접 SQL을 사용하여 데이터베이스를 피할 수있는 경우 (항상 항상) 내용을 데이터베이스에 추가해서는 안됩니다. 이 경우 cms / block 모델을 사용하여 데이터를 안전하게 추가 할 수 있습니다.
Ian

0

다음 코드는 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();

}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.