如何通过安装脚本更新现有的cms页面

时间:2014-02-13 08:34:20

标签: php magento

我有这个脚本

$cmsPage = Array ( 
    'title' => 'Test Page 1',
    'root_template' => 'one_column', 
    'identifier' => 'testpage1', 
    'content' => "<p>Testowa sprawa czy działa update ? oooooooooooo</p>", 
    'is_active' => 1,
    'stores' => array(1), 
    'sort_order' => 0 
);
$collection = Mage::getModel('cms/page')->getCollection()->addFieldToFilter('identifier', 'testpage1');
$page = Mage::getModel('cms/page')->load($collection->getFirstItem()->getId());
$page->setData($cmsPage)->save();

如果存在标识符为“testpage1”的cms页面,则脚本会创建另一个具有相同标识符的页面。有没有办法检查cmspage是否存在 - 如果这是真的 - 请更新吗?

1 个答案:

答案 0 :(得分:4)

当您致电$page->setData($cmsPage)时,您将从Mage_Cms_Model_Page对象中删除所有数据,并将其替换为$cmsPage数组中的数据。您要删除的部分数据是对象的内部page_id数组中的$_datapage_id是将对象映射到cms_page数据库表中的列的内容。通过删除该ID,您可以使Magento运行INSERT查询而不是UPDATE

这样的事情应该有效:

$pageId = $collection = Mage::getModel('cms/page')->getCollection()->addFieldToFilter('identifier', 'testpage1')->getFirstItem()->getId();
$page = Mage::getModel('cms/page')->load($pageId);

$cmsPage = Array ( 
    'page_id' => $pageId,
    'title' => 'Test Page 1',
    'root_template' => 'one_column', 
    'identifier' => 'testpage1', 
    'content' => "<p>Testowa sprawa czy działa update ? oooooooooooo</p>", 
    'is_active' => 1,
    'stores' => array(1), 
    'sort_order' => 0 
);

$page->setData($cmsPage)->save();