Вопрос

Чтобы добавить JavaScript, вы можете использовать:

drupal_add_js

И аналогично для CSS:

drupal_add_css

Но что, если я просто хочу добавить HTML в конец своей страницы?Т.е.Добавить div с текстом в конце страницы?

Это было полезно?

Решение

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

С модульной точки зрения лучшими являются следующие варианты:

крючок_footer() -- http://api.drupal.org/api/function/hook_footer/6 ::my_module_footer() должен возвращать строку HTML, которая может быть даже JavaScript.Например.

function my_module_footer(){

    return "<script type='text/javascript'>//your script</script>"

}

Вы можете использовать Drupal $_GET['q'] для получения URL-адреса страницы и сделать этот возврат условным для URL-адреса страницы.

В противном случае я иногда использую $GLOBALS["_add_my_footer"] в качестве логического значения и устанавливаю его в различных точках модуля, а затем вook_footer() проверяю, верно ли это.


drupal_add_js -- api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 ::Вы можете использовать это, чтобы добавить JavaScript в нижний колонтитул, установив для параметра $scope значение «footer» — например.

function my_module_init(){

    $script = "your script "; // notice no <script> tags
    drupal_add_js($script, 'inline', 'footer');
    // you can also use this function to grab a .js file

}

Обратите внимание, что я поместил drupal_add_js вook_init() — я сделал это, потому что, если вы этого не сделаете, скрипт может потеряться при использовании функции агрессивного кэширования Drupal.

К сожалению, для drupal_add_css нет параметра $scope.

Другие советы

Как hook_footer не пережил Drupal 6, вот эквивалентная функция и ее реализация в Drupal 7:

/**
* Implements hook_page_alter().
*/
function example_page_alter(&$page) {
  if (variable_get('dev_query', 0)) {
    $page['page_bottom']['devel']= array(
      '#type' => 'markup',
      '#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
    );
  }
}

(От http://preprocess.me/drupal-hookfooter-in-drupal-7)

Вы можете добавить следующее в файл template.php вашей темы:

  
function phptemplate_preprocess_page(&$vars) {
  $vars['closure'] .= 'Add markup here';
}
  

В Drupal есть хук, который вы можете реализовать и добавить в нижний колонтитул страницы любой код —ook_footer.Видеть http://api.drupal.org/api/function/hook_footer/6

Вы можете написать блок, чтобы сделать это, и поместить его в замыкание.

... или, возможно, не так рекомендуется, как другие ответы, но более прямо, вы можете добавить html прямо в файл page.tpl.php.

Уже были сделаны несколько хороших предложений:

  • Использование блока
  • Редактирование шаблонов
  • Использование функции предварительной обработки.

Проще всего было бы добавить созданный вами блок, в который можно было бы поместить свою собственную разметку.Вы даже можете создать для него специальный шаблон, чтобы вы не получали обычную разметку блока Drupal, а только то, что вы пишете в содержимом блока.

Это должно покрыть ваши потребности:

  • У вас есть 100% контроль над тем, где генерируется разметка (вы можете определить регион в своих файлах).
  • У вас есть 100 % контроль над тем, какая разметка создается.

Теперь, если вы не хотите использовать блоки, потому что не хотите, чтобы администраторы сайта знали о блокировке, вторым лучшим вариантом будет:

  1. Добавьте флажок в настройки темы.
  2. В перехватчике страницы предварительной обработки установите логическую переменную, если флажок установлен или нет.
  3. В шаблоне страницы вы проверяете наличие переменной. Если она ИСТИНА, вы пишете разметку там, где хотите.

По сути, это будет то же самое, что и выше, только у вас есть настройки в вашей теме, а не добавление блока.Это потребует больше работы.

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

вот небольшой трюк, который работает в Drupal 6 и 7

    $script = '//--><!]]></script><strong>this is bold html code</strong><script type="text/javascript"><!--//--><![CDATA[//><!--';
    drupal_add_js($script, 'inline', 'footer');

поскольку очевидно, что вы не хотите изменять файлы шаблонов или использовать какие-либо другие методы, предложенные выше, это должно помочь добавить HTML на страницу так же, как это делается для js и css.

Я не рекомендую использовать block , так как простое добавление некоторых элементов в нижний колонтитул является излишним.Вот крючок, который вы можете использовать для добавления контента перед </body> тег для Drupal 7.

function hook_page_build(&$page) {
  $page['page_bottom']['YOUR_MODULE'] = array(
    '#markup' => '<div> I want to get inserted at the bootom of the page </div>',
  );
} 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top