2010-09-26 47 views
2

我一直在尝试加载五星模块并在外部php文件中显示所选节点的评分小部件。我已经获得了页面上显示的评级小部件,但它只显示小部件的降级版本(非JavaScript,下拉小部件和“费率”按钮)我查看了页面的源代码,但五星模块的JavaScript未加载。我曾尝试使用以下功能加载JavaScript,但没有运气:Drupal:在外部php文件中插入五星小部件

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); 
    } 

如果你可以给我一个提示或直接我在网络上一些阅读,我将不胜感激。非常感谢你提前。

回答

3

通过做这一切的“外部”网页/文件,你规避Drupal主题系统 - drupal_add_js()(和fivestar_add_js(),因为它只是利用这到底)不输出脚本标签本身,而只是保证它们将被包含在page.tpl.php中的$scripts变量中,该变量随后负责打印该变量内容。由于您没有浏览页面模板,因此没有脚本标签。

你可以在你的外部文件来输出通过drupal_add_js()加入速战速决脚本做,但请注意,这将输出所有默认的Drupal js文件为好,这可能是比你更需要(但可能还包含五星所需的其他脚本,例如jquery)。或者,您必须自己创建所需的脚本标记。

至于要读什么的提示,很难指出某些特定的内容,但您可能需要详细阅读the theming system