Thêm một khối CMS thông qua tập lệnh thiết lập


19

Tôi đang làm việc trên một trang web có, tôi tin rằng 9 trường hợp Magento riêng biệt, cùng một trang web.

Do đó, có các quy trình nghiêm ngặt xung quanh bất kỳ dữ liệu phụ trợ nào - cấu hình và thậm chí cho các khối CMS.

Tôi muốn tìm hiểu làm thế nào để thêm một khối CMS thông qua một tập lệnh thiết lập.

Câu trả lời:


36

Đối với điều này, tôi đề nghị sử dụng datathư mục của một trong các mô-đun tùy chỉnh của bạn.
Hãy nói rằng mô-đun hiện đang ở phiên bản 1.0.4.

Tạo tập tin data/[module]_setup/data-upgrade-1.0.4-1.0.5.phpvới nội dung sau:

Chỉnh sửa: thay đổi tên tập tin

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

Sau đó, chỉ cần thay đổi phiên bản config.xmlđể 1.0.5xóa bộ nhớ cache và làm mới bất kỳ trang nào.


Thêm một CMS là khối hầu như không phải là một lỗi, vì vậy phiên bản tính năng phải bị lỗi. 😜
user487772

Sẽ Mage::app()->getStores()làm như vậy?
dùng487772


4

Thay vì sử dụng sqlthư mục, bạn nên đặt bất kỳ tập lệnh thiết lập nào sửa đổi dữ liệu CMS trong datathư mục. Xem app/code/core/Mage/Cms/data/cms_setupcho một số ví dụ tốt. Các tập lệnh cài đặt này thêm các khối tĩnh và các trang CMS.

Để thay đổi giá trị cấu hình, sử dụng mã này:

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

Ngoài ra, đây là một bài viết hữu ích


1

Bạn cũng có thể sử dụng mã dưới đây trong tập lệnh nâng cấp:

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

Bạn không nên thêm nội dung vào cơ sở dữ liệu bằng SQL trực tiếp nếu có thể tránh được (hầu như luôn luôn như vậy). Trong trường hợp này, bạn có thể sử dụng mô hình cms / khối để thêm dữ liệu một cách an toàn.
Ian

0

Đoạn mã sau tạo và cập nhật khối tĩnh bằng tập lệnh magento

http://www.pearlbells.co.uk/how-to-create-and-update-the-static-blocks-USE-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();

}

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.