Почему эти функции темы не работают с Drupal D6? - PullRequest
0 голосов
/ 29 июня 2011

Я сейчас нахожусь в тупике с Drupal 6, и я надеюсь, что вторая пара глаз могла бы указать на некоторую синтаксическую субаренду, которую я пропустил ранее этим утром.

Давайте скажемУ меня есть тема под названием my_theme.

Это тема, которая подтемы из Ginkgo, тема, которая, в свою очередь, подтемы из Rubik, в то время как в подтемах tun от Tao, довольно распространенная тема сброса CSS.

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

Теперь мое понимание темыесли вы зарегистрируете тематическую функцию с помощью hook_theme, передав ее в массив с именем функции, вы сможете вызвать ее в будущем с помощью theme_function_name из вашей темы.

Например, еслиесли бы у меня был модуль с именем my, я бы заполнил hook_theme, как показано ниже, определив имя функции и определив, какой аргумент должен быть передан в нее:

<?php

  function my_theme() {

    $items = array();
    $items['randomtext']   = array('arguments' => array('element' => NULL));
    $items['button_links'] = array('arguments' => array( '$links' => NULL, '$attributes' => NULL));

    return $items;
  };

Теперь яПосле того, как функции зарегистрированы, мне просто нужно реализовать их как этот несколько надуманный пример:

  function theme_randomtext($element) {
    $output = ' <h1>This is some very random text with' . ' this text concatenated: '  . $element . '</h1>';
    return $output;
  }

Теперь я могу использовать эту новую функцию, вызывая

  <php
    print theme('randomtext', 'some arbitrary words')

  ?>

И ожидаю, что следующий контентбыть возвращенным:

  <h1>This is some very random text with this text concatenated: some arbitrary words</h1>
Я получаю нада.

И я не знаю почему.Когда я просматриваю реестр тем, моя функция отображается как my_randomtext - я попытался вызвать обе эти опции, если мне нужно было добавить префикс темы:

  theme('my_randomtext', 'getting desparate');
  theme('randomtext', 'really losing my rag now');

Все еще нетудачи.

Почему эти функции темы могут не работать?И что дает вам это преимущество по сравнению с простым объявлением такой функции в теме?

  function manual_random_text($element) {
        $output = ' <h1>This is gives me everything I aleady need, 
                    'without relying on the weird themeing sytem. It's perfect for' . $element . '</h1>';
        return $output;

  }

1 Ответ

0 голосов
/ 29 июня 2011

Ах, после небольшого расстояния от проблемы я вижу проблему.

Чтобы это работало, мне нужно добавить префикс темы, в которой я объявляю функцию, чтобы сделать ее доступной дляменя для использования.

Так что, если бы мой модуль был my, имя функции нужной темы было бы:

function my_random_text($element) {
        $output = ' <h1>, 
                    'This is finally outputting content. Now I can: ' . $element . '</h1>';
        return $output;
}

Дело в том, что если я создаю переопределение дляфункция темы, которая еще не существует, например random_text, в любом случае для нее нет функций, которые можно переопределить.Термин «переопределение темы» предполагает наличие функции темы по умолчанию для переопределения - во многих темах мы не делаем явных переопределений функций, а создаем альтернативы для использования в конкретных случаях.

Теперь я предполагаю, что мне нужно определить это в модуле, если я хочу определить функцию как theme_function_name, а не themename_theme_function_name.

Эта страница здесь о тематике на Drupal.org было очень полезно узнать некоторые из этой информации.

...