Magento의 CMS 페이지 렌더링의 일부인 "사전 구성된 위젯"기능을 활용할 수있는 UI 또는 프로그래밍 방식의 시스템이 있습니까?미리 구성된 Magento 위젯
위젯을 CMS 페이지에 추가 할 때 위젯을 렌더링하는 코드는 템플릿 지시문 처리 클래스에 있습니다. 이 코드
File: app/code/core/Mage/Widget/Model/Template/Filter.php
class Mage_Adminhtml_Cms_PageController extends Mage_Adminhtml_Controller_Action
{
...
}
위젯의 PARAMATERS를로드 할 때, 거기에 다음과 같은 코드로
이 코드는{{widget name="foobazbar" id=""}}
한 다음 id 값에 대한 위젯 지시어 태그를 구문 분석 나타납니다
// 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 '';
}
위젯 모델에서 구성을로드하십시오.
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
클래스의 데이터를로드하고 있습니다.
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 Inc.의 지원을 받는지 알지 못합니다. 지원되는 기능인지 또는 버려진 것이지만 이전 버전과의 호환성을 위해 남아있는 항목의 시작일 경우 알 수 있습니까?
메뉴에는 "CMS> 위젯"이 있지만 메뉴에 대한 경험이 없거나 사용자가 제안하는 구문과 함께 CMS 페이지에서 작동하는 것처럼 보입니다. 나는 {{widget id = "$ num"}}'을 시도했다. 제공 한 코드 샘플에서 'name' 매개 변수가 필요하다는 점은 분명하지 않습니다. – Nick
@Nick, 위의 몇 가지 코드는 이름 매개 변수가 분명해 지도록합니다. CMS 페이지에서는 {{widget id = "1"}}이 (가) 제거되지만 {{widget name = "foo"id = "1"}}} 테이블에 위젯이로드됩니다. 위젯 인스턴스가 아닙니다. –
개발자를위한 기능입니다 ... CMS 페이지 콘텐츠에서 위젯 매개 변수를 지정하는 대신 위젯 매개 변수를 검색하기 위해 하나 이상의 쿼리를 실행하려는 개발자의 경우 :) –