Magento:为CMS页面添加(和检索)自定义数据库字段

时间:2010-05-04 21:48:10

标签: mysql content-management-system magento

我想将自定义参数分配给Magento中的CMS页面(即“关于”,“客户服务”等),以便对它们进行分组。

最终目标是使用每个页面的参数在导航菜单中显示(或隐藏)它们。在页面/ html块中编写一个快速方法来检索菜单的页面(仅限活动)很容易,但我无法弄清楚如何对它们进行分组以便“推荐”,“历史”和“联系”是与'about'相关联,'return policy','shipping'和'contact'与'customer service'相关联。

非常感谢任何指导我正确方向的帮助。

谢谢!

4 个答案:

答案 0 :(得分:0)

不幸的是,cms页面不是实体,不支持自定义属性。

我的建议是重载Mage_Cms_Model_Page,用你的数据创建一个关联的表,并在新的类构造函数中为your_page对象分配一个新属性。

答案 1 :(得分:0)

我决定朝这个方向走另一个方向。这就是我所做的。

在管理界面中:

  1. 为每个页面创建静态块(即“页面:关于”)
  2. 创建了名为CMS(URL密钥:内容)的产品类别,将“已激活”设置为“否”
  3. 为每个内容类别创建子类别(即“约”)。将“活动”设置为“是”,将“显示模式”设置为“仅静态阻止”并选择相应的静态块。
  4. 如上所述为每个内容类别创建子类别。
  5. 在代码中:

    1. 在Catalog / Block / Navigation.php的(本地副本)中创建了两个新方法,以获取当前父类别及其子类:

      public function getNavCategory($category)
      {
      
          if($category->getLevel() == 3){
      
          return $category;
      
      } else {
      
          $parentCategory = Mage::getModel('catalog/category')->load($category->getParentId());
      
          return $parentCategory;
      }
      }
      
      public function getNavChildCategories($category)
      {
      
          $layer = Mage::getSingleton('catalog/layer');
      
          /* @var $category Mage_Catalog_Model_Category */
          $categories = $category->getChildrenCategories();
          $productCollection = Mage::getResourceModel('catalog/product_collection');
          $layer->prepareProductCollection($productCollection);
          $productCollection->addCountToCategories($categories);
          return $categories;
      }
      
    2. 创建了app / design / frontend / MYINTERFACE / MYTHEME / template / catalog / navigation / left.phtml的修改版本,以迭代类别和子类别。工作示例位于:http://67.228.100.26/content/about

答案 2 :(得分:0)

也许只使用admin中的URL键字段作为您的类别分母? E.g:

CMS第1页URL密钥:about / testimonials CMS第2页URL密钥:about / history CMS第3页URL密钥:about / contact CMS第4页URL密钥:customer-service / return-policy ...

然后在模板中循环遍历它们,或者在自定义块类中使用方法,使用正则表达式将它们组合在一起,基于斜杠前的第一部分。

答案 3 :(得分:0)

您是否希望使用setData / getData存储自定义值?它适用于自定义块 - 我在控制器中设置值并在块渲染时读取它。