Łatwy sposób programowo tworzyć bloki? [Zamknięte]
26
Nauka Drupala. Wiem teraz, że mogę utworzyć blok za pomocą backendu, ale wolałbym je wstępnie programować, jeśli to możliwe. W rzeczywistości jestem całkiem pewien, że to możliwe. Ale jaki jest najłatwiejszy sposób?
Użyj hook_block_info i hook_block_view hooks w swoim module niestandardowym . hook_block_info definiuje blok. Pojawi się w admin > struktura > bloki . * hook_block_view * wyświetla zawartość. Zobacz przykłady poniżej z Drupal API.
Przykład hook_block_info, w którym zdefiniowano dwa bloki (zatytułowane Syndicate i Latest content):
<?php
function hook_block_info(){// This example comes from node.module.
$blocks['syndicate']= array('info'=> t('Syndicate'),'cache'=> DRUPAL_NO_CACHE,);
$blocks['recent']= array('info'=> t('Recent content'),// DRUPAL_CACHE_PER_ROLE will be assumed.);return $blocks;}?>
Przykład widoku hook_block_view:
<?php
function hook_block_view($delta =''){// This example is adapted from node.module.
$block = array();switch($delta){case'syndicate':
$block['subject']= t('Syndicate');
$block['content']= array('#theme'=>'feed_icon','#url'=>'rss.xml','#title'=> t('Syndicate'),);break;case'recent':if(user_access('access content')){
$block['subject']= t('Recent content');if($nodes = node_get_recent(variable_get('node_recent_block_count',10))){
$block['content']= array('#theme'=>'node_recent_block','#nodes'=> $nodes,);}else{
$block['content']= t('No content available.');}}break;}return $block;}?>
Odnoszą się do strony API Bloki na Drupal.org pełną listę haków. Drupal 6 jest trochę inny. Nie ma haka hook_block_view; zamiast tego użyj hook_block do deklarowania bloków.
Wygląda na to, że hook_block może być używany tylko w osobnym module: | Nadal nie rozumiem, dlaczego ta złożoność ... Czy zwykłą praktyką jest posiadanie modułów do wszystkiego w Drupal?
jayarjo
2
Tak, moduły są kluczową koncepcją Drupala. W większości przypadków sam Drupal jest zestawem modułów i wszystko odbywa się za pomocą haków modułów.
mpdonadio
3
Być może szukasz tego, czego szukałem i znalazłeś to tutaj:
W Drupal 7, przyjrzeć block_add_block_form_submitsię modules/block/block.admin.inc.
Jest to zwykły formularz tworzenia bloku; wydaje się, że wstawia rekordy bezpośrednio, zamiast wywoływać inną funkcję. Pamiętaj, że każdy rekord w tabeli bloków jest powiązany z jednym motywem (możesz po prostu użyć aktywnego, ale bezpieczniej jest wstawiać rekordy dla wszystkich motywów).
Odpowiedzi:
W przypadku Drupal 7:
Użyj hook_block_info i hook_block_view hooks w swoim module niestandardowym . hook_block_info definiuje blok. Pojawi się w admin > struktura > bloki . * hook_block_view * wyświetla zawartość. Zobacz przykłady poniżej z Drupal API.
Przykład hook_block_info, w którym zdefiniowano dwa bloki (zatytułowane Syndicate i Latest content):
Przykład widoku hook_block_view:
Odnoszą się do strony API Bloki na Drupal.org pełną listę haków. Drupal 6 jest trochę inny. Nie ma haka hook_block_view; zamiast tego użyj hook_block do deklarowania bloków.
źródło
W przypadku Drupala 6 krótką odpowiedzią jest utworzenie niestandardowego modułu, który implementuje hook_block .
W przypadku Drupal 7 używasz Block API .
Jeśli jest to Twoja pierwsza próba opracowania modułu, bardzo polecam Pro Drupal Development lub Pro Drupal 7 Development . Jest tam prawie wszystko, co musisz wiedzieć.
źródło
Być może szukasz tego, czego szukałem i znalazłeś to tutaj:
Ale kiedy spojrzysz na tę funkcję, zobaczysz, że możesz po prostu zrobić db_update samodzielnie.
źródło
W Drupal 7, przyjrzeć
block_add_block_form_submit
sięmodules/block/block.admin.inc
.Jest to zwykły formularz tworzenia bloku; wydaje się, że wstawia rekordy bezpośrednio, zamiast wywoływać inną funkcję. Pamiętaj, że każdy rekord w tabeli bloków jest powiązany z jednym motywem (możesz po prostu użyć aktywnego, ale bezpieczniej jest wstawiać rekordy dla wszystkich motywów).
Block_custom stół posiada zawartość.
źródło
Możesz użyć modułu Dodatkowe funkcje do eksportowania bloków.
Alternatywnie, wystarczy utworzyć rekordy bezpośrednio w tabeli bloków.
źródło