Jak programowo renderować zwiastun węzła za pomocą warstwy motywu?

10

Jak programowo renderować zwiastun węzła za pomocą warstwy motywu?

Lester Peabody
źródło

Odpowiedzi:

20

node_view() jest standardową funkcją do renderowania węzłów, np

$node = node_load(1);
$view = node_view($node, 'teaser');
$rendered = drupal_render($view);

Istnieje nodemoduł zdefiniowany przez moduł węzła (in node_theme()), ale tak naprawdę nigdy go nie widziałem.

Clive
źródło
1
Czy node_theme () nie pozwala systemowi motywów na użycie pliku .tpl.php dla elementu, a także na funkcje wstępnego przetwarzania?
mpdonadio
Tak, martwię się o ominięcie warstwy motywu. Gdybym to zrobił, inne moduły, które chciałyby się włożyć, nie byłyby w stanie tego zrobić. Przynajmniej myślę, że to prawda?
Lester Peabody,
1
Po przeanalizowaniu api.drupal.org/api/drupal/modules%21node%21node.module/function/... jeśli widzisz kod implementacyjny, tam gdzie jest napisany$build += array( , ma on #themeatrybut, który, jak sądzę, mówi Drupalowi, aby używał system motywów. Popraw mnie, jeśli się mylę. Właśnie zaczynam „dostawać” interfejs API Drupala :)
Lester Peabody,
@MPD Tak, nie wyjaśniłem tego zbyt dobrze, miałem na myśli, że nigdy nie widziałem takiego połączenia theme('node', .... W rzeczywistości to nawet nie zadziała, ponieważ określa się jako posiadanie render elementzamiast variables.
Clive
@Lester na miejscu, są 2 sposoby na wywołanie funkcji tematu, „normalny” sposób ( theme('theme_name', $args)i za pomocą tak zwanych render elements. hook_theme()Docs wyjaśnić to całkiem dobrze, to nie jest 100% intuicyjny ale gdy wiesz, że to naprawdę użyteczne. Korzystanie node_view()woli nigdy nie omijaj warstwy motywu, więc wszystko powinno być w porządku :)
Clive