Como crio regiões personalizadas em um tema?


58

Quero adicionar uma nova área que será de todo o site. Descreva o processo de inclusão dessa nova região no meu tema, se possível, generalize-o para adicionar qualquer nova região personalizada.


blog de detalhes: goo.gl/kD3TZu
Suresh Kamrushi

Respostas:


68

Você define regiões no seu arquivo .info do tema. Consulte: Estrutura do arquivo .info

Você precisa colocar as tags de modelo relevantes no arquivo page.tpl.php.

Por exemplo, se você definiu a região sidebarno arquivo .info dos seus temas, adicione: <?php print render($page['sidebar']); ?>ao local relevante em seu page.tpl.php.


6
Se o seu tema não tiver um arquivo page.tpl.php, você poderá copiar o padrão do módulo do sistema para o seu tema e modificar essa cópia.
Mikey P

5
O Omega não precisa da parte page.tpl.php, apenas declare a região no arquivo .info AND CLEAR CACHES.
Capi Etheriel

20

Outro ponto: não perca as regiões necessárias!

regions[content] = Content
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom

Mais sobre isso pode ser encontrado em http://drupal.org/update/themes/6/7#closure .

Para esclarecer este ponto: Se você definir suas próprias regiões, precisará definir tudo o que está usando, incluindo aquelas necessárias. Em outras palavras, você não pode apenas definir regiões adicionais: se você definir alguma, deverá definir todas elas.


9

Criar uma região para um tema do Drupal 7 não é diferente de criar uma região para uma região do Drupal 6; as diferenças entre o Drupal 7 e as versões anteriores são essencialmente:

  • As regiões não são definidas usando uma mytheme_regions()função, como foi feito no Drupal 5, mas são definidas no mytheme.info usando regions[]diretivas, o que também é feito com os temas do Drupal 6.
  • As regiões são renderizadas usando a função Drupal render(), em vez de imprimir o conteúdo de uma variável.

As regiões padrão do Drupal 7 são as seguintes:

regions[header] = Header
regions[highlighted] = Highlighted
regions[help] = Help
regions[content] = Content
regions[sidebar_first] = Left sidebar
regions[sidebar_second] = Right sidebar
regions[footer] = Footer

Os temas principais do Drupal 7 agora incluem uma região denominada 'destacada' que usa a mesma tela que a área de declaração de missão no Drupal 6; eles também incluem uma região chamada 'help', que por padrão tem o mesmo conteúdo da $helpvariável usada pelo Drupal 6.


4

As regiões do tema são definidas no arquivo .info do seu tema - consulte a documentação . Basta adicionar uma linha com regions[corner] = Cornerpara obter uma região de Canto.

Em seguida, você precisa editar o arquivo page.tpl.php e adicionar <php print render($corner); ?>onde deseja que a região apareça. Se o seu tema não tiver um page.tpl.php, copie do tema base ou do módulo do sistema.

Armadilhas comuns:

  • Se o arquivo theme.info não tinha regiões declaradas, estava usando regiões padrão do Drupal. Se você deseja adicionar, precisará declarar novamente as regiões padrão. Obviamente, você pode remover qualquer região, mas apoie as regiões necessárias. Veja os documentos novamente.

  • Alterações no arquivo .info ou adição de novos arquivos ao tema (como page.tpl.php) serão notadas somente após a limpeza dos caches.

  • Omega, um tema base muito popular, não precisará de alterações no page.tpl.php, apenas no arquivo .info. Mas você precisará visitar as configurações de tema na interface do usuário e atribuir sua região a uma zona.


Este é um resumo das respostas com armadilhas comuns.
Capi Etheriel

A regions[content] = Contentúnica região necessária em D7? drupal.org/node/171205#regions parece implicar isso, mas, em seguida, drupal.org/node/171224 diz que as regiões exigidos são content, help, page_topepage_bottom
Jim Garrison

Não sei se o Drupal verifica alguma das regiões, mas contenté definitivamente muito importante. helpé suportado pelo core ( para gerar mensagens de ajuda), page_bottomé provavelmente onde js inferiores é impresso e page_topparece ser usado para barras de navegação, como as barras de ferramentas principais.
Capi Etheriel

2

Siga as etapas abaixo para criar uma região personalizada no seu tema:

  1. Vá para o seu arquivo theme.info e adicione esta linha.

    regions[machine_name_of_your_region] = Name of your region
  2. Embora você também possa chamar blocos de região no modelo de nó, geralmente você adiciona a região ao modelo de página do tema. Geralmente, é page.tpl.php ou, se você tiver arquivos de modelo personalizados para páginas diferentes, edite-os também. A nova região aparecerá apenas nas páginas criadas em torno do modelo ao qual você adiciona a nova região. Cole-o onde quiser que sua nova região apareça.

    <?php if ($page['machine_name_of_your_region']): ?>
      <div id="sidebar-first" class="column sidebar"><div class="section">
      <?php print render($page['machine_name_of_your_region']); ?>
      </div></div> <!-- /.section, /#sidebar-first -->
     <?php endif; ?>
    
  3. Configuração - Desempenho - Limpar todos os caches


0

Crie uma nova região no tema

Você só precisa defini-lo em dois arquivos.

  • Theme.info
  • Page.tpl.php

Theme.info

;;;;;;;;;;;;;;;;;;;;;
;; Regions
;;;;;;;;;;;;;;;;;;;;;

regions[navigation]      = 'Navigation'
regions[header]          = 'Top Bar'
regions[highlighted]     = 'Highlighted'
regions[new_region_name] = 'Region Name' ;; Add New Region

Page.tpl.php

Agora renderize esta região

  <?php if ($page['new_region']): ?>
      <div class="new_region_class">
        <?php print render($page['new_region']); ?>
     </div>
  <?php endif; ?>

Agora limpe todo o cache. Aqui você tem uma nova região no seu tema. Você pode vê-lo na sua página de configuração de bloco.

Para mais informações, visite http://drupal.org/node/171205

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.