2

我一直在尝试加载五星级模块并在外部 php 文件中显示所选节点的评级小部件。我已经在页面上显示了评级小部件,但它只显示小部件的降级版本(非 JavaScript、下拉小部件和“评级”按钮)我查看了页面的源代码,但未加载五星级模块的 javascript . 我尝试使用以下函数加载 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);
    }

如果您能给我一个提示或指导我在网上阅读一些内容,我将不胜感激。非常感谢您提前。

4

1 回答 1

3

通过在“外部”页面/文件上执行所有这些操作,您可以绕过 Drupal 主题系统 - drupal_add_js()(并且fivestar_add_js(),因为它最终只是使用它)不输出脚本标签本身,而只是确保它们将包含在中的$scripts变量page.tpl.php,然后负责打印该变量的内容。由于您没有浏览页面模板,因此您没有得到任何脚本标签。

您可以print drupal_get_js();在外部文件中执行 a 以输出drupal_add_js()作为快速修复添加的脚本,但请注意,这也会输出所有默认的 drupal js 文件,这可能超出您的需要(但也可能包含其他所需的脚本由五星级,例如jquery)。或者,您必须自己创建所需的脚本标签。

至于阅读内容的提示,很难为您指出特定的内容,但您可能希望总体上阅读主题系统

于 2010-09-27T09:49:35.613 回答