Joomla!之门 arrow 文章新闻 arrow Joomla教程 arrow 三板斧让Joomla!支持flash格式的banner
Narrow screen resolution Wide screen resolution default color green color orange color

Google Translate

EnglishFrenchGermanItalianJapanesePortugueseRussian

文章分类阅读

三板斧让Joomla!支持flash格式的banner

E-mail
(2 次投票)
作者: 白建鹏   
2006-12-05

在Joomla的自带组件中有一个com_banner,可以在网页顶部显示banner,也就是我们说的“旗帜广告”。当然,这个位置你可以通过修改模板移动到其他位置,也可以显示公司的标语或者宣传画,但是有一样很遗憾:默认的com_banner不支持flash格式(.swf)的banner!

这岂不是很痛苦!现在不用flash格式的banner几乎就等于说“我不懂网页设计”!尽管在Joomla的扩展库中可以发现有人开发了一些模块来使得在banner位置显示flash格式的动画,但是这种方法未免大材小用了一些。实际上通过对Joomla核心文件的三处修改,就能立即实现在banner上显示flash文件。

方法如下:

1、打开 <joomla>/administrator/components/com_banners/admin.banners.html.php 文件。

大约在275行左右,找到如下代码:

原始代码
  1. if (eregi("swf", $_row->imageurl)) { ?> <img name="imagelib" src="images/blank.png" alt="" /> 修改为:
  2. <p>{geshibot lang="php" head="修改后代码"} if (eregi("swf", $_row->imageurl)) { $imageurl = "../images/banners/".$_row->imageurl; $getflashinfo = @getimagesize( $imageurl ); echo '
  3. <object width="'.$getflashinfo[0].'" height="'.$getflashinfo[1].'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0">
  4. <param name="movie" value="'.$imageurl.'" />
  5. <param name="quality" value="high" />
  6. <param name="wmode" value="transparent" />
  7. <param name="\" value="\" />
  8. <param name="movie" value="'.$imageurl.'" />
  9. <param name="quality" value="high" />
  10. <param name="wmode" value="transparent" />
  11. <param name="movie" value="'.$imageurl.'" />
  12. <param name="quality" value="high" />
  13. <param name="wmode" value="transparent" />
  14. <embed width="'.$getflashinfo[0].'" height="'.$getflashinfo[1].'" wmode="transparent" quality="high" type="application/x-shockwave-flash" src="%27.$imageurl.%27" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>';
 

 

2、打开 <joomla>/modules/mod_banners.php 文件。

在85行左右,找到如下代码:

原始代码
  1. } else if (eregi("\.swf$", $banner->imageurl)) { $imageurl = "$mosConfig_live_site/images/banners/".$banner->imageurl; echo "
  2. <object border="5" swflash.cab#version="6,0,0,0\" classid="\" codebase="\">
  3. <embed loop="\" type="\" src="%5C%22$imageurl%5C%22" pluginspage="\"></embed></object>"; }
 

对这段代码的修改有两种方法。由于在后台的“广告”组件设置中,针对每一个广告发布时都要求填写一个点击后指向的URL,因此,如果你希望点击flash动画后打开后台指定的那个URL,就把上述代码修改为:

修改后代码
  1. } else if (eregi("\.swf$", $banner->imageurl)) { $imageurl = "$mosConfig_live_site/images/banners/".$banner->imageurl; $link = sefRelToAbs( 'index.php?option=com_banners&task=click&bid='. $banner->bid ); $getflashinfo = @getimagesize( $imageurl ); echo '
  2. <object style="position: relative;" width="'.$getflashinfo[0].'" height="'.$getflashinfo[1].'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0">
  3. <embed style="z-index: 1; position: relative;" width="'.$getflashinfo[0].'" height="'.$getflashinfo[1].'" wmode="transparent" quality="high" type="application/x-shockwave-flash" src="%27.$imageurl.%27" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>'; }
 

当然了,一般来说,很多flash在制作时本身已经内嵌了点击后要打开的URL,因此如果使用上述代码就会使内嵌的URL失效,那么可以修改为下面的代码来忽略后台指定的URL:

修改后代码
  1. } else if (eregi("\.swf$", $banner->imageurl)) { $imageurl = "$mosConfig_live_site/images/banners/".$banner->imageurl; $getflashinfo = @getimagesize( $imageurl ); echo '
  2. <object style="position: relative;" width="'.$getflashinfo[0].'" height="'.$getflashinfo[1].'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0">
  3. <embed width="'.$getflashinfo[0].'" height="'.$getflashinfo[1].'" wmode="transparent" quality="high" type="application/x-shockwave-flash" src="%27.$imageurl.%27" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>'; }
 

3、打开 <joomla>/includes/joomla.php 文件。

在大约 4799 行可以看到下面一段注释以及后面紧跟的 images 函数:

原始代码
  1. /** * build the select list to choose an image */ function Images
 

在其下方,找到下面的代码:

原始代码
  1. if ( eregi( "bmp|gif|jpg|png", $file ) ) {
 

将其修改为:

修改后代码
  1. if ( eregi( "bmp|gif|jpg|png|swf", $file ) ) {
 

OK,现在搞定了。你可以进入网站后台,看看在“广告”组件(英文版就是 Banners)里面添加新广告时,是不是已经出现了对flash文件的支持?

注意:添加广告之前,别忘记把你要添加的 .swf 文件事先复制到 <joomla>/images/banners 文件夹里面去。

 
< 上一篇   下一篇 >