Magento 内容管理;防止混乱
Magento content management; prevent a mess
所以,这周我开始了一个新项目,当然我也在考虑在整个开发过程中我会发现的问题。我们打算做一个设计非常好的商店,很高兴能在这方面工作。但是设计中使用了很多magento正常功能中放不下的内容。例如,有一个目录页面有很多内容块,其中包含辅助信息,例如独特的卖点或一些故事讲述。对于不同的类别,这可以而且将会有所不同。我们谈论的是很多小内容块,不是您可以塞进类别描述字段的内容;)
直到现在我主要使用静态块来制作这些内容并将它们显示在页面上,甚至可能使用 xpath 从块中提取我需要的信息以防止最终用户使用所见即所得破坏设计编辑。但是,我认为现在这不是一个好的解决方案,因为在不丢失所有内容的情况下,只需要创建和使用太多的静态块,而且我怀疑 xpath 是否真的具有良好的性能(有点像搞砸了用锤子)。
我正在考虑制作一个模块或使用一个可以添加属性并将属性集与静态块结合使用的模块。有了它,您可以为某些页面创建自己的字段和组,并使最终用户可以轻松地在他们的网上商店上编辑信息。然而,自己制作这个(听起来确实很有趣)会花费很多时间,而且我真的找不到一个模块可以做这样的事情。
你们在创建新的网店时是如何解决这些问题的?有什么建议吗?
我想您将使用自己的主题和自己的类别页面模板,在这里您将设置所有 HTML 您不希望管理员弄乱所见即所得编辑器并让他们只改变页面的某些部分。为了让管理员能够编辑这些,您需要向类别实体添加新属性。例如,如果管理员应该为某个框添加文本,添加文本类型的属性,如果管理员想要添加 HTML 创建 WYSIWYG 编辑器类型的属性等等。然后在您的模板中,您将检查该类别是否具有任何这些属性并且它们具有非空值然后打印它们。
例如:
<?php if ($category->getCustomTextAttribute() != ''): ?>
<div id="your-div">
<?php echo $category->getCustomTextAttribute(); ?>
</div>
<?php endif; ?>
<?php if ($category->getPromotionHtml() != ''): ?>
<div id="promotion-div">
<?php echo $category->getPromotionHtml(); ?>
</div>
<?php endif; ?>
这对于产品页面也是一样的,不同之处在于对于产品,您可以通过管理员创建属性,然后将它们打印在产品页面模板上,否则对于类别,您需要编写一个模块来执行此操作,如果你想要我我可以为您提供创建Category属性的模块示例。
我最终结合使用了 zokibtmkd answer 并将字段添加到默认静态块(图像上传功能和 link 字段)。这两种解决方案的结合使我能够在设计中充分利用,而不会弄乱管理员或模板。
所以,这周我开始了一个新项目,当然我也在考虑在整个开发过程中我会发现的问题。我们打算做一个设计非常好的商店,很高兴能在这方面工作。但是设计中使用了很多magento正常功能中放不下的内容。例如,有一个目录页面有很多内容块,其中包含辅助信息,例如独特的卖点或一些故事讲述。对于不同的类别,这可以而且将会有所不同。我们谈论的是很多小内容块,不是您可以塞进类别描述字段的内容;)
直到现在我主要使用静态块来制作这些内容并将它们显示在页面上,甚至可能使用 xpath 从块中提取我需要的信息以防止最终用户使用所见即所得破坏设计编辑。但是,我认为现在这不是一个好的解决方案,因为在不丢失所有内容的情况下,只需要创建和使用太多的静态块,而且我怀疑 xpath 是否真的具有良好的性能(有点像搞砸了用锤子)。
我正在考虑制作一个模块或使用一个可以添加属性并将属性集与静态块结合使用的模块。有了它,您可以为某些页面创建自己的字段和组,并使最终用户可以轻松地在他们的网上商店上编辑信息。然而,自己制作这个(听起来确实很有趣)会花费很多时间,而且我真的找不到一个模块可以做这样的事情。
你们在创建新的网店时是如何解决这些问题的?有什么建议吗?
我想您将使用自己的主题和自己的类别页面模板,在这里您将设置所有 HTML 您不希望管理员弄乱所见即所得编辑器并让他们只改变页面的某些部分。为了让管理员能够编辑这些,您需要向类别实体添加新属性。例如,如果管理员应该为某个框添加文本,添加文本类型的属性,如果管理员想要添加 HTML 创建 WYSIWYG 编辑器类型的属性等等。然后在您的模板中,您将检查该类别是否具有任何这些属性并且它们具有非空值然后打印它们。
例如:
<?php if ($category->getCustomTextAttribute() != ''): ?>
<div id="your-div">
<?php echo $category->getCustomTextAttribute(); ?>
</div>
<?php endif; ?>
<?php if ($category->getPromotionHtml() != ''): ?>
<div id="promotion-div">
<?php echo $category->getPromotionHtml(); ?>
</div>
<?php endif; ?>
这对于产品页面也是一样的,不同之处在于对于产品,您可以通过管理员创建属性,然后将它们打印在产品页面模板上,否则对于类别,您需要编写一个模块来执行此操作,如果你想要我我可以为您提供创建Category属性的模块示例。
我最终结合使用了 zokibtmkd answer 并将字段添加到默认静态块(图像上传功能和 link 字段)。这两种解决方案的结合使我能够在设计中充分利用,而不会弄乱管理员或模板。