用BACKSTRETCH实现定时自动切换背景

作者:matrix 发布时间:2013 年 10 月 9 日 分类:Wordpress 兼容并蓄 零零星星

图片4808-用BACKSTRETCH实现定时自动切换背景

jquery-backstretch可以实现之前>>刷新页面后让WordPress背景随机切换  不能到达的动态切换背景功能。 用jquery-backstretch就算你不按F5刷新页面背景也可以自动切换,带有淡入淡出的缓慢加载那种效果,很好看。

github地址:https://github.com/srobbin/jquery-backstretch

官网:http://srobbin.com/jquery-plugins/backstretch/

目前最新版本 Backstretch - v2.0.4 - 2013-06-19 阅读剩余部分 »

给wordpress添加title属性的鼠标气泡悬浮窗

作者:matrix 发布时间:2013 年 9 月 26 日 分类:Wordpress 兼容并蓄

鼠标停留在有title属性上的时候或有提示,但是默认的样式中有觉得不可观的地方。利用js即可实现修改。

NGRO的效果演示:

NGRO的效果演示

css 阅读剩余部分 »

WordPress整合Highslide JS 灯箱效果

作者:matrix 发布时间:2013 年 9 月 25 日 分类:Wordpress 兼容并蓄

更换主题-七彩之家BLUE2.0以及后续的修改 有提到整合auto-highslide灯箱的功能,这次更加完善。

DEMO:http://pan.baidu.com/share/link?shareid=4020387527&uk=3238236832

步骤:

1.将下面代码加到主题的functions.php中,方法你懂得。

<?php  
    //////////////START wp highslide picture code  /////////////  
add_filter('the_content', 'hlHighSlide_replace', '99');  

    add_action('wp_head', 'highslide_head');  
    function highslide_head()  
        {  
        $hlHighslide_wp_url=get_bloginfo('template_url').'/';  
        $defaults_javascript =    
        "<link href='{$hlHighslide_wp_url}highslide/highslide.css' rel='stylesheet' type='text/css' />";  
     echo $defaults_javascript;  
        }  

    add_action('wp_footer', 'highslide_footer');  
    function highslide_footer()  
    {  
    $hlHighslide_wp_url=get_bloginfo('template_url').'/';  
    $defaults_javascript =    
    "\n\t<script type='text/javascript' src='{$hlHighslide_wp_url}highslide/highslide.js'></script> 
    <script type='text/javascript'> 
hs.graphicsDir = '{$hlHighslide_wp_url}highslide/graphics/'; 
hs.showCredits = false; 
hs.creditsPosition = 'bottom left'; 
hs.outlineType = 'custom'; 
hs.dimmingOpacity = 0.3; 
hs.fadeInOut = true; 
hs.align = 'center'; 
hs.captionEval = 'this.thumb.alt'; 


// Add the slideshow controller 
hs.addSlideshow({ 
    slideshowGroup: 'group1', 
    interval: 5000, 
    repeat: true, 
    useControls: true, 
    fixedControls: 'fit', 
    overlayOptions: { 
        opacity: 0.75, 
        position: 'bottom center', 
        offsetX: 0, 
        offsetY: -10, 
        hideOnMouseOut: true 
    } 
}); 

// Chinese simplified language strings 
hs.lang = { 
    cssDirection: 'ltr', 
    loadingText: '载入中...', 
    loadingTitle: '正在载入,点击取消', 
    focusTitle: '置于最前', 
    fullExpandTitle: '原始尺寸', 

    previousText: '上一张', 
    nextText: '下一张', 
    moveText: '移动', 
    closeText: '关闭', 
    closeTitle: '关闭 (退出键)', 
    resizeTitle: '调整尺寸', 
    playText: '播放', 
    playTitle: '播放幻灯片 (空格键)', 
    pauseText: '暂停', 
    pauseTitle: '暂停幻灯片 (空格键)', 
    previousTitle: '上一张 (左方向键)', 
    nextTitle: '下一张 (右方向键)', 
    moveTitle: '移动', 
    fullExpandText: '完整尺寸', 
    number: 'Image %1 of %2', 
    restoreTitle: '单击关闭图片,单击不放可拖动。使用方向键切换图片。' 
}; 

// gallery config object 
var config1 = { 
    slideshowGroup: 'group1', 
    numberPosition: 'caption', 
    transitions: ['expand', 'crossfade'] 
}; 
         </script>";  
 echo $defaults_javascript;  
 }  

//add onclick event   
function add_onclick_replace ($content)  
{   
$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";  
$replacement = '<a$1href=$2$3.$4$5 class="highslide"  onclick="return hs.expand(this, config1 )" $6>$7 </a>';  
$content = preg_replace($pattern, $replacement, $content);  
return $content;  
}  

function hlHighSlide_replace($content)  
{  
        global $post;  
        $defaults = array();  
        $defaults['quicktags'] = 'y';  
        $defaults['alt'] = 'Enter ALT Tag Description';  
        $defaults['title'] = 'Enter Caption Text';  
        $defaults['thumbid'] = 'thumb1';  
        $defaults['show_caption'] = 'y';  
        $defaults['show_close'] = 'y';  
        $content=add_onclick_replace($content);  
        $HSVars = array("SRC", "ALT", "TITLE", "WIDTH", "HEIGHT","THUMBID");  
        $HSVals = array($defaults['href'], $defaults['src'], $defaults['alt'], $defaults['title'], $defaults['thumbid']);  
        preg_match_all ('!<img([^>]*)[ ]*[/]{1}>!i', $content, $matches);  
        $HSStrings = $matches[0];  
        $HSAttributes = $matches[1];  
        for ($i = 0; $i < count($HSAttributes); $i++)  
        { preg_match_all('!(src|alt|title|width|height|class)="([^"]*)"!i',$HSAttributes[$i],$matches); 
          $HSSetVars = $HSSetVals = array(); 
          for ($j = 0; $j < count($matches[1]); $j++) 
            { $HSSetVars[$j] = strtoupper($matches[1][$j]); 
              $HSSetVals[$j] = $matches[2][$j];} 
        } 
        $HSClose = <<<EOT 
                <a href="#" onclick="hs.close(this);return false;" class="highslide-close"  title="关闭">Close</a>   
EOT; 
                $HSCaption = <<<EOT 
                <div class='highslide-caption' id='caption-for-%THUMBID%'> 
                {$HSPrvNextLinks}            
                {$HSClose}   
                <div style="clear:both">%TITLE%</div> 
                </div> 
EOT; 
            $HSCode = <<<EOT 
<img id="%THUMBID%" src="%SRC%" alt="%ALT%" title="%TITLE%" width="%WIDTH%"  height="%HEIGHT%" />{$HSCaption}  
EOT;  
          $content = str_replace($HSStrings[$i], $HSCode, $content);  
        return $content;  
    }  



    /////////////////  
?>  

说明:87 行的onclick="return hs.expand(this, config1 )"开启了相册幻灯片功能,如果需要关闭可改为onclick="return hs.expand(this)"

2.下载素材文件,解压到主题目录

下载:

http://www.400gb.com/file/30266321

http://pan.baidu.com/share/link?shareid=3945557249&uk=3238236832

3.最后完工。

效果:

图片4829-WordPress整合Highslide JS 灯箱效果

使用的Highslide JS 在线编辑,状态保存:

http://highslide.com/editor/?config=%7B%22lang%22%3A+%22zh-s%22,+%22preset%22%3A+%22html-white%22,+%22applyDimming%22%3A+true,+%22dimmingOpacity%22%3A+%220.3%22,+%22hideThumbOnExpand%22%3A+false,+%22alignment%22%3A+%22center%22,+%22captionSource%22%3A+%22thumb.alt%22,+%22captionStyles%22%3A+%22%5Ctpadding%3A+2px;%22,+%22headingSource%22%3A+%22thumb.alt%22,+%22creditsPosition%22%3A+%22bottom+left%22,+%22enableGallery%22%3A+true,+%22numberPosition%22%3A+%22caption%22,+%22enableThumbstrip%22%3A+false,+%22thumbstripMode%22%3A+%22float%22,+%22thumbstripPosition%22%3A+%22below%22,+%22thumbstripRelativeTo%22%3A+%22image%22,+%22thumbstripSize%22%3A+%22280%22,+%22slideshowRepeat%22%3A+true,+%22htmlControlsLayout%22%3A+%22icon-text%22,+%22useTitleBar%22%3A+false,+%22htmlHeadingSource%22%3A+%22a.title%22%7D

参考:http://themeidea.com/highslide.html

Highslide js 在线编辑 http://justcoding.iteye.com/blog/595145

http://highslide.com/editor/

添加鼠标滑过图片闪烁的js特效-jquery-opacity-rollover

作者:matrix 发布时间:2013 年 9 月 20 日 分类:Wordpress 兼容并蓄

图片4842-添加鼠标滑过图片闪烁的js特效-jquery-opacity-rollover

onamae.com的25号免费域名没抢到,倒是看到onamae上的一个图片闪光特效好奇,这就扒了。

看头部的meta写的jquery-opacity-rollover.js文件,不知道这是个啥子插件上的东东。

作者:http://h2ham.seesaa.net

实际效果,文字说明:

假设图片被指定加载此js特效。 阅读剩余部分 »

本站「恢复」域名解析

作者:matrix 发布时间:2013 年 9 月 19 日 分类:兼容并蓄 零零星星

自从本站准备暂时停止域名解析 的2013年08月13日开始到昨天9-18 10:38.   😀 被安通过了。工信部短信通知的,后来也有email。  哈哈

硬是感谢各位相关人员~

这一个月的时间真恼火。期间找了俩关于不关站的办法:

10-15添加第三种更靠谱的方法

1.靠谱的就是使用DNSPOD的功能:修改线路类型

图片4844-本站「恢复」域名解析

到域名列表里找到线路类型选择“搜索引擎”,这样蜘蛛照样可以正常访问,比起停止域名解析来好得多。

本站收录本来就那一点点,感觉影响不大。

2.不靠谱的就是识别来访者ip地址实现自动屏蔽省级IP段。

这样的话还是有些作用,但不能保证人家看不到你的网站。

so, 不咋靠谱。

在index.php中适当位置添加相关代码:

<?
function convertip($ip)
{
//IP数据文件路径
    $dat_path = 'QQWry.dat';

//检查IP地址
    if (!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $ip)) {
        return 'IP Address Error';
    }

//打开IP数据文件
    if (!$fd = @fopen($dat_path, 'rb')) {
        return 'IP date file not exists or access denied';
    }

//分解IP进行运算,得出整形数
    $ip = explode('.', $ip);
    $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

//获取IP数据索引开始和结束位置
    $DataBegin = fread($fd, 4);
    $DataEnd = fread($fd, 4);
    $ipbegin = implode('', unpack('L', $DataBegin));
    if ($ipbegin < 0) $ipbegin += pow(2, 32);
    $ipend = implode('', unpack('L', $DataEnd));
    if ($ipend < 0) $ipend += pow(2, 32);
    $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

    $BeginNum = 0;
    $EndNum = $ipAllNum;

//使用二分查找法从索引记录中搜索匹配的IP记录
    while ($ip1num > $ipNum || $ip2num < $ipNum) {
        $Middle = intval(($EndNum + $BeginNum) / 2);

//偏移指针到索引位置读取4个字节
        fseek($fd, $ipbegin + 7 * $Middle);
        $ipData1 = fread($fd, 4);
        if (strlen($ipData1) < 4) {
            fclose($fd);
            return 'System Error';
        }
//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂
        $ip1num = implode('', unpack('L', $ipData1));
        if ($ip1num < 0) $ip1num += pow(2, 32);

//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
        if ($ip1num > $ipNum) {
            $EndNum = $Middle;
            continue;
        }

//取完上一个索引后取下一个索引
        $DataSeek = fread($fd, 3);
        if (strlen($DataSeek) < 3) {
            fclose($fd);
            return 'System Error';
        }
        $DataSeek = implode('', unpack('L', $DataSeek . chr(0)));
        fseek($fd, $DataSeek);
        $ipData2 = fread($fd, 4);
        if (strlen($ipData2) < 4) {
            fclose($fd);
            return 'System Error';
        }
        $ip2num = implode('', unpack('L', $ipData2));
        if ($ip2num < 0) $ip2num += pow(2, 32);

//没找到提示未知
        if ($ip2num < $ipNum) {
            if ($Middle == $BeginNum) {
                fclose($fd);
                return 'Unknown';
            }
            $BeginNum = $Middle;
        }
    }

//下面的代码读晕了,没读明白,有兴趣的慢慢读
    $ipFlag = fread($fd, 1);
    if ($ipFlag == chr(1)) {
        $ipSeek = fread($fd, 3);
        if (strlen($ipSeek) < 3) {
            fclose($fd);
            return 'System Error';
        }
        $ipSeek = implode('', unpack('L', $ipSeek . chr(0)));
        fseek($fd, $ipSeek);
        $ipFlag = fread($fd, 1);
    }

    if ($ipFlag == chr(2)) {
        $AddrSeek = fread($fd, 3);
        if (strlen($AddrSeek) < 3) {
            fclose($fd);
            return 'System Error';
        }
        $ipFlag = fread($fd, 1);
        if ($ipFlag == chr(2)) {
            $AddrSeek2 = fread($fd, 3);
            if (strlen($AddrSeek2) < 3) {
                fclose($fd);
                return 'System Error';
            }
            $AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0)));
            fseek($fd, $AddrSeek2);
        } else {
            fseek($fd, -1, SEEK_CUR);
        }

        while (($char = fread($fd, 1)) != chr(0))
            $ipAddr2 .= $char;

        $AddrSeek = implode('', unpack('L', $AddrSeek . chr(0)));
        fseek($fd, $AddrSeek);

        while (($char = fread($fd, 1)) != chr(0))
            $ipAddr1 .= $char;
    } else {
        fseek($fd, -1, SEEK_CUR);
        while (($char = fread($fd, 1)) != chr(0))
            $ipAddr1 .= $char;

        $ipFlag = fread($fd, 1);
        if ($ipFlag == chr(2)) {
            $AddrSeek2 = fread($fd, 3);
            if (strlen($AddrSeek2) < 3) {
                fclose($fd);
                return 'System Error';
            }
            $AddrSeek2 = implode('', unpack('L', $AddrSeek2 . chr(0)));
            fseek($fd, $AddrSeek2);
        } else {
            fseek($fd, -1, SEEK_CUR);
        }
        while (($char = fread($fd, 1)) != chr(0)) {
            $ipAddr2 .= $char;
        }
    }
    fclose($fd);

//最后做相应的替换操作后返回结果
    if (preg_match('/http/i', $ipAddr2)) {
        $ipAddr2 = '';
    }
    $ipaddr = "$ipAddr1 $ipAddr2";
    $ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);
    $ipaddr = preg_replace('/^s*/is', '', $ipaddr);
    $ipaddr = preg_replace('/s*$/is', '', $ipaddr);
    if (preg_match('/http/i', $ipaddr) || $ipaddr == '') {
        $ipaddr = 'Unknown';
    }

    return $ipaddr;
}

function findstr($str, $substr)
{
    $m = strlen($str);
    $n = strlen($substr);
    if ($m < $n) return false;
    for ($i = 0; $i <= ($m - $n + 1); $i++) {
        $sub = substr($str, $i, $n);
        if (strcmp($sub, $substr) == 0) return true;
    }
    return false;
}

?>

<?
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
$ClientCity = convertip($user_IP); //获得所在城市字符串
$ClientCity = iconv("gb2312", "utf-8", $ClientCity);
$flag = false;
$tmp = $_SERVER['HTTP_USER_AGENT'];
if (strpos($tmp, 'Googlebot') !== false) {
    $flag = true;
} else if (strpos($tmp, 'Baiduspider') > 0) {
    $flag = true;
} else if (strpos($tmp, 'Yahoo! Slurp') !== false) {
    $flag = true;
} else if (strpos($tmp, 'msnbot') !== false) {
    $flag = true;
} else if (strpos($tmp, 'Sosospider') !== false) {
    $flag = true;
} else if (strpos($tmp, 'YodaoBot') !== false || strpos($tmp, 'OutfoxBot') !== false) {
    $flag = true;
} else if (strpos($tmp, 'Sogou web spider') !== false || strpos($tmp, 'Sogou Orion spider') !== false) {
    $flag = true;
} else if (strpos($tmp, 'fast-webcrawler') !== false) {
    $flag = true;
} else if (strpos($tmp, 'Gaisbot') !== false) {
    $flag = true;
} else if (strpos($tmp, 'ia_archiver') !== false) {
    $flag = true;
} else if (strpos($tmp, 'altavista') !== false) {
    $flag = true;
} else if (strpos($tmp, 'lycos_spider') !== false) {
    $flag = true;
} else if (strpos($tmp, 'Inktomi slurp') !== false) {
    $flag = true;
}

//echo $ClientCity;
$b = '安庆'; //这里填写要屏蔽的地区
if (findstr($ClientCity, $b)) {
    if ($flag) { //这里是让蜘蛛过去
        echo "<script>location.href='http://www.tlrc.com/';</script>";
    } else {
        echo "<script>location.href='http://www.tongling.cn/';</script>";
    }

} else {
//正常需要访问的代码,也可以再增加屏蔽的城市
}
?>

参考:http://www.discuz.net/forum.php?mod=viewthread&tid=2712504

3.来自某Q群的代码。亲测成功!最简洁,也就几行js代码就可实现。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script>  
<script type="text/javascript">  
var t = remote_ip_info;  
if( t.city == '成都' ){  
window.location.href='https://www.hhtjim.com';  
}  
</script>  

说明:

第5行填写需要屏蔽的城市

弊端就是只能屏蔽城市的IP段,屏蔽省份的话需要相应修改。

屏蔽四川全省:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script>  
<script type="text/javascript">  
var t = remote_ip_info;  
if( t.province == '四川' ){  
window.location.href='https://www.hhtjim.com';  
}  
</script>  

说明:

第5行填写需要屏蔽的省份,这里就解决了上面不能屏蔽省份的弊端。

自己完全可以DIY,如果需要屏蔽中国地区

第5行改为if( t.country == '中国' ){

 

屏蔽来自联通的IP

第5行改为if( t.isp == '联通' ){

wordpress中ZeroClipboard实现js+flash跨浏览器剪切板复制粘贴

作者:matrix 发布时间:2013 年 9 月 16 日 分类:Wordpress 零零星星

用ZeroClipboard跨浏览器实现复制到剪切板,兼容ie、chrome、firefox等等支持flash的浏览器。

图片4869-wordpress中ZeroClipboard实现js+flash跨浏览器剪切板复制粘贴

ZeroClipboard以前在google代码的项目404,发现个神似ZeroClipboard的zClip 项目:http://www.steamdev.com/zclip/

其余项目:可以参考http://zeroclipboard.org/

网上关于ZeroClipboard的有很多,有些不能用 看着也杂~

下面记录自用ZeroClipboard的代码。点击查看最新版本的简单设置

ZeroClipboard version: "1.0.7"

js和swf下载:
http://www.400gb.com/file/28619600
http://pan.baidu.com/share/link?shareid=3611655227&uk=3238236832

步骤:

1.修改压缩包中zpCOPY.js的第九行:

    moviePath: 'zpCOPY.swf', // URL to movie

确保zpCOPY.swf路径的正确,建议使用绝对地址(形如https://www.hhtjim.com/zpCOPY.swf)。
2.在需要调用复制的页面加入js代码:

<script type="text/javascript" src="https://www.hhtjim.com/zpCOPY.js"></script>
<script type="text/javascript">
var clip = null;
function $(id) { return document.getElementById(id); }
function init() {
clip = new ZeroClipboard.Client();
clip.setHandCursor(true);
clip.setText($('text').value);
clip.glue('anniu');
clip.addEventListener( "complete", function(){
    alert("复制成功!");
});
clip.addEventListener( "load", function(client) {
    client.movie.title="复制本文固定链接";
});
}
</script>

说明:

第1行的js地址可自定义

第8、9行的text、anniu为第3步代码中对应的id值

第10、11行是复制后的弹窗提示。

3.同上,放在那页面,适当位置添加:

<body onLoad="init()"></body>
<textarea style="display:none" id="text" ><?php the_permalink() ?></textarea>
     <a id="anniu" href='javascript:void(0);' title="复制本文链接">+复制链接</a>

说明:

第1行的onLoad="init()"为打开页面即加载init函数。缺少此行会导致加载flash失败。

第2行为需要复制的文本内容。这里的复制的内容是<textarea里的<?php the_permalink() ?>返回的WordPress文章网址。

经测试无法复制其他标签的文字,只有<textarea标签里的可用。由于文本框有点占位置,所以做了隐藏style="display:none"。

第3行为点击复制的那个按钮。

4.之后就成功了。

经本地测试chrome 版本 28.0.1500.95 m、ie10、firefox 23.0.1 复制成功!

本地测试于NGRO主题  💡

图片4870-wordpress中ZeroClipboard实现js+flash跨浏览器剪切板复制粘贴

弹窗提示

图片4871-wordpress中ZeroClipboard实现js+flash跨浏览器剪切板复制粘贴

参考:http://www.myext.cn/webkf/27383.html

http://keleyi.com/a/bjac/3wjq3xm2.htm

zclip DEMO:http://www.steamdev.com/zclip/

 


最新的v1.1.1版本  更简单

需要调用JQ库和zclip.min.js:

<script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="http://file.icycat.com/view/js/jquery.zclip.min.js"></script>

然后是复制的按钮和文本代码:

<a type="button" id="anniu" class="btn" > 复制 </a>
<a style="display:none" id="wenben"> 复制:https://www.hhtjim.com </a>
<script type="text/javascript">
$(document).ready(function(){$("#anniu").zclip({path:"http://file.icycat.com/view/js/ZeroClipboard.swf",copy:$("#wenben").text(),afterCopy:function(){$(this).css("color","#777");$(this).text("复制成功")}})});
</script>

说明:第1行 复制按钮为 id="anniu"

第2行 复制的文本是 id="wenben"的内容

3-4行 加载配置的swf文件路径,复制按钮、复制的文本ID以及复制成功后变成“复制成功”的样式。

代码参考来自:http://file.icycat.com/

完善lazyload懒加载图片渐显特效

作者:matrix 发布时间:2013 年 9 月 3 日 分类:Wordpress 兼容并蓄

图片时载入的渐显特效JQuery 中有提到lazyload,可以加速WordPress站点的页面载入速度。只是以前的有些偏移这里稍微更新一下。

JQuery

官网:http://www.appelsiini.net/projects/jeditable

github:https://github.com/tuupola/jquery_jeditable

多图demo:http://www.appelsiini.net/projects/lazyload/enabled_gazillion.html

预加载图片和lazyload v1.8.5下载:

http://www.400gb.com/file/29074139

http://pan.baidu.com/share/link?shareid=2497435386&uk=3238236832

步骤:

1.header中加载JQ库 这里使用1.7.2版本的没问题。若已经加载JQ库不必重复加载。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">

2.紧接着加载压缩包里的jquery.lazyload.min.js。依然还是主题的header中。(示例,放入主题目录内的/js/文件夹)

<script src="<?php bloginfo('stylesheet_directory');?>/js/jquery.lazyload.min.js" charset="utf-8"></script>

3.再添加js代码,还是紧接着放置。

<script type="text/javascript" charset="utf-8">  
jQuery(document).ready(  
function($){  
$("img").lazyload({  

     effect      : "fadeIn" //加载图片使用的效果(淡入)  

});  
});  
  </script> 

说明:第4行的img为需要预加载的地方。这里是所有img标签。

4.还再主题的header.php中添加

<?PHP ob_start();?>  

说明:使用ob_start()函数自动在缓冲区处理需要最终加载的图片标签格式

5.在主题footer.php适当位置处添加php代码.可以是</body>之前,也可以是最后一行。

 <?php  

//图片延缓加载相关处理,替换src为data-original,并添加占位符  
$echo = ob_get_contents(); //获取缓冲区内容  
ob_clean(); //清楚缓冲区内容,不输出到页面  
$placeholder = "grey.gif"; //占位符图片  
$preg = "/<img (.*)src(.*) \/>/i"; //匹配图片正则  
$replaced = '<img \\1src="'.$placeholder.'" data-original\\2 />';  
print preg_replace($preg, $replaced, $echo); //重新写入的缓冲区  
ob_end_flush(); //将缓冲区输入到页面,并关闭缓存区  
?>  

说明:注意第6行中的grey.gif为:预加载的图片名称grey.gif,预加载的图片路径:WordPress程序根目录。当然这里也可以使用绝对路径。

压缩包内还有白色的white.gif和透明的transparent.gif都是预加载图片,可自定义跟换。

参考:http://dl.epinv.com/post/304.html

http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/

http://www.oschina.net/code/snippet_111193_3306

http://www.173it.cn/view-5577-1.html

添加虾米音乐外链-用php接口获取虾米音乐外链地址

作者:matrix 发布时间:2013 年 9 月 2 日 分类:零零星星

转换地址:http://link.hhtjim.com

虾米音乐外链界面

 

外链接口已经修改,请到link.hhtjim.com转换)

接口地址:https://www.hhtjim.com/xiami.php?u=虾米网音乐地址

虾米网音乐地址例如:http://www.xiami.com/song/1772146363?spm=a1z1s.6659513.0.0.eu3WwL

或者http://www.xiami.com/song/1772146363放到接口地址上都可以调用自动下载。

用过上次百度网盘外链应用再升级的模板后觉得js的就是漂亮,再借着 Liang's 源码,拿着.htaccess伪静态实现外链地址静态化的实践成果搞定起来的确没那么大的障碍了。

记录过程:

一.修改php源码,添加取得虾米网音乐地址的id值,也就是下面代码的 变量$mp3_id


<?php /*取得song/后面的音乐ID:$MUsicID 正确链接例如:http://www.xiami.com/song/1772146363?spm=a1z1s.6659513.0.0.eu3WwL 若链接这样http://www.xiami.com/song/play?ids=/song/playlist/id/175153022/object_name/default/object_id/0 则需要 $aa = explode('/',$getturl); $mp3_id = $aa[8]; //第8个数组 */ isset($_GET['u']); $quurl = $_GET['u']; $getturl = $quurl; $aa = explode('/',$getturl); $mp3_id = $aa[4];

代码说明:取得网址的U参数(也就是那虾米的音乐网址)的值后再以“/”分割字符串,得到第4个数组。下面会需要网址跳转,尾巴上添加header("Location: $url");

笔记:

示例地址:http://www.xiami.com/song/1772146363?spm=a1z1s.6659513.0.0.eu3WwL  以“/”分割字符串

第一数组:http:/ (像是吧)

第二数组:www.xiami.com

第三:song

第四:1772146363?spm=a1z1s.6659513.0.0.eu3WwL

奇怪的是将带有?spm=a1z1s.6659513.0.0.eu3WwL 的音乐id值带入到获取音乐id的php中竟然正常返回外链地址。这里只带入音乐id也是正确的。

explode()函数参考:http://www.w3school.com.cn/php/func_string_explode.asp

二.想的是由我这www.hhtjim.com的链接跳转到虾米的直链,这就需要添加伪静态规则。

RewriteRule ^xiami/([0-9]+)\.mp3?$ /xiami.php?u=http://www.xiami.com/song/$1 [L]  

说明:

http:// w w w . hhtjim.com/xiami.php?u=http://www.xiami.com/song/1770832884

===>跳转到

http://w w w . hhtjim.com/xiami/1770832884.mp3

三.之后再修改 虾米音乐外链 | HHTJim.Com Web App 就可行啦! 哈哈。

这个模板的功能是用js写的。部分js代码:

  <script type="text/javascript">
        function getNewLink() {
            var inputUrl = document.getElementById("inputUrl");
            var file_value = "";
            var file_type = document.getElementsByName("file_type");
            var hostname = "http://" + "www.hhtjim.com" + "/xiami/";//window.location.hostname为本地url.可替换掉www.hhtjim.com
            for (var i = 0; i < file_type.length; i++) {
                if (file_type[i].checked) {
                    file_value = file_type[i].value;
                    break;
                }
            };
            var file_other = document.getElementById("file_other");
            file_other_text = document.getElementById("file_other_text");
            var outputUrl = document.getElementById("outputUrl");
        var abc = inputUrl.value.substring(inputUrl.value.indexOf('g/') + 2);
     //  var abc = inputUrl.value.substring(inputUrl.value.indexOf('g/') + 2 ,inputUrl.value.indexOf('?spm') );
      // var abc = inputUrl.value.substring(inputUrl.value.indexOf('id/') + 3 ,inputUrl.value.indexOf('/ob') );
  // indexOf():http://www.w3school.com.cn/js/jsref_indexOf.asp
  //replace():替换用 http://www.w3school.com.cn/js/jsref_replace.asp
  //substring():http://www.w3school.com.cn/js/jsref_substring.asp
// test():http://www.w3school.com.cn/js/jsref_test_regexp.asp
//var reg = /^\d+\/xiami\/+\d+$/;//注意\后面的/
var reg = /^([0-9]+)+$/;
            if (!reg.test(abc)) {
                alert("链接错误,请核对尺码后入座!!!再点击获取~");
                inputUrl.focus();
                return false;
            }
            if (file_value == 'other') {
                  outputUrl.value = hostname + abc + "." + "mp3";
            } else {
                outputUrl.value = hostname + abc + "." + "mp3";
            }
        }
    </script>

又要用到js,再笔记下。

var abc:申明变量abc

indexOf()确定某个字符首次出现的位置,函数参考:http://www.w3school.com.cn/js/jsref_indexOf.asp

replace()替换作用,参考: http://www.w3school.com.cn/js/jsref_replace.asp

substring()根据indexOf()确定某个字符首次出现的位置来提取字符串,参考:http://www.w3school.com.cn/js/jsref_substring.asp

test()比较字符串,参考:http://www.w3school.com.cn/js/jsref_test_regexp.asp

还有就是正则表达式,这里用的/^([0-9]+)+$/来表示全数字的音乐id。

目前虾米音乐外链 | HHTJim.Com Web App支持3种虾米的url来转换,都是歌曲单文件,其实最终只是获得那个id,都可以自己的手动改的。

1.例如:http://www.xiami.com/song/1819190

2.例如:http://www.xiami.com/song/1819190?spm=a1z1s.6659513.0.0.BMIFmS

3.例如:http://www.xiami.com/song/play?ids=/song/playlist/id/1819190/object_name/default/object_id/0

其余的额也没什么可记。

Liang  在http://www.ifoouu.com/note/47.html贴出的源码正是太漂亮了,给出音乐id就可以得到外链地址。再次 感谢!


10-3添加更精简的php获取方法:

 

<?php
    function curl_get($url,$post=false,$carry_ua=true){
        $ch=curl_init($url);
        if($carry_ua){
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16'));
        }
        if ($post) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $get_url = curl_exec($ch);
        curl_close($ch);
        return $get_url;
    }
     //echo curl_get($st_url);
                 $st_url='http://www.xiami.com/song/1772222342';
            $st_con=curl_get($st_url);
            //$st_rex="/src='(.*?)'>Your browser/";
            $st_rex="/\"url\":\"(.*?)\",\"/";
            preg_match($st_rex, $st_con,$st_matchs);
            $st_rurl=$st_matchs[1];
            $st_head='m'.rand(0,9);
            $st_rurl=str_replace('mg', $st_head, $st_rurl);
            $real_file_url = $st_rurl;
            $real_file_url = str_replace('\\','',$real_file_url);//将\删除
            echo $real_file_url;
?>

说明:其中16行的URL地址为虾米网的音乐链接

代码来自LIANG的http://www.ifoouu.com/note/68.html中提取。

curl的确好啊


14-3-16 添加官方虾米接口:

例:http://www.xiami.com/app/iphone/song/id/1772222342
打开后可以看到:

{"song_id":"1772222342","default_resource_id":"10855342","length":"250","category":null,"listen_file":"\/aliyunos\/874\/117874\/1680443259\/1772222342_10855342_l.mp3","album_id":"1680443259","name":"\u4f60\u7684\u6211\u7684","artist_name":"\u6881\u535a","artist_id":"117874","title_url":"nidewode","recommends":"331","singers":"\u6881\u535a","title":"\u4f60\u7684\u6211\u7684","album_logo":"http:\/\/img.xiami.net\/images\/album\/img74\/117874\/16804432591380527751_2.png","location":"http:\/\/m5.file.xiami.com\/874\/117874\/1680443259\/1772222342_10855342_l.mp3?auth_key=d94ae2db825f166c3c76c901ae79343c-1395014400-0-null","low_size":"10023705","file_size":null,"low_hash":"d272d5c12629274af5ed42d71d51fb55","whole_hash":"d272d5c12629274af5ed42d71d51fb55","content_hash":"d272d5c12629274af5ed42d71d51fb55","content_size":"10023705","lock_lrc":"2","lyric":"http:\/\/img.xiami.net\/lyric\/42\/1772222342_13804511043990.lrc","year_play":"0","grade":"-1","album_url":"http:\/\/www.xiami.com\/app\/iphone\/albuminfo?id=1680443259&amp;uid=","artist_url":"http:\/\/www.xiami.com\/app\/iphone\/artistinfo?id=117874&amp;uid=","isad":"0"}

里面的location即mp3下载地址。

14-07-19 添加虾米歌曲链接地址破解算法

php代码:

$id = '1772222342';//虾米音乐ID
$DataUrl = 'http://www.xiami.com/widget/xml-single/uid/0/sid/'.$id;//xml数据
$xml_array=simplexml_load_file($DataUrl); //将XML中的数据,读取到数组对象中
foreach($xml_array as $tmp){
    $location =  $tmp->location;
}
echo de_Location($location);
/*
    虾米下载地址解码函数@de_Location
    github项目:https://github.com/Flowerowl/xiami/blob/master/xiami.php
*/
function de_Location($location){
        $loc_2 = (int)substr($location, 0, 1);
        $loc_3 = substr($location, 1);
        $loc_4 = floor(strlen($loc_3) / $loc_2);
        $loc_5 = strlen($loc_3) % $loc_2;
        $loc_6 = array();
        $loc_7 = 0;
        $loc_8 = '';
        $loc_9 = '';
        $loc_10 = '';
        while ($loc_7 < $loc_5){
            $loc_6[$loc_7] = substr($loc_3, ($loc_4+1)*$loc_7, $loc_4+1);
            $loc_7++;
        }
        $loc_7 = $loc_5;
        while($loc_7 < $loc_2){
            $loc_6[$loc_7] = substr($loc_3, $loc_4 * ($loc_7 - $loc_5) + ($loc_4 + 1) * $loc_5, $loc_4);
            $loc_7++;
        }
        $loc_7 = 0;
        while ($loc_7 < strlen($loc_6[0])){
            $loc_10 = 0;
            while ($loc_10 < count($loc_6)){
                $loc_8 .= isset($loc_6[$loc_10][$loc_7]) ? $loc_6[$loc_10][$loc_7] : null;
                $loc_10++;
            }
            $loc_7++;
        }
        $loc_9 = str_replace('^', 0, urldecode($loc_8));
        return $loc_9;
    }

github:https://github.com/Flowerowl/xiami

参考:http://www.myhack58.com/Article/html/3/92/2013/38705.htm

MP3 TEST :

http: / / link.hhtjim.com/xiami/1772355885.mp3