【问题标题】:Spree User information大礼包用户信息
【发布时间】:2012-12-27 10:52:11
【问题描述】:

我正在使用 Spree 作为我正在构建的网站的电子商务解决方案,并且需要自定义布局,deface 选项很棒,但我已经有了我想要使用的应用程序其余部分的布局,所以在那里我的网站的主要部分和商店之间没有变化。

查看了 spree 源代码后,我已经能够将大部分基础架构转移到我自己的新模板中,但我遇到了一个绊脚石。在搜索框上方的默认模板中,有登录/帐户和注销链接,这些链接基于对代码的一些挖掘,呈现在“标题”部分中,该部分本身呈现导航栏,该导航栏呈现搜索栏部分,以及主导航栏它显示了指向主页和购物车的链接,但没有提到用户进/出的东西。注释掉标题部分的呈现会删除所有这些内容,但也会删除用户信息,据我所知,在任何地方都没有提到...

有谁知道它在默认 spree 布局中的哪个位置实现了此代码以显示登录/注销帐户链接,我可以通过基本链接相对简单地做到这一点,但宁愿了解 Spree 如何自己实现这一点,我正在尝试使我的布局与核心代码的任何更新兼容。

任何帮助将不胜感激,谢谢!

已编辑:为清楚起见

【问题讨论】:

    标签: html ruby-on-rails ruby ruby-on-rails-3 spree


    【解决方案1】:

    在 Spree 的 3.0.1 版本上以及可能在其他旧版本上,用户功能不是由核心本身处理的。用户由Spree Auth (Devise) Spree 扩展处理。此扩展程序默认包含在新的 Spree 应用程序中。该扩展使用deface override 添加此功能。有趣的是,此覆盖使用的部分不是在扩展本身上,而是在 Spree 前端文件上。如果您希望实现自定义用户模块,我假设使该组件可重用。这是部分的代码:

    <% if spree_current_user %>
      <li><%= link_to Spree.t(:my_account), spree.account_path %></li>
      <li><%= link_to Spree.t(:logout), spree.logout_path %></li>
    <% else %>
      <li id="link-to-login"><%= link_to Spree.t(:login), spree.login_path %></li>
    <% end %>
    

    【讨论】:

      【解决方案2】:

      Spree 2.3.2 开始,同样的事情可以用:

                <h2>Your Account</h2>
                <ul>
                  <% if spree_current_user %>            
                    <li><%= link_to t('My Account'), account_path, :class => "cart" %></li>       
                  <% else %>                
                    <li><%= link_to t('Log In'), login_path, :class => "cart" %></li>
                    <li><%= link_to t('Sign Up'), registration_path, :class => "cart" %></li>
                  <% end %>              
                </ul>
      

      【讨论】:

        【解决方案3】:

        覆盖菜单
        <% if current_user %>
            <%= link_to t(:logout), spree.destroy_user_session_path %>
            <%= link_to t(:my_account), spree.account_path %>
        <% else %>
           <%= link_to t(:login), spree.login_path %>
        <% end %>
        

        【讨论】:

          【解决方案4】:

          在 RDR 主题中找到了解释这一点的代码,但仍然不确定为什么它没有出现在默认的 spree 代码中,可能是数据挂钩?

          RDR 的做法:

          <% if current_user %>
            <%= link_to t('logout'), destroy_user_session_path, :class => "cart" %>
            <%= link_to t('my_account'), account_path, :class => "cart" %>
          <% else %>
            <%= link_to t('log_in'), login_path, :class => "cart" %>
          <% end %>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-06-04
            • 2023-03-23
            • 1970-01-01
            • 2017-04-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多