【问题标题】:How to use turbolinks and have meta tags specific to each page for SEO?如何使用 turbolinks 并为 SEO 的每个页面设置特定的元标记?
【发布时间】:2013-08-31 17:57:08
【问题描述】:

问题是如何同时使用 turbolinks 并为每个页面设置特定的元标记?

这里是 application.js:

//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require dashboard
//= require turbolinks

这是应用程序布局视图:

<title><%= yield_or_default(:title) -%></title>
<meta name="description" content="<%= yield_or_default(:meta_desc) -%>">
<meta name="keywords" content="<%= yield_or_default(:meta_keywords) -%>">
<meta name="robots" content="<%= yield_or_default(:robots) -%>">
<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

这是仪表板 CoffeeScript:

jQuery ->
  $("#list_tags").html(list_tags())

list_tags = ->  
  "Title: \"" + $('title').text() + "\"<br />" +
  "Meta Description: \"" + $('meta[name=description]').attr('content') + "\"<br />" +
  "Meta Keywords: \"" + $('meta[name=keywords]').attr('content') + "\"<br />" +
  "Robots: \"" + $('meta[name=robots]').attr('content') + "\""

在应用程序布局的顶部:

<%= link_to "Dashboard", root_path -%>
<%= link_to "Reports", reports_path -%>
etc...

当您在 Dashboard 和 Reports 之间来回点击时,显示的标题标签会按照您的预期随着每次点击而改变(turbolinks 每次都会更新标题),但元标签在您完成整个页面之前不会改变刷新。

如何破坏特定头部元素的 turbolink?

如果我在每个指向具有唯一元信息的页面的链接上添加 data-no-turbolink,我看不出保留 turbolink 有什么好处。

我在 github 上阅读了有关 turbolinks 的问题,其他人提出了这个问题,但我没有看到解决方案?希望我遗漏了一些明显的东西。

【问题讨论】:

    标签: jquery coffeescript ruby-on-rails-4 turbolinks


    【解决方案1】:

    我认为 turbolink 不会对 SEO 产生影响。原因是搜索引擎机器人没有点击启用 javascript 的链接。

    他们创建一个链接列表并单独访问它们以获取页面内容......因此页面搜索引擎机器人将不会在“点击的turbolinks链”中。

    使用您网站的人在浏览您的网站时可能不会使用元描述标签。

    【讨论】:

      【解决方案2】:

      我将回答我自己的问题并将其留在这里,以防有人遇到同样的困惑。

      元标记和其他代码/脚本“破坏 turbolinks”的方法是在

      部分中列出 before turbolinks。

      这是一个 gist 最终为我工作的内容。

      虽然这会呈现带有所需更新的

      部分的页面,但要记住的问题是 DOM 仍将是缓存的内容。

      也就是说,上面的代码是正确的。只是不是我对它的工作方式的期望。

      【讨论】:

      • 但是添加 Google Analytics JS 之后 turbolinks 被加载所以检查typeof Turbolinks !== 'undefined' 是有效的。 gist 已更新。
      • 这对我不起作用。我的 application.js 在元标记下方,但它们仍然没有更新。
      猜你喜欢
      • 2017-05-12
      • 2015-04-23
      • 2016-04-16
      • 1970-01-01
      • 2023-03-15
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      相关资源
      最近更新 更多