सेटअप स्क्रिप्ट के माध्यम से CMS ब्लॉक जोड़ना


19

मैं एक ऐसी साइट पर काम कर रहा हूं, जिसमें मेरा मानना ​​है कि 9 अलग-अलग मैगेंटो इंस्टेंसेस, एक ही साइट।

इसलिए किसी भी बैक-एंड डेटा के आसपास सख्त प्रक्रियाएं हैं - कॉन्फ़िगरेशन और यहां तक ​​कि सीएमएस ब्लॉकों के लिए भी।

मैं यह जानना चाहूंगा कि सेटअप स्क्रिप्ट के माध्यम से सीएमएस ब्लॉक को कैसे जोड़ा जाए।

जवाबों:


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.xmlको 1.0.5साफ़ करने और किसी भी पेज को रिफ्रेश करने के लिए संस्करण में बदलाव करें।


सीएमएस जोड़ना ब्लॉक है, शायद ही कोई बगफिक्स हो ताकि फीचर वर्जन को टक्कर दी जाए। 😜
user487772

क्या Mage::app()->getStores()ऐसा ही होगा ?
user487772


4

sqlफ़ोल्डर का उपयोग करने के बजाय , आपको किसी भी सेटअप स्क्रिप्ट को dataफ़ोल्डर में सीएमएस डेटा को संशोधित करना चाहिए । app/code/core/Mage/Cms/data/cms_setupकुछ अच्छे उदाहरणों के लिए देखें । ये स्क्रिप्ट्स स्टैटिक ब्लॉक और सीएमएस पेज जोड़ती हैं।

कॉन्फ़िगरेशन मान बदलने के लिए, इस कोड का उपयोग करें:

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

यदि आपको टाला जा सकता है (जो लगभग हमेशा होता है) तो आपको डायरेक्ट एसक्यूएल के साथ डेटाबेस में सामग्री नहीं जोड़ना चाहिए। इस स्थिति में आप डेटा सुरक्षित रूप से जोड़ने के लिए मॉडल सेमी / ब्लॉक का उपयोग कर सकते हैं।
इयान

0

निम्नलिखित कोड मैग्नेटो स्क्रिप्ट का उपयोग करके स्थिर ब्लॉक बनाते हैं और अपडेट करते हैं

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

}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.