WedX - журнал о программировании и компьютерных науках

Drupal: вставка пятизвездочного виджета во внешний файл php

Я пытался загрузить модуль Fivestar и показать виджет рейтинга выбранного узла во внешнем файле php. Я получил виджет рейтинга, отображаемый на странице, но он отображает только ухудшенную версию виджета (не-JavaScript, выпадающий виджет и кнопку «Оценить»). Я просмотрел исходный код страницы, но javascript для пятизвездочного модуля не был загружен . Я попытался загрузить javascript, используя следующие функции, но не повезло:

Fivestar_add_js(); $path = drupal_get_path('модуль','fivestar'); drupal_add_js($path.'/js/fivestar.js', 'встроенный', 'нижний колонтитул');

Ниже приведен код в файле 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(), в качестве быстрого исправления, но обратите внимание, что это также выведет все файлы drupal js по умолчанию, которые могут быть больше, чем вам нужно (но могут также содержать другие скрипты, необходимые для Fivestar, например jquery). В качестве альтернативы вам придется создать необходимые теги сценария самостоятельно.

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

27.09.2010
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]