#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()
выводится непосредственно в буфер, он не возвращает отображаемый календарь. Это довольно легко исправить, но я не хочу рассказывать вам, как это сделать, пока вы не примете ответы на свои предыдущие вопросы… ТАК и сообщество, и все участники должны участвовать в этом сообществе 🙂