agon-网站相关

Archive for the ‘网站相关’ Category

在网页中显示最新twitter消息

October 14th, 2009, Posted by: agon   

众所周知的原因,twitter的提供的插件无法在页面上显示。本文介绍可以通过php在网页中显示twitter最新更新的方法。
前提是php代码需要运行在国外的空间上,如果你的空间在外面,就很方便,直接可以用,而且免费空间很多,你可以申请一个。部分代码参考这里,很简单没什么技术含量,好了开始,直接贴代码,解释在代码里:

<?php
$feed = "http://search.twitter.com/search.atom?q=from:你的用户名&rpp=显示条数";//修改红色部分

//处理函数
function parse_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix)
{
  $feed = str_replace("&lt;", "<", $feed);//替换一些ASCII码
  $feed = str_replace("&gt;", ">", $feed);
  $feed = str_replace("&quot;", """, $feed);
  $clean = explode("<content type="html">", $feed);
  for ($i = 1; $i <= 显示条数; $i++) {
  $cleaner = explode("</content>", $clean[$i]);
  echo "<li><span>".$cleaner[0]."</span>";//显示消息,每条都加了li标签,你可以根据自己的需要更改 

$cleaner[1] = Substr($cleaner[1],19,11);

  echo str_replace("T", " ", $cleaner[1])."</li>"//显示时间
  }
}
$twitterFeed = file_get_contents($feed);//取得feed内容
parse_feed($twitterFeed, $prefix, $tweetprefix, $tweetsuffix, $suffix);//调用处理函数
?>

把代码放在你要插入的php页面上就可以了,有些空间不支持file_get_contents函数,下面提供另一种替代方法用curl,代码如下:

<?php
   //curl版
   //初始化curl
  $ch = curl_init() or die (curl_error());
   //设置twitter RSS地址
   curl_setopt($ch,CURLOPT_URL,"http://search.twitter.com/search.atom?q=from:你的用户名&rpp=显示条数");//更改红色部分
   //要求CURL返回数据
   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
   //取得结果
   $twitterFeed = curl_exec($ch) or die (curl_error());
  //处理函数
  function parse_feed($feed, $prefix, $tweetprefix, $tweetsuffix, $suffix)
  {
    $feed = str_replace("&lt;", "<", $feed);
    $feed = str_replace("&gt;", ">", $feed);
    $feed = str_replace("&quot;", """, $feed);
    $clean = explode("<content type="html">", $feed);
  
    for ($i = 1; $i <= 显示条数; $i++)
    {
      $cleaner = explode("</content>", $clean[$i]);
      //$tweetprefix
      echo "<li><span>".$cleaner[0]."</span>";//显示消息,每条都加了li标签,你可以根据自己的需要更改
      $cleaner[1] = Substr($cleaner[1],19,11);
      echo str_replace("T", " ", $cleaner[1])."</li>";//显示时间
    }
  }
  parse_feed($twitterFeed, $prefix, $tweetprefix, $tweetsuffix, $suffix);
  //关闭CURL
  curl_close($ch);
?>

如果你的空间在国内的话只需要在需要的显示的地方插入如下代码:

<?php
echo file_get_contents("http://www.yoursite.com/show.php")//假加你国外空间存放代码的地址是yoursite.com/show.php
?>

不能用file_get_contents函数的参考上述curl版代码,echo出地址就可以了。

示例,见本站首页:http://olio.org.ru/

dewplayer带播放列表的flash版mp3播放器

October 9th, 2009, Posted by: agon   

dewplayer现在有一个带播放列表的flash版mp3播放器,见效果
使用方法:
1:下载swf(右键另存为)。
2:新建一个文件名字为playlist.xml:
内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
    <title>列表名字(随便起)</title>
    <creator>Dew</creator>
    <trackList>
    <!一个track标签就是一首歌-->
        <track>
          <location>第一首mp3地址</location>
          <title>歌曲标题</title>
        </track>
        <track>
          <location>第二首mp3地址</location>
          <title>歌曲标题</title>
        </track>
    </trackList>
</playlist>

3:把swf和xml同时上传到你的空间。

4:在你想插入播放列表的网页上,贴上如下代码:

<object type="application/x-shockwave-flash" data="你的空间地址/dewplayer-playlist.swf?xml=你的空间地址/playlist.xml" width="240" height="200">
<param name="movie" value="你的空间地址/dewplayer-playlist.swf?xml=你的空间地址/playlist.xml" />
</object>

这样就可以了。

google sites外链音乐

March 28th, 2009, Posted by: agon   

skydrive最近会自动更改外链地址,大概从去年6月份到现在的文件外链地址都变了,似乎只要有下载,就会自动更改。因为google page不能注册了,所以现在用google sites来在线播放音乐文件,而且如果申请一个google apps,空间好像有10G。

google sites不像google page那样用直接地址,它通过转址才眺到真实的下载地址,不过,通过附件的链接地址依然能够播放。你可以到 blogcastone,测试一下。不过IE好像有点问题,在我机子上,只要退出google sites帐户,用flash播放mp3总是无限缓冲,其他的浏览器没有这样的问题。解决方法有两种:
第一种是用wmp播放器的代码来播放,缺点是兼容性不好。
第二种是把用来播放mp3的swf文件传到goole page空间,用google page来播放google sites里的音乐文件,就是把 blogcastone生成的代码里的swf文件地址换成google page的就可以了。

UPDATE:
由于google page要停止服务了,可能随时会删除,为了能在IE里面正常播放mp3,还是用google的播放器来播放吧。有两个可以选择,一个gmail里的播放器,一个是>google reader里的播放器。由于gmail里的有100多K,所以用Google Reader里的播放器,依然有点大,60多K,嵌入代码如下:

<object width="400" height="27" data="http://www.google.com/reader/ui/3247397568-audio-player.swf?audioUrl=你google sites里的mp3地址" type="application/x-shockwave-flash">
<param name="bgcolor" value="#ffffff" />
<param name="flashvars" value="playerMode=embedded" />
<param name="src" value="http://www.google.com/reader/ui/3247397568-audio-player.swf?audioUrl=你google sites里的mp3地址" />
<param name="wmode" value="window" />
<param name="quality" value="best" />
</object>

终极gzip压缩css、js、html、php语法

February 13th, 2009, Posted by: agon   

由于又被迫先暂时搬回000webhost,而这里没有mod_DEFLATE模块,再找以前压缩的时候琢磨出来的,以前还没见到过,超级简单,不超过10行短代码,就能解决各类静态网页文件的压缩问题,而且各个浏览器显示正常。

关于这个话题,很多人都写过了,最早是看阅微堂的教程很受启发,后来发现,我用起来rp很差,不是php动态网页不能压缩,就是css不显示,不能方便的按各种类型统一设置缓存,后来我用zlib的方法解决了以上问题,并且解决了firefox不显示css的问题,可是用zlib又有个坏处,就是必须等网页下载完之后,才开始解释,初次载入感稍差,mod_DEFLATE模块可以便下载边解释。
好了不说废话了,放代码,我以这个000webhost空间为例,首先编辑.htaccess,在里面添加两行代码:

AddHandler application/x-httpd-php .css .html .js
#这是添加你要压缩的类型
php_value auto_prepend_file "/home/a4284418/public_html/gzip.php"
#这是你给这些类型增加一个自动运行的php代码,后面一定要填你空间的绝对地址

然后在你指定的地址新建一个gzip.php,在里面加上如下代码:

<?php
ob_start("ob_gzhandler");
ob_start("compress");
//如果出现css不能解释,只显示网页,请加入下面的红色代码,去掉注释符
/*
 $pathinfo = pathinfo($_SERVER[PHP_SELF]); switch ($pathinfo['extension']) { case "css" : header("Content-type: text/css"); break; case "html" : header("Content-type: text/html"); break; case "js" : header("Content-type: text/javascript"); break; default : break; }
*/
?>

好了,完工,就这么简单,你什么都不用懂,就可以压缩这四种静态文件了,而且它还是边下载,边解释。
如图:gzip
第一个始主页,第二个是css,两个同时下载,要是zlib的话,第一个下完,后边的才开始下。

另外说一句使用mod_DEFLATE压缩的人,肯能有的空间js无法压缩,建议用以下语法:

<FilesMatch "\.(js|css|html|htm|php|xml)tiny_mce_markerquot;>
SetOutputFilter DEFLATE
</FilesMatch>

这个方法目前来看非常圆满,ie6,K-meleon,opera,firefox均显示正常。

Update:提供另一种便捷方法,有的免费主机上可能不让用AddHandler,例如000webhost,你一用就会在网页后面插入一段analysis代码,如果网页中有动态返回结果,每个返回结果都插了这一段分析代码,引起一连串错误。
好了下面说方法:
首先,更改.htaccess,添加下面内容

#打开zlib压缩输出,自动压缩html,php文件
php_value zlib.output_compression 2048
#设置css和js文件压缩
<IfModule mod_rewrite.c>
RewriteEngine On
#下面是你要压缩目录的路径,这里为当前
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f
#下面是gzip.php文件压缩js和css文件,注意gzip.php文件位置
RewriteRule ^(.*)(js|css)$ /gzip.php?file=$1$2&type=$2 [L]
</IfModule>

创建gzip.php文件,位置与你在.htaccess里设置的相同,添加如下内容:

<?php
$file=$_GET['file'];

switch ($_GET['type']){
case 'css':
header("Content-type: text/css");
break;
case 'js' :
header("Content-type: text/javascript");
break;
}
include($file);
?>

好了现在就可以自动压缩js,html,和css文件了
2012年9月2日Update:做公司网站的时候发现cpnel空间的mod_DEFLATE网站优化工具没了没有了,只有php和html页面才压缩输出,css和js不会压缩,于是用上面得方法在.htaccess里写php_value,添加压缩文件,发现网站500错误,查看错误日志,显示为”command ‘php_value’, perhaps misspelled or defined by a module not included in the server configuratio”,原来空间禁止在.htaccess里写php_value,解决的办法是在相应的目录添加一个php_ini文件,在里面写,如把php_value zlib.output_compression 2048换成zlib.output_compression=2048,然而用php_ini有一个坏处,就是只能在当前目录里起作用,在当前目录的子目录里就会失去作用,php_ini里写一些值,分别在当前目录和子目录里查一下phpinfo(),就明白了,可是css文件和js文件分散在很多文件夹里,所以决定不用php_ini文件,在.htaccess用RewriteRule来加载用来压缩js和css的php文件,以前写的还不算完美,有限制,下面的方法应该没什么限制,算是比较完美了,原理和以前的差不多,只是融合了以上两种方法,具体流程如下图,图片是修改自这里的:

首先,更改.htaccess,添加下面内容


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
#这里用的是相对路径,gzip.php与.htaccess在同以文件夹内
#代码的意思是正则式判断js和css结尾文件,并把文件名和类型传给gzip.php文件
#如果你的html和php没有默认压缩,(js|css)改为(php|html|js|css)
RewriteRule ^(.*)(js|css)$ gzip.php?file=$1$2&type=$2 [L]

然后,在.htaccess同文件夹下新建gzip.php文件,在里面添加如下代码:

<?php
ob_start("ob_gzhandler");
ob_start("compress");
$file=$_GET['file'];
switch ($_GET['type']){
case 'css':
header_remove("Expires");
header_remove("Last-Modified");
header("Cache-Control: max-age=15360000");
header("Content-type: text/css");
break;
case 'js' :
header_remove("Expires");
header_remove("Last-Modified");
header("Cache-Control: max-age=315360000");
header("Content-type: text/javascript");
break;
}
include($file);
?<

google自定义搜索宽度问题

January 15th, 2009, Posted by: agon   

发现自己的自定义搜索还闲着,google上也开始能搜到了,就整进来.参考cosbeta的方法,整了进来.修改的时候,推荐archives.php这个页面模板来改,它里面东西最少了把中间的几句删掉就可以了。

google给的代码有一个变量googleSearchFrameWidth用来设置宽度值,可郁闷的是我怎么改,结果页的宽度都没有变,用ff 的firebug发现iframe的宽度,始终都是797px,如果有效地话,那应该和googleSearchFrameWidth的值是一样的啊,搜了半天也没找到理想的答案。最后答案在google的帮助上。

如图,选择广告位置的时候,只有选择在最上方和最下方才可以调整iframe的宽度,默认是500,如果选择右方,默认是797,并且,默认值是最小宽度,设置的宽度只有大于默认值才有效果。真不方便,应该在选择的时候旁边有个小提示,那也不会忙活半天了。

如果想让输出结果自适应大小就可以了,可以给googleSearchFrameWidth设置一个小一点的值,然后在css添上#cse-search-results iframe {min-width:100%;},这样如果#cse-search-results所在区域是自适应大小,那么结果的宽度就随它的父div变宽而变宽 了。

现在唯一不爽的是不能让背景透明,只能选各种颜色,由背景的话。看起来怪怪的,希望以后可以加上。

Page 3 of 712345...Last »