我正在使用Spree作为我正在构建的网站的电子商务解决方案,需要自定义布局,deface选项很棒,但我已经有了我想要使用的其他应用程序的布局,所以那里在我的网站的主要部分和商店之间没有变化。
通过查看spree源代码,我已经能够将大部分基础结构转移到我自己的新模板上,但是我遇到了一个绊脚石。在搜索框上方的默认模板中有登录/帐户和注销链接,这些链接基于一些挖掘代码,在“标题”部分呈现,其本身呈现导航条,其中搜索栏部分呈现,主导航栏它显示了家庭和购物车的链接,但没有提到用户进/出的东西。注释掉标题部分的渲染会删除所有这些东西,但也会删除用户信息,据我所知,在任何地方都没有提到...
有没有人知道在默认的狂欢布局中它实现此代码以显示登录/注销帐户链接的位置,我可以通过它的基本链接相对简单地做到这一点但是宁愿了解Spree如何实现它本身而我正在尝试保持我的布局与核心代码的任何更新兼容。
非常感谢任何帮助,谢谢!
编辑:为清晰起见
答案 0 :(得分: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 %>
答案 1 :(得分:0)
在RDR主题中找到解释此问题的代码,仍然不确定为什么它没有显示在默认的狂欢代码中,可能是数据钩子?
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 %>
答案 2 :(得分:0)
使用
覆盖菜单<% 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 %>
答案 3 :(得分:0)
从 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>