我有以下javascript来嵌入我的page.tpl.php
中的flash <script type="text/javascript">
<!--
var flashvars = {
xmlUrl: "xml/banner.xml" //Use to change XML filename or location
};
var params = {
scale: "noscale",
menu: "false",
bgcolor: "#666666"
};
var attributes = {
id: "banner_swf",
name: "banner_swf"
};
swfobject.embedSWF("banner.swf", "banner_div", "873", "300", "4", "swfobject/expressInstall.swf", flashvars, params, attributes);
//-->
</script>
问题是,现在该脚本中引用的所有xml和swf文件都在我的'customtheme'目录下的'rotator'目录下。我该如何改变路径?
谢谢你的帮助! 罗伯特
答案 0 :(得分:1)
我查了一下flash作者,他们让我在var params中添加base:参数来指定我可以找到所有flash文件的基本文件夹。最后,这就是我在drupal中所做的工作。
<script type="text/javascript">
<!--
var flashvars = {
//xmlUrl: "path/to/xml/filename.xml" //Use to change XML filename or location
};
var params = {
base: "<?php print $base_path.$directory."/" ?>rotator/",
scale: "noscale",
menu: "false",
bgcolor: "#666666"
};
var attributes = {
id: "banner_swf",
name: "banner_swf"
};
swfobject.embedSWF("<?php print $base_path.$directory."/" ?>rotator/banner.swf", "banner_div", "876", "300", "4", "swfobject/expressInstall.swf", flashvars, params, attributes);
//-->
</script>
答案 1 :(得分:0)
要制作主题的路径,您可以这样做:
<?php $theme_path = $base_path . path_to_theme(); ?>
然后你可以在以后使用它。
现在,如果你想让事情变得更漂亮,你应该将所有这些javascript移动到js文件中并将其添加到主题的.info文件中。这将使drupal缩小并缓存它。
您需要做的是添加javascript的路径,这就是全局Drupal js变量的用途。您可以在preprocss页面挂钩中执行此操作。
function my_theme_preprocess_page(&$vars) {
drupal_add_js(array('myTheme' => array('themePath' => $vars['base_path'] . path_to_theme()), 'setting');
}
然后在你的js文件中你可以得到那个变量:
var path = Drupal.settings.myTheme.themePath;
为了让事情真实,Drupal就像你应该在行为中执行所有javascript一样,一旦页面加载就会执行:
Drupal.behaviors.myThemeAddFlash = function () {
// Do your thing here
}