【问题标题】:Magento: Add (and retrieve) custom database field for CMS pagesMagento:为 CMS 页面添加(和检索)自定义数据库字段
【发布时间】:2010-05-04 21:48:10
【问题描述】:

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

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

任何能帮助我指明正确方向的人都将不胜感激。

谢谢!

【问题讨论】:

  • 我应该补充/澄清一下,我的理想解决方案是在后端添加一个文本字段,可以在其中输入组(如果有多个组,则以逗号分隔)。

标签: mysql content-management-system magento


【解决方案1】:

很遗憾,cms 页面不是实体,不支持自定义属性。

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

【讨论】:

  • 埃尔佐:谢谢。我认为这是我需要进入的方向。但是,它仍然不符合要求(就客户想要/需要的而言)。结果我决定走不同的方向(见我自己的答案)。
【解决方案2】:

也许只是使用 admin 中的 URL 键字段作为您的类别分母?例如:

CMS 第 1 页 URL 键:about/testimonials CMS 页面 2 URL 键:about/history CMS 页面 3 URL 键:关于/联系 CMS 第 4 页 URL 键:customer-service/return-policy ...

然后只需在您的模板中循环遍历它们,或者在自定义块类中使用一个方法根据斜线之前的第一部分使用正则表达式将它们组合在一起。

【讨论】:

  • 是的,这就是我最终所做的。在自定义块中使用方法(带正则表达式)来创建导航层次结构并循环访问活动结果。似乎工作得很好,尤其是在将 CMS 页面添加到搜索结果时。对客户来说不是 100% 理想,但肯定是可行的。谢谢!
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    我决定朝着不同的方向发展。这就是我所做的。

    在管理界面中:

    1. 为每个页面创建静态块(即“页面:关于”)
    2. 创建了一个名为 CMS(URL 键:内容)的产品类别,将 Is Active 设置为“no”
    3. 为每个内容类别创建了子类别(即“关于”)。将 Is Active 设置为“yes”,将 Display Mode 设置为“Static block only”并选择相应的静态块。
    4. 如上所述为每个内容类别创建子类别。

    在代码中:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2023-03-05
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多