特定のノードのタイトルを非表示にするにはどうすればよいですか?
私は次の3つのモジュールを試しましたが、どれも私が望んでいることをしていません。
ページのコンテンツタイプ、hook_preprocess_node()
関数のコードにfield_hide_titleを追加しました。うまく動かない。
print_r($vars['node'])
から表示される値は次のとおりです。
stdClass Object( [vid] => 4 [uid] => 1 [title] => search_material [log] = > [ステータス] => 1 [コメント] => 1 [プロモート] => 0 [スティッキー] => 0 [nid] => 4 [type] => page [language] => zh-hant [created] => 1339055801 [changed] = > 1339727555 [tnid] => 0 [translate] => 0 [revision_timestamp] => 1339727555 [revision_uid] => 1 [body] => Array( [und] => Array( [0] => Array( [value] => [概要] => [format] => php_code ) ) ) [field_hide_title] => Array( [und ] => Array( [0] => Array([value] => 1) ) ) [rdf_mapping] => Array( [rdftype] => Array([0] => foaf:Document) [title] => Array( [述語] => Array([0] => dc:題名) ) [作成] =>配列( [述語] =>配列( [0] => dc:date [1] => dc:created ) [datatype] => xsd:dateTime [callback] => date_iso8601 ) [changed] => Array( [述語] => Array([0] => dc:modified) [datatype] => xsd:dateTime [callback] => date_iso8601 ) [本文] => Array( [述語] => Array([0] => content:encoded) ) [uid] => Array( [述語] => Array([0] => sioc:has_creator) [type] => rel ) [name] => Array( [述語] =>配列([0] => foaf:name) ) [comment_count] =>配列( [述語] =>配列([0] = > sioc:num_replies) [datatype] => xsd:integer ) [last_activity] => Array( [述語] =>配列([0 ] => sioc:last_activity_date) [da tatype] => xsd:dateTime [callback] => date_iso8601 ) ) [cid] => 0 [last_comment_timestamp] = > 1339055801 [last_comment_name] => [last_comment_uid] => 1 [comment_count] => 0 [name] => admin [画像] => 0 [データ] => b:0; [entity_view_prepared] => 1 )
================================================== ==========更新:
mytheme_preprocess_page関数のprint_r($ vars):
[概要] => [フォーマット] => php_code)))[field_hide_title] =>配列([und] =>配列([0] =>配列([値] => 1)))[rdf_mapping] =>配列([rdftype] =>配列([0] => foaf:Document)[title] =>配列([述語] =>配列([0] => dc:title))[作成済み] =>配列([述語] =>配列([0] => dc:date 1 => dc:created)[datatype] => xsd:dateTime [callback] => date_iso8601)[changed] =>配列([ predicates] => Array([0] => dc:modified)[datatype] => xsd:dateTime [callback] => date_iso8601)[body] => Array([predicates] => Array([0] => content :encoded))[uid] => Array([predicates] => Array([0] => sioc:has_creator)[type] => rel)[name] => Array([predicates] => Array([0 ] => foaf:name))[comment_count] => Array([predicates] => Array([0] => sioc:num_replies)[datatype] => xsd:integer)[last_activity] => Array([predicates] =>配列([0] => sioc:last_activity_date)[datatype] => xsd:dateTime [callback] => date_iso8601))[cid] => 0 [last_comme nt_timestamp] => 1339039221 [last_comment_name] => [last_comment_uid] => 1 [comment_count] => 0 [name] => admin [picture] => 0 [data] => b:0; [entity_view_prepared] => 1))
フラグとして機能するcckフィールド(チェックボックス/ブール)を作成できます。したがって、ノードを非表示にするかどうかを動的に選択できます。
疑似コード:
Template.php
function yourtTheme_process_page(&$variables) {
if($variables['node']->field_hide_title['und'][0]['value']) {
$variables['title'] = NULL;
}
}
このコードは試していませんが、これでうまくいくと思います。
編集:新しいフィールドのスクリーンショットを追加しました
これはcckの値である必要があります
CSSを使用します。
個々のノードごとに、ページの<body>
タグに特定のクラスがあり、特定のノードをターゲットにすることができます。
たとえば、ノード69のタイトルを非表示にしようとしているとすると、次のようになります。
.page-node-69 .page-title {
display: none;
}
ノード150の場合、次のようになります。
.page-node-150 .page-title {
display: none;
}
テーマに応じて微調整する必要がある場合や、カスケードのさらに上位にある特定性がある場合に備えて、ページタイトル(つまりh1.page-title
)をより具体的にターゲティングする必要がある場合があります。
私はあなたがtemplate.phpにこのようなものを追加できると思います:
function YOURTHEME_preprocess_node(&$node) {
// check if it's the node of interest
if($node['title'] == 'your-specific-node-title') {
// set the title to NULL so nothing is rendered
$node['title'] = NULL;
}
}
chapab が示唆するように、タイトルの代わりにノードのnidを確認する方が良いかもしれません:
if($node['nid'] == 'your-node-nid') {
...
}
タイトルのCSSはタイトルのクラスとpage-titleのIDなので、私のCSSは
.page-node-69 #page.title {
display: none;
}
これが機能するために。