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). В качестве альтернативы вам придется создать необходимые теги сценария самостоятельно.

Что касается подсказок о том, что читать, то сложно указать вам что-то конкретное, но вы, возможно, захотите прочесть о системе тем в целом.

Другие вопросы по тегам