如何为 rails 应用上的视频生成站点地图?

How to generate sitemap for videos on rails app?

我正在为我的 rails 应用程序使用 sitemap_generator。除了网站上的视频链接外,我能够为所有内容生成站点地图。以下是我的

sitemap.rb

Equipment.find_each do |e|
  add search_equipments_path(e), :changefreq => 'weekly'
 end

 Equipment.find_each do |more|
  add equipment_details_path(more), :changefreq => 'weekly'
 end

 Category.find_each do |c|
  add search_equipments_path(:category_id=>c.id), :changefreq => 'weekly'
 end

 Category.find_each do |sub|
  add search_equipments_path(:sub_category=>sub.id), :changefreq => 'weekly'
 end

 Service.find_each do |s|
  add service_details_path(s), :changefreq => 'weekly'
 end

 WantedEquipment.find_each do |f|
  add wanted_equipments_path(f), :changefreq => 'weekly'
 end

 StaticPage.find_each do |t|
  add benefits_for_buyers_path(t), :changefreq => 'weekly'
 end

 StaticPage.find_each do |sel|
  add benefits_for_sellers_path(sel), :changefreq=> 'weekly'
 end

 StaticPage.find_each do |ser|
  add benefits_for_service_providers_path(ser), :changefreq=> 'weekly'
 end

 add '/about-us'
 add '/terms-and-conditions'
 add '/pricing-plans'
 add '/how-it-work'

这是 gem 页面上用于生成视频站点地图的文档中给出的内容:

SitemapGenerator::Sitemap.create do
  add('/index.html', :video => {
    :thumbnail_loc => 'http://www.example.com/video1_thumbnail.png',
    :title => 'Title',
    :description => 'Description',
    :content_loc => 'http://www.example.com/cool_video.mpg',
    :tags => %w[one two three],
    :category => 'Category'
  })
end

我无法理解如何动态传递这些值。

您可以使用此示例,但将其更改为您的型号名称:

 SitemapGenerator::Sitemap.create do
  add '/contact_us', 'changefreq': 'weekly'
  Article.find_each do |article|
    add article_path(article), lastmod: article.updated_at
  end
end

如您所见,他在文章模型上做出了 find_each。所以你可以在你的视频模型上做同样的事情。

如果你想在dynamic data的基础上生成视频内容,试试这个:

Model.all.each do |e|
      video = VideoInfo.new(e.video_url)
      add("https://example.com/views/#{e.slug}", :video => {
        :thumbnail_loc => "#{video.thumbnail_medium}",
        :title => "#{video.title}",
        :description => "#{video.description}",
        :content_loc => "#{e.video_url}",
        :tags => e.slug.split('-'),
        :player_loc => video.embed_url  
        })
end

此处VideoInfo是gem用于获取视频元信息。