Próbuję ukryć tytuł bieżącej strony (wydrukowany przez page.tpl.php
), jeśli bieżąca strona to 1) węzeł na pełnym ekranie (w przeciwieństwie do trybu zwiastuna) ORAZ 2) typ węzła to koncert lub biografia . Drukuję tytuł węzła dla tych typów treści bezpośrednio w treści węzła, więc chcę ukryć duplikat drukowany przez page.tpl.php. Nie jestem w stanie sprawić, aby działało to bezpośrednio w page.tpl.php, a moje czytanie sugeruje, że najlepszą praktyką jest obsługa logiki szablonów w template.php przy użyciu funkcji wstępnego przetwarzania i procesów. Próbuję więc ukryć bieżący tytuł strony (z powyższymi 2 warunkami) przy użyciu template_preprocess_page()
. To jest mój kod.
<?php
function MYTHEME_preprocess_page(&$variables) {
if (!empty($variables['node']) && $variables['node']->type == 'concert') {
hide($variables['title']);
}
}
?>
Przeczytałem Jak przetestować typ węzła, aby wydrukować zmienną z template.php? oraz stronę z dokumentacją dla template_preprocess_page()
różnych witryn, ale nie mogę tego zrobić. Widziałem sugestie, że trzeba zadzwonić isset()
na $variables['node']
przed badaniem dla typu węzła, ale to nie działało. Nigdzie nie widziałem przejrzystego rozwiązania i jestem na ukończeniu.
$title
zmienną za pomocąmytheme_process_page(&$variables) { $title = false; }
.mytheme_process_page(&$variables) { $variables['title'] = false; }
i to działa BTW.<?php print $title; ?>
w nim<?php if (!$title_hidden): ?>
$variables['title_hidden'] = TRUE;
Możesz zarządzać tym za pomocą drupal_set_title ().
źródło
template_preprocess_page()
? Użyłem modułu Theme Developer do sprawdzenia duplikatu tytułu strony i potwierdziłem, że jest on wywoływanypage.tpl.php
. Czy powinienem pomyśleć o usunięciu tytułu,page.tpl.php
a następnie DODAJ go tam, gdzie chcę go użyćtemplate_preprocess_page()
? Chcę, aby tytuł był renderowany, na przykład, gdy strona zawiera widok węzłów, ale nie wtedy, gdy strona jest pojedynczym węzłem określonego typu / typów.Spróbuj, zakładając, że twój warunek jest poprawny :)
źródło
$variables['title']
wartość zwracaną zdrupal_get_title()
.Mniej skomplikowanym sposobem jest wydrukowanie tego na page.tpl.php
Ale jeśli chcesz, aby był dynamiczny, sugerowałbym użycie tego,
preprocess_page
co sugerują inni.źródło
hide()
jest używany do renderowania tablic, a nie ciągów.W CSS zrobiłem to z moim motywem
Zgodnie z zaleceniami http://www.alistapart.com/articles/now-you-see-me/
Dlaczego? Ponieważ nadal chcesz mieć nagłówek i h1 „widoczne” dla czytników ekranu dla ułatwienia dostępu. Jeśli po prostu pozbędziesz się wartości H1, okradniesz niewidomych i słabo widzących gości z niektórych potencjalnie ważnych informacji.
źródło
sugestia mytheme_preprocess_page działa dla mnie, ale jeśli jest używana
$vars['title_hidden'] = TRUE;
źródło
Prawidłowa funkcja to
zamiast
źródło