Drupal: вставка пятизвездного виджета во внешний php-файл - PullRequest
2 голосов
/ 26 сентября 2010

Я пытался загрузить пятизвездочный модуль и показать виджет рейтинга выбранного узла во внешнем 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 Ответ

3 голосов
/ 27 сентября 2010

Делая все это на «внешней» странице / файле, вы обходите систему тем Drupal - drupal_add_js()fivestar_add_js(), так как она просто использует это в конце) не выводят теги скрипта сами, но просто убедитесь, что они будут включены в переменную $scripts в page.tpl.php, которая затем отвечает за вывод содержимого этих переменных. Поскольку вы не просматриваете шаблон страницы, вы не получаете тегов сценария.

Вы можете сделать print drupal_get_js(); во внешнем файле, чтобы вывести сценарии, добавленные с помощью drupal_add_js(), в качестве быстрого исправления, но учтите, что при этом будут выведены все файлы по умолчанию для drupal js, которые могут быть больше, чем вам нужно (но может также содержать другие скрипты, необходимые для Fivestar, например, jquery). В качестве альтернативы вам придется создать необходимые теги сценария самостоятельно.

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

...