2011-01-07 6 views
5

Magentoのレイアウトシステムにおける深いが、そこにあなたのブロックを作成するために必要な特定のXMLにあなたのパッケージレイアウトxmlファイルを回すために使われている次のコードは、ですので、あなたのページMagentoでデータベースレイアウトの更新は引き続き使用されていますか?

public function merge($handle) 
{ 
    $packageUpdatesStatus = $this->fetchPackageLayoutUpdates($handle); 
    if (Mage::app()->isInstalled()) { 
     $this->fetchDbLayoutUpdates($handle); 
    } 
} 

を作成しそこに第二の方法fetchDbLayoutUpdates試行SQLは、どちらもcore_layout_updatecore_layout_linkテーブルがデフォルトのインストールでは空になっているこの

SELECT `update`.`xml` FROM `core_layout_update` AS `update` 
INNER JOIN `core_layout_link` AS `link` 
    ON link.layout_update_id=update.layout_update_id 
WHERE (link.store_id IN (0, '1')) 
    AND (link.area='frontend') 
    AND (link.package='default') 
    AND (link.theme='default') 
    AND (update.handle = 'default') 
ORDER BY `update`.`sort_order` ASC' 

のようなものを照会して、データベースから追​​加のXMLアップデートをロードします。

私はこれがMagentoで私の時間を凌駕する従来の機能だと常に考えてきました。この機能は

    でどこでも
  1. ザ・Magentoのコアコードベース

  2. どれも/知られている著名な拡張機能

  3. あなたが使用されている場合は誰でも知っています!

機能が場所(レガシー懸念やものではありません)に残されていますなぜ私が見ることができますが、それは放棄され、正式っぽいれて、またはそれが大幅に利用下だけだ場合何かだ場合、私は興味があります。

+0

興味深いスレッドの行たように見えますか? DBレイアウトのエントリがファイルベースよりも優先されますか? –

+0

@Jonathan:いいえ、DBにはハンドル命令を追加するだけです。ハンドルはオーバーライドされず、そのまま順番に適用されます。 –

答えて

5

enterprise_bannerブロックを追加するcms_index_indexのエントリがあります。したがって、少なくともEnterprise Editionではこれが使用されています。

+0

ああ、それを手に入れました。 Community EditionのCMSシステムをサポートしているようです。 –

+0

あなたはそこにあなたが持っているエントリを投稿できますか?ご覧に興味があります。 –

+1

ハンドルカラムは 'cms_index_index'で、他のページでブロックを宣言するのと同じように、xmlカラムは全く目立たないレイアウトアップデートです。この場合、ブロックのタイプは 'enterprise_banner/widget_banner'です。これはエンタープライズ版を使用している場合にのみ有効です。もしそうした場合はデータベースエントリも持ちます。 – clockworkgeek

4

core_layout_updateはウィジェットのインスタンスと関連している、役に立つのではなく、XMLファイルであるかもしれない理由を任意のアイデア、core_layout_updateはすべてのCMS-から追加されたウィジェットのインスタンス>ウィジェット

関連する問題