добавить javascript в drupal

#php #javascript #drupal #module

#php #javascript #drupal #модуль

Вопрос:

Я пытаюсь протестировать jqScheduler для PHP в модуле CMS Drupal.

Когда функция $eventcal-> render(); вызывается в модуле Drupal, следующий код генерируется перед <html> разделом, за пределами начала страницы.

 <style type=text/css>/*
    Document   : calendar
.
.
.
<script type='text/javascript'>jQuery(document).ready(function() {jQuery.datepicker...
<html xmlns="http://www.w3.org/1999/xhtml" lang="fa" xml:lang="fa">

<head>
 

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

Пример:

 $output = "<script type='text/javascript'>jQuery(document).ready(function() .... </script>";
 

Я добавляю css и ja-файл, добавил этот подобный код

      function study_jqScheduler() {
          drupal_add_css('sites/all/libraries/jqgrid/themes/redmond/jquery-ui-1.8.16.custom.css');
        drupal_add_css('sites/all/libraries/jqgrid/themes/jquery.ui.tooltip.css');
      drupal_add_css('sites/all/libraries/jqgrid/themes/ui.jqscheduler.css');  
drupal_add_js('sites/all/libraries/jqgrid/js/jquery-ui-custom.min.js');
drupal_add_js('sites/all/libraries/jqgrid/js/jquery.js');
 drupal_add_js('sites/all/libraries/jqgrid/js/jquery.jqScheduler.min.js');
require_once "sites/all/libraries/jqgrid/php/jqUtils.php";
require_once "sites/all/libraries/jqgrid/php/jqScheduler.php";
require_once "sites/all/libraries/jqgrid/php/jqGridPdo.php";
require_once "sites/all/libraries/jqgrid/jq-config.php";
    global $base_path;
    $base_path1=drupal_get_path('module', 'study');
    // Set the url from where we obtain the data
ini_set("display_errors",1);
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
$conn->query("SET NAMES utf8");
$eventcal = new jqScheduler($conn);
$eventcal->setLocale('en_GB');
$eventcal->setUrl($base_path.$base_path1.'/eventcal.php');
$eventcal->setUser(1);
$eventcal->setUserNames(array('1'=>"Calender User 1",'2'=>"Calendar user 2",'3'=>"Calendar user 3") );
$eventcal->multiple_cal = true;
$output.= $eventcal->render();
     return $output;
}
 

Ответ №1:

Вам нужно вернуть $eventcal->render(); функцию обратного вызова с вашей страницы, затем она будет добавлена в область содержимого как обычно.

 function mymodule_page_callback() {
  drupal_add_js('...');
  drupal_add_css('...');

  return $eventcal->render();
}
 

Надеюсь, это поможет, убедитесь, что вы принимаете ответы на свои предыдущие вопросы, если они помогли вам (подробнее о том, как это сделать, см. В Этом сообщении). Люди будут гораздо более склонны помогать в будущем, если вы покажете, что цените время, которое они потратили, чтобы помочь вам … вы можете сделать это, приняв эти ответы 🙂

Комментарии:

1. ХОРОШО, я понял, render() выводится непосредственно в буфер, он не возвращает отображаемый календарь. Это довольно легко исправить, но я не хочу рассказывать вам, как это сделать, пока вы не примете ответы на свои предыдущие вопросы… ТАК и сообщество, и все участники должны участвовать в этом сообществе 🙂