Magentoには、エクステンションのHTML出力をオフにする機能が備わっています。
ですが、この機能を誤って使用すると、HTML出力をオフにしたい機能以外の機能にも影響を及ぼしてしまいます。

このエントリでは、「無効なモジュール出力(Disable Module Output)」の仕組みと影響について解説します。

無効なモジュール出力とは

無効なモジュール出力とは、ある特定のモジュール(エクステンション)が生成するHTMLを出力しないようにする機能です。
例えばギフトメッセージや、タグ付け機能、比較リストなどはサイトによっては使用しないことがあるので、これらのモジュールが出力するHTMLが画面上に出てくると邪魔になります。

このような場合に、この機能を使用してモジュールのHTMLを出力しないようにすることができます。

動作の仕組み

出力をオフにしたい場合

出力をオフにしたい場合は、管理画面の「システム>設定>高度な設定」にアクセスします。
出力がオフになっているモジュールがない状態では、セクションが閉じているので開く必要がありますが、他の設定画面と操作自体は同じです。

画面には今インストールされていて、有効になっているモジュールがずらっと並んでいるので、出力をオフにしたいものを選んで「無効」に値を変更して保存します。

出力がオフになっているブロックでの処理

Magentoがリクエストに基づいてHTMLを生成する際には、数多くのブロックを処理します。
もしそのブロックの中に出力がオフになっているモジュールのブロックがある場合、全てのブロックのベースになっている、Mage_Core_Block_AbstractのtoHtml()メソッドの中でHTMLの生成が省略されます。 

出力をオフにすることで得られるメリット

出力をオフにすることで、以下のようなメリットが得られます。

Magentoのレイアウト関係の知識がなくても画面上のパーツを取り外すことができる

出力をオフにする設定は管理画面から簡単に行うことができます。
ですから、Magentoをカスタマイズする際に必要になる、レイアウト関係の知識がない方でも、「ああ、このパーツは不要だから外そう」ということが可能です。 

HTMLパーツを生成するために必要な処理を省略することができる

HTMLパーツを生成し始める前に処理を終了するので、出力をオフにした場合は、テンプレートを解釈してHTMLを生成する処理を行わずに済みます。
そのため、パーツによってはかなりの量の処理を省略することができます。 

出力をオフにした場合に起きるデメリット 

HTML出力のないモジュールはオフにできない

この機能は「HTML出力」をオフにする機能です。
もし、出力を無効にしたモジュールがHTMLを出力する機能を持っていない場合にはなんの効果もありません。 

関連する他のモジュールにも影響をおよぼすことがある

出力をオフにした場合、ある特定のモジュールに依存してHTMLの出力を行っているモジュールにも影響が及ぶことがあります。
例えば、Mage_Checkout_Block_Onepage_ShippingMethod_Additionalというブロックは、Mage_GiftMessage_Block_Message_Inlineと連携しています。
購入ステップの途中でJavaScriptを使用して追加パーツを取得する、という仕組みが元々Magentoに備わっているのですが、GiftMessageのHTML出力をオフにしてしまった場合、追加パーツは一切読み込まれなくなってしまいます。

HTML出力以外の処理は実行される

HTML出力だけを省略する機能なので、データベースからデータを読み込んだり、ファイルを作成したりといった処理はそのまま実行されます。
これらの処理の比率が多いモジュールの場合、出力をオフにしてメリットはほとんどありません。 

まとめ

この機能は簡易にモジュールの出力するパーツを画面上から除去できます。
ですが、サードパーティ製のエクステンションを巻き込む場合があります。
よくよく注意をして利用することが重要だと思います。