是否有一个用户界面或程序系统利用Magento的CMS页面呈现的一部分“预配置的小工具”的功能?预配置Magento小部件
向CMS页面添加小部件时,呈现该小部件的代码位于模板指令处理类中。此代码
File: app/code/core/Mage/Widget/Model/Template/Filter.php
class Mage_Adminhtml_Cms_PageController extends Mage_Adminhtml_Controller_Action
{
...
}
当装载Widget的PARAMATERS,有下面的代码位
// validate required parameter type or id
if (!empty($params['type'])) {
$type = $params['type'];
} elseif (!empty($params['id'])) {
$preconfigured = Mage::getResourceSingleton('widget/widget')
->loadPreconfiguredWidget($params['id']);
$type = $preconfigured['type'];
$params = $preconfigured['parameters'];
} else {
return '';
}
此代码出现解析一个widget指示标记为一个id值
{{widget name="foobazbar" id=""}}
,然后从小部件模型加载配置
public function loadPreconfiguredWidget($widgetId)
{
$read = $this->_getReadAdapter();
$select = $read->select();
$select->from($this->getMainTable())
->where($this->getIdFieldName() . ' = ?', $widgetId);
var_dump((string)$select);
$widget = $read->fetchRow($select);
if (is_array($widget)) {
if ($widget['parameters']) {
$widget['parameters'] = unserialize($widget['parameters']);
}
return $widget;
}
return false;
}
当我第一次遇到这个代码时,我认为它正在加载一个Widget实例模型。但是,事实并非如此。而是加载widget/widget
类的数据,该数据对应于widget
表。
mysql> describe widget;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| widget_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| code | varchar(255) | NO | MUL | NULL | |
| type | varchar(255) | NO | | NULL | |
| parameters | text | YES | | NULL | |
+------------+------------------+------+-----+---------+----------------+
是否有用于将数据添加到此表的UI或系统?有没有人(从Magento公司工作)谁知道这是一个支持的功能,或者如果这是一个被放弃的东西的开始,但出于向后兼容的原因?
当然,菜单中有“CMS>小工具”,但我对它们没有经验,也没有使用您建议的语法在CMS页面中工作。我试过`{{widget id =“$ num”}}`。从你提供的代码示例中不明显你甚至需要`name`参数。 – Nick 2011-01-31 20:56:43