论坛首页 编程语言技术论坛

让你的相册炫起来

浏览 2491 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-22  
首先,请先浏览http://www.piclens.com/,安装Firefox或IE的插件

默认已经支持了很多的网站。


怎么使用?
http://www.piclens.com/site/firefox/tutorial_pl_ff.php

看完之后也许你也会和我有一样的想法,我能不能给自己的网站上加上呢? 我们每个会员都有自己的 JavaEye的相册的?

很幸运,目前PicLens已经提供相应的支持。
http://piclens.com/lite/webmasterguide.php

文档已经很详细了,这个没啥好说的,这也不是我们今天要说的重点。我们的目的是新建个插件,让其他的用户不需要再过问这些繁琐的东西,直接拿来用就行了。


=============================不想看过程,直接跳到下个分割线=================================

新建插件
ruby script/generate plugin pic_lens_lite_helper


这里主要的就是图片的rss,参照piclens上的文档,uuid和link是必须的,这个难不倒我们,一个builder而已。

module PicLensLiteHelper
    module ActionController
        def piclens_rss(photos=[], options={})
            xml = Builder::XmlMarkup.new(:indent =>2)
            xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8", :standalone=>"yes"
            xml.rss 'version'=>'2.0', 'xmlns:media' => 'http://search.yahoo.com/mrss' do
                xml.channel do
                    xml.title  options[:title]||''
                    xml.link  options[:link]||''
                    xml.description  options[:description]||''
                    photos.each do |photo|
                        xml.item do
                            xml.title  photo.title if photo.respond_to?(:title)
                            xml.link   photo.link #必须的参数
                            xml.guid   UUID.random_create.to_s
                            xml.media  :thumbnail, :url=>photo.thumbnail  if photo.respond_to?(:thumbnail)
                            xml.media  :content,   :url=>photo.url  if photo.respond_to?(:url)
                        end
                    end

                    yield xml if block_given?
                end
            end
        end

        def render_piclens_rss_for(photos=[], options={})
            render :text=> piclens_rss(photos, options), :content_type => Mime::XML
        end
    end

    module ActionView
        #一个helper而已,代码有点丑,呵呵
        def piclens_includes(url, options={})
            if options[:local]
                %Q{<link rel="alternate" href="#{url}" type="application/rss+xml" title="" id="gallery"/>
                  <script type="text/javascript" src="/javascripts/piclens.js"/>}
            else
                %Q{<link rel="alternate" href="#{url}" type="application/rss+xml" title="" id="gallery"/>
                <script type="text/javascript" src="http://lite.piclens.com/current/piclens.js"/>}
            end
        end
    end
end


include 这两个方法
ActionView::Base.send :include, PicLensLiteHelper::ActionView
ActionController::Base.send :include, PicLensLiteHelper::ActionController


=============================不想看演示,直接跳到下个分割线=================================
使用之。。。。

rails pic_lens_lite_demo


安装插件
ruby script/plugin install http://martinx.googlecode.com/svn/trunk/plugins/pic_lens_lite_helper


新建model:photo
ruby script/generate scaffold photo title:string link:string thumbnail:string url:string



添加 PiclensLite js和 所照片的 rss feed
 <%= piclens_includes formatted_photos_path(:rss)%>


同时我们还提供了一个本地js,已防止用户无法连接piclens.com的网站。执行
rake picslen:install

将js拷贝至public/javascripts目录下。

将上面的代码修改成
<%= piclens_includes formatted_photos_path(:rss), :local=>true %>


好了,最后一步生成piclens需要的rss
        @photos = Photo.find(:all)

        respond_to do |format|
            format.html # index.html.erb
            format.xml  { render :xml => @photos }
            format.rss  { render_piclens_rss_for @photos}
        end


如何基于已有的model上使用呢
最简单,偷懒的方法:定义一个link 函数即可
Someodle <AR
   def link
      "" #这里给出图片的具体路径即可,譬如"/static/images/#{self.image}" etc.
   end
end


更多功能
def thumbnail;end #缩微图
def title;end     #图片标题 


===============================================================================
完整的文件请下载附件

Env:
  rails 2.0
  sqlite3
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics