CSSを介して特定のノードから領域を非表示にすることはできますが、これはDisplay: none
属性は実際にはスペースをクリアしません...他の方法はありますか?
hook_page_alter 経由でやってみてください
ページがレンダリングされる前に変更を実行します。
このフックは、ページレベルで要素を削除または変更する場合、または他のモジュールの要素に依存するページレベルで要素を追加する場合に使用します(このフックはhook_page_build()の後に実行されます)。
次に、パラメータなしで menu_get_object を呼び出して、現在のページを取得し、返されたノードオブジェクトを検査できます。
このコードをテーマのtemplate.phpファイルに追加します。
function MYTHEME_page_alter(&$page){
//dpm($page);
if ($node = menu_get_object()) {
if ($node->nid == 72) { // pick your node or add a condition to your liking
// remove sidebar first region
unset($page['sidebar_first']); // remove the regeion here
}
}
}
テーマがそれに依存している場合、および削除するリージョンに応じて、template_preprocess_htmlも実装し、ボディクラスが同期するように調整する必要があります。
CSSに関しては、dispay:none
は、cssルールとして要素を表示から削除する必要がありますが、visibility:hidden
は要素を非表示にしますが、それでも以前と同じスペースを占有します。 CSSの表示と可視性