我一直在尝试加载五星模块并在外部php文件中显示所选节点的评级小部件。我已经获得了页面上显示的评级小部件,但它只显示小部件的降级版本(非JavaScript,下拉小部件和“评级”按钮)我查看了页面的源代码但是没有加载用于fivestar模块的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);
}
如果你能给我一个提示或指导我在网上阅读,我将不胜感激。非常感谢你提前。
答案 0 :(得分:3)
通过在“外部”页面/文件上执行所有操作,您绕过了Drupal主题系统 - drupal_add_js()
(和fivestar_add_js()
,因为它最终只是使用它)不输出脚本标记本身,但只是确保它们将包含在$scripts
中的page.tpl.php
变量中,然后负责打印变量内容。由于您没有浏览页面模板,因此没有脚本标记。
您可以在外部文件中执行print drupal_get_js();
以输出通过drupal_add_js()
添加的脚本作为快速修复,但请注意,这将输出所有默认的drupal js文件,这可能是超过你需要的(但也可能包含fivestar所需的其他脚本,例如jquery)。或者,您必须自己创建所需的脚本标记。
至于要阅读的内容的提示,很难指出某些特定内容,但您可能想要阅读the theming system一般。