利用API制作相册展页[JQuery版]

之前因为图片大,数据解析多次的原因,我的API相册展示页访问起来表示鸭梨巨大,所以我就央求了老四同学帮我写了这么一个JQ版本的。【没办法,我是JS盲o(╯□╰)o】使用之后访问起来果然什么鸭梨都木有啊!在此非常感谢老四同学在百忙之中帮我做了这么个小东西。

废话不多说,先放上相册预览地址:预览地址一 | 预览地址二

继续贴上代码【你也可以在这里找到这段代码】

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml";><head>

 
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

        <title></title>         

<style>
body {
        background-color:#E9E9E9;
        color:#333333;
        font-family:'Microsoft YaHei','Lucida handwriting',Arial,Helvetica,sans-serif;
        font-size:10pt;
        margin:0;
        padding:0;
        text-shadow: 0px 0px 1px #999;
        -webkit-text-size-adjust:none;
}

a,a:hover {
        color:#333333;
        text-decoration:none;
}


.photo, .album {
        display:inline-block;
        margin:5px;
        padding:10px 0;
        float:left;
    position: relative;
        text-align:center;
    background-color: #fff;
    border: 1px solid #eee;
        -webkit-box-shadow:2px 2px 3px rgba(135,139,144,0.4);
        -moz-box-shadow:2px 2px 3px rgba(135,139,144,0.4);
        box-shadow:2px 2px 3px rgba(135,139,144,0.4);
}

.photo:before, album:before {
    -webkit-transform: skew(-25deg) rotate(-6deg);
    -moz-transform: skew(-25deg) rotate(-6deg);
    transform: skew(-25deg) rotate(-6deg);
    left: 27px;
    width: 70%;
    height: 35%;
    content: ' ';
    -webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    position: absolute;
    bottom: 7px;
    z-index: -1;
}

.album img {
        width:120px;
}

.img_title {
        margin:auto;
        display:block;
        width:160px;
        height:17px;
        overflow: hidden;
}

.img_date {
        margin:2px auto 0 auto;
        display:block;
        width:160px;
        height:17px;
        overflow: hidden;
        color:#888;
}

#back {
        display:inline-block;
        margin:5px;
        padding:10px;
        float:left;
    position: relative;
        text-align:center;
    background-color: #fff;
    border: 1px solid #eee;
        -webkit-box-shadow:2px 2px 3px rgba(135,139,144,0.4);
        -moz-box-shadow:2px 2px 3px rgba(135,139,144,0.4);
        box-shadow:2px 2px 3px rgba(135,139,144,0.4);
        display: none;
}

#back:hover {
    background-color: #ccc;
}

</style>
        
</head><body> 
        


                <div id="images" style="background-position: 0px 0px;"> 
                        BACK
                </div>

                
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js";></script>
        <script type="text/javascript">
var albumURL = 'http://album.imnerd.org/';

$(function(){



        $.getJSON(albumURL + 'api.php?method=get.gallery.name&callback=?', function(data){
                $.each(data, function(i,item){

                        $.getJSON(albumURL + 'api.php?method=get.gallery.info&name=' + item + '&callback=?', function(data){
                                                $('').attr('href', 'javascript:openAlbum("' + data.name + '")').attr('title', data.description)
                                                        .append('<img/>').children().eq(0)
                                                        //.attr("src", albumURL + data.path + data.previewimage)
                                                        .attr("src", albumURL + data.path + 'tn_' + data.previewimage.substr(0,data.previewimage.length-3) + 'jpg')
                                                        //.css('width', data.maxThumbWidth)
                                                        .parent()
                                                        .append('<span/>').children().eq(1).addClass('img_title').html(data.title).parent()
                                                        .append('<span/>').children().eq(2).addClass('img_title').html('共 ' + data.fileCount + ' 张').parent()
                                                        .append('<span/>').children().eq(3).addClass('img_date').html(getLocalTime(data.mTime)).parent()
                                                        .appendTo('#images');
                        });
                });
        });

        $('#back').click(function(){
                //$('#images').children('a:visible').hide();
                $('.photo').remove();
                //$('#images').children('a:hidden').fadeIn();
                $('.album').show();
                $(this).hide();
        });

});     

        function openAlbum(albumName) {
                //$('#images').children('a').fadeOut();
                $('.album').hide();
                $('#back').show();
                $.getJSON(albumURL + 'api.php?method=get.photos&name=' + albumName + '&callback=?', function(data){
                        $.each(data, function(i,item){
                                $("").attr('href', item.url).attr('title', item.description)
                                        .append('<img/>').children().attr("src", item.thumbnail).parent()
                                        .append('<span/>').children().eq(1).addClass('img_title').html(item.title).parent()
                                        .appendTo('#images');
                        });
                });
        }
        
        function getLocalTime(nS) {
                return new Date(parseInt(nS) * 1000).toLocaleString();
        }
        </script>


</body>
</html>

友情提示:本代码只是一个实例代码,请大家根据自己的需要做好相关的修改。

利用API制作相册展页


<p>上一篇提到了本人为ImageVue写的一个API,这一篇将给大家提供一个实例,使大家能够更明白的了解和使用这个API.</p>

<p>将下面的内容保存成PHP文件后上传到服务器访问即可,只是简单的做了照片的读取,没有做过多的修饰。有心情的可以根据API做个分页以及JS和CSS方面的修饰。预览地址:点击这里 </p>


  ul {
    margin:0 auto;
  } 
  li {
    display:inline;
  }
</style>
<?php
  $api = 'http://album.imnerd.org/api.php?method=';  //注意大家要将这里的网址改成你自己的相册网址哦~  
  echo '<ul>';
  switch($_GET['page']) {
    case 'photo':
      $photos = file_get_contents($api . 'get.photos&name=' . $_GET['album']);
      $photos = json_decode($photos, true);
      foreach($photos as $item) {
        echo '<li>';
        echo '';
        echo '</li>';
      }
    break;
    default:
          $gallery_name = file_get_contents($api . 'get.gallery.name');
          $gallery_name = json_decode($gallery_name, true);
          foreach($gallery_name as $item) {
            $gallery_info = file_get_contents($api . 'get.gallery.info&name=' . $item);
            $gallery_info = json_decode($gallery_info, true);
            $preview = file_get_contents($api . 'get.photo&album=' . $item . '&photo=' . $gallery_info['previewimage']);
            $preview = json_decode($preview, true); 
        if($preview['thumbnail'] != "") {
                echo '<li>';
                echo '<ol style="display:inline;">';
                echo '<li></li>';
          echo '<li><div id="album"><span class="tilte">' . $gallery_info['title'] . '</span><span class="count">(' . $gallery_info['fileCount'] . ')</span><span class="discription">' . $gallery_info['description'] . '</span></div></li>';
                echo '</ol>';
                echo '</li>';
              }
      }
    break;
    }
  echo '</ul>';

<p>大家还可以做成WP或者Typecho的博客页面,如果不懂得制作的,可以自行谷歌一下,很简单的!</p>

ImageVue API

<p>

这两天突发奇想想要给imagevue做一个API接口出来,这样站外引用什么的就好做多了。简单的应用比如在博客中插入相册或者最近上传照片的RSS挂件什么的都变得轻而易举了。开始想用树形文件夹的遍历来获取数据的,然后发现imagevue有将所有的信息都存储在xml文件里,犹如发现新大陆啊。API返回的数据要么是json要么是字符串,没有将其整理成标准的XML格式,原因很简单,我对XML的格式其实也不太熟o(╯□╰)o

</p>
<p>

我在Google Code上创建了这个项目,需要的同学可以去参观一下:<a href="http://code.google.com/p/imagevue-api/" target="_blank">点击这里</a> 

</p>
<p>

API文件下载地址:<a href="http://imagevue-api.googlecode.com/files/api.php" target="_blank">下载一</a>&nbsp;

</p>
<p>

API参数说明:<a href="http://code.google.com/p/imagevue-api/wiki/API" target="_blank">点击这里</a> 

</p>
<p>

若不能下载的可以保存下面的源码为api.php上传到相册根目录即可使用

</p>
<p>

最后如果有什么想法或者建议请一定要联系我!谢谢

</p>
<p>

相关文章:<a href="http://imnerd.org/photo-show-by-api.html" target="_blank">利用API制作相册展页</a>  | <a href="http://imnerd.org/imagevue-api-example-for-jquery.html" target="_blank">利用API制作相册展页[JQuery版]</a>

</p>

站外引用微博客最新消息

<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 首先要声明的是,这个方法不是我原创的啦!感谢Jerry的倾力支持!这里只是对其进行论述介绍而已。还有就是,我已经到家啦!但是由于这两天上网不方便,所以现在才更新,以后不会啦!</span></span></span>

<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 这里需要用到两个文件,请大家到这里下载:传送门</span></span></span>

<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 下载下来后解压出两个文件,分别为api.php和read.php。首先我们要将api.php上传到PageCookery安装的根目录,也就是和config.php同级的目录。然后是修改read.php文件的第8行:</span></span></span>
<div class="source" style="font-family: &amp;amp;amp; color: #000000; background-color: #c3d9ff;"><span style="color: #228b22;">1 </span> <span style="color: #000000;">define(P2_PATH,'http://imnerd.org/mblog/');</span></div>
<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 将“http://imnerd.org/mblog”修改为你的微博客地址之后保存read.php(注意不要忘记最后的“/”)。然后将read.php上传到你要调用你微博客最新消息的那个文件的同级目录(比如你想要在WordPress首页调用自己微博客最新日志的话,就将read.php上传到WP的根目录中,即与首页文件index.php同级)。然后在你想要调用最新消息的文件中添加如下代码:</span></span></span>
<div class="source" style="font-family: &amp;amp;amp; color: #000000; background-color: #c3d9ff;"><span style="color: #228b22;">1</span> <span style="color: #1e889b;"><?php</span>
<span style="color: #228b22;">2</span> <span style="color: #8b008b; font-weight: bold;">require_once</span>(<span style="color: #cd5555;">"read.php"</span>);
<span style="color: #228b22;">3</span> <span style="color: #8b008b; font-weight: bold;">echo</span> <span style="color: #000000;">readit</span>();
<span style="color: #228b22;">4</span> <span style="color: #1e889b;">?></span></div>
<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 当然,如果你的read.php上传的地址不是跟调用文件同级的话,这里的read.php就要改成相应的相对路径了。完成这些,你就可以在微博客外引用你的最新消息了。如果你想在WordPress的边栏引用的话需要安装能让sidebar运行PHP语言的小工具,具体可以上WP论坛搜索一下。</span></span></span>

<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 如果你想要调用多个微博客的最新日志的话,你需要进行如下的设置:</span></span></span>

<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 首先,你要确定你想要调用最新日志的微博客的根目录都有api.php文件存在;然后我们要试着修改read.php文件,首先你要为你要获取最新日志的微博客定义地址,将第8行复制并修改,这里以我的微博客为例:</span></span></span>
<div class="source" style="font-family: &amp;amp;amp; color: #000000; background-color: #c3d9ff;"><span style="color: #aaaaaa; font-style: italic;">1</span> <span style="color: #000000;">define($P2_PATH[],'http://imnerd.org/mblog/');</span>
<span style="color: #aaaaaa; font-style: italic;">2</span> <span style="color: #000000;">define($P2_PATH[],'http://lizheming.cn/');</span>
<span style="color: #aaaaaa; font-style: italic;">3</span> <span style="color: #000000;">define($P2_PATH[],'http://.../');</span>
<span style="color: #aaaaaa; font-style: italic;">4</span> <span style="color: #000000;">define($P2_PATH[],'http://.../');</span></div>
<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> P2_PATH_1这个变量可以自己定义,但是之后填写的要与之对应,后面单引号之间的网址则填写你想要引用最新消息的微博客的地址,你想要调用多少个微博客的最新消息则需要定义多少个变量。然后要定义读取函数,将29行复制并修改,这里还是以我的微博客为例:</span></span></span>
<div class="source" style="font-family: &amp;amp;amp; color: #000000; background-color: #c3d9ff;"><span style="color: #aaaaaa; font-style: italic;">1</span> <span style="color: #000000;">function readit($host)</span>
<span style="color: #aaaaaa; font-style: italic;">2</span> <span style="color: #000000;">{</span>
<span style="color: #aaaaaa; font-style: italic;">3</span> <span style="color: #000000;">$request = $host . ’api.php’;</span>
<span style="color: #aaaaaa; font-style: italic;">4</span> <span style="color: #000000;">$result = pcurl( $request );</span>
<span style="color: #f810b0;">5</span> <span style="color: #000000;">if ($result) return $result;</span>
<span style="color: #aaaaaa; font-style: italic;">6</span> <span style="color: #000000;">else return false;</span>
<span style="color: #aaaaaa; font-style: italic;">7</span> <span style="color: #000000;">}</span></div>
<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 如刚才所述,P2_PATH_1这些变量的名称必须与之前你定义的变量名称对应,然后是函数名称readit()也可以随自己定义,但是不能重复,而且之后的填写要与之对应。同样还是你要调用多少个微博客的最新日志就要定义多少个读取函数。这些都编辑好之后保存你的read.php文件并上传到你想要调用最新消息的页面的同级目录,并修改想要调用最新消息的页面,增加如下语句:</span></span></span>
<div style="background: none repeat scroll 0% 0% #fdfdfd; color: black;"><span style="text-decoration: underline;">PHP语言</span>: 临时自用代码</div>
<div class="source" style="font-family: &amp;amp;amp; color: #000000; background-color: #c3d9ff;"><span style="color: #aaaaaa; font-style: italic;">1</span> <span style="color: #000000;">foreach ($P2_PATH AS $key => $host)</span>
<span style="color: #aaaaaa; font-style: italic;">2</span> <span style="color: #000000;">{</span>
<span style="color: #aaaaaa; font-style: italic;">3</span> <span style="color: #000000;">readit($host);</span>
<span style="color: #aaaaaa; font-style: italic;">4</span> <span style="color: #000000;">}</span></div>
<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;"> 这里需要注意的就是readit()调用函数必须与你之间定义的对应才行!好了,保存页面就可以观看到效果了。具体实例可以登录怡红院落首页怡红别院观察。大家可以发挥自己的DIY精神,将自己的调用消息美化一下,那么简单的站外引用插件 for PageCookery 就做好啦!</span></span></span>

<span style="font-family: 微软雅黑;"><span style="font-size: 14px;"><span style="color: #333399;">PS:感谢explon打架本博客为站外引用方案做了更加完美的优化!
</span></span></span>