Зарегистрируйте свои функции темы в Drupal - PullRequest
4 голосов
/ 04 ноября 2010

Я новичок в Drupal и работаю над созданием собственной темы для нашего пользовательского модуля. Может ли кто-нибудь помочь мне понять, как зарегистрировать наши функции темы или поделиться какими-либо идеями или ссылками, которые объясняют процесс с нуля.

Ответы [ 2 ]

29 голосов
/ 05 ноября 2010

Регистрация функции темы означает реализацию hook_theme в вашем модуле.

Например, если ваш модуль называется "example", то вам нужно иметь функцию с именем example_theme в файле example.module. Функция темы должна вернуть массив, иначе вы получите знаменитый белый экран смерти.


В example.module :

<?php
// $Id$

// Implements hook_theme
function example_theme(){
    return array(
        'mydata' => array(

            // Optionally, you can make the theme use a template file:
            // this line references the file "mydatafile.tpl.php" in the same folder as the module or in the folder of the active theme
            'template' => 'mydatafile',

            // these variables will appear in the template as $var1 and $var2
            'arguments' => array(
                'var1' => null, 
                'var2' => null, 
            ),

        ),
        'myotherdata' => array(

            // these variables will appear in the functions as the first and second arguments
            'arguments' => array(
                'var1' => null, 
                'var2' => null, 
            ),

        )
    );
}


// If you don't want to use a template file, use a function called "theme_THEID" to create the HTML.
function theme_myotherdata($var1, $var2){
    return "<div>var1= $var1 and var2= $var2</div>";
}

В mydatafile.tpl.php :

<div>mydatafile.tpl.php was called</div>
<ol>
    <li>var1: <?php echo $var1; ?></li>
    <li>var2: <?php echo $var2; ?></li>
</ol>

Затем вы можете позже вызвать функцию темы вручную, если необходимо:

 $html = theme('mydata', 'hello world', 123);
 $html = theme('myotherdata', 'hello world', 123);

В этом случае «mydatafile.tpl.php» и «theme_myotherdata» получат значение «hello world» в $ var1 и значение 123 в $ var2.


Есть много других опций , таких как изменение имени функции, использование шаблонов вместо фиксированного имени, возможность иметь функцию в другом php-файле или тому подобное, проверьте ссылку.


Вот еще несколько ресурсов по теме:


Кстати, вам нужно будет перестроить кэш реестра темы, если вы добавите функции в файл .module после его установки, и в этом случае вы можете сделать это, очистив кеш (одним из способов является использование кнопки внизу страницы выступлений).

4 голосов
/ 25 ноября 2012

ПРИМЕЧАНИЕ: немного другой синтаксис в Drupal 7 (например, «arguments» заменяется на «variable»)

http://www.davidcalculli.com/blog/2012/01/drupal-7-custom-template-only-displaying-the-first-character

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...