Drupal: вставка пятизвездного виджета во внешний php-файл
Я пытался загрузить пятизвездочный модуль и показать виджет рейтинга выбранного узла во внешнем php-файле. Я получил виджет рейтинга, отображаемый на странице, но он отображает только ухудшенную версию виджета (не-JavaScript, выпадающий виджет и кнопку "Оценить"). Я посмотрел исходный код страницы, но javascript для модуля 5star не был загружен, Я пытался загрузить JavaScript, используя следующие функции, но безуспешно:
fivestar_add_js (); $ path = drupal_get_path ('module', 'fivestar'); drupal_add_js ($ path. '/ js / fivestar.js', 'inline', 'footer');
Ниже приведен код в файле php:
//require the bootstrap include
require_once 'includes/bootstrap.inc';
//Load Drupal
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
fivestar_add_css();
// I have used one of the following two functions one at a time to test.
fivestar_add_js();
$path = drupal_get_path('module','fivestar');
drupal_add_js($path.'/js/fivestar.js', 'inline', 'footer');
$book = $_GET["book"];
$chap = $_GET["chap"];
$prob = $_GET["prob"];
$string = $book.'/'.$chap.'/'.$prob;
$query = "SELECT ctcr.nid FROM content_type_comments_ratings AS ctcr WHERE ctcr.field_problem_value = '".$string."'";
$result=db_query($query);
$row = db_fetch_array($result);
if(isset($row['nid']))
{
$nid = $row['nid'];
node_load(FALSE, NULL, TRUE);
$fivestar = node_load($nid, NULL, TRUE);
if (function_exists('fivestar_widget_form')) print fivestar_widget_form($fivestar);
}
Если бы вы могли дать мне подсказку или направить меня к чтению в Интернете, я был бы признателен. Заранее большое спасибо.
1 ответ
Делая все это на "внешней" странице / файле, вы обходите систему тем Drupal - drupal_add_js()
(а также fivestar_add_js()
, поскольку он просто использует это в конце), не выводите сами теги сценария, а просто убедитесь, что они будут включены в $scripts
переменная в page.tpl.php
, который затем отвечает за печать содержимого этих переменных. Поскольку вы не просматриваете шаблон страницы, вы не получаете теги сценария.
Вы могли бы сделать print drupal_get_js();
в ваш внешний файл для вывода скриптов, добавленных через drupal_add_js()
в качестве быстрого исправления, но учтите, что при этом будут выводиться все js-файлы drupal по умолчанию, которые могут быть больше, чем вам нужно (но могут также содержать другие скрипты, необходимые для Fivestar, например, jquery). В качестве альтернативы вам придется создать необходимые теги сценария самостоятельно.
Что касается подсказок о том, что читать, то сложно указать вам что-то конкретное, но вы, возможно, захотите прочесть о системе тем в целом.