ブロックのデルタのみを指定してブロックのモジュールを決定する方法はありますか?カスタムクエリを必要としないソリューションを期待しています。
使用例:
クライアントが特定のコンテンツタイプに表示されるブロックを決定できるようにします。これらのオプションには、ブロック管理インターフェースを介して作成されたブロックと、ビュー管理を介して作成されたブロックが含まれます。私が言えることから、通常のブロックとビューのブロックは異なる方法でレンダリングされるため、疑似コードは次のようになります。
// In preprocessing
if($block_module === 'views') {
// do view rendering
} else {
// do normal block rendering
}
何か案は?
いいえ、モジュール名がないと不可能です。
ブロックデルタは一意である必要がありますper module、つまり2つのモジュールがまったく同じデルタでブロックを実装する可能性があり、モジュール名なしでどれがどれであるかを判別する方法はありません。
コードでのこれの最も簡単な証明は、次のシグネチャを持つ block_load()
関数です。
function block_load($module, $delta) {
ご覧のように、Drupalでも、残念ながらモジュール名を知らないと、ブロックの詳細をロードできません。