1

我正在开发一个使用 Spree 的应用程序,我想在 spree 框架内向我的应用程序添加基本上静态的页面。例如,我希望有一个页面使用我已经为 Spree 设计的布局(包括搜索、用户信息等内容),并在 spree 中列出两个不同类别的产品以及指向它们的链接。我尝试了 spree-static-content 扩展,但当前版本似乎与 1.3.1 版本的 spree 有很多错误,因为据我了解它是“静态”的,所以我无法将 ruby​​ 标签等添加到正文内容。

我不确定如何使用 deface 来做到这一点,据我所知,添加页面并将路由添加到不同的控制器意味着我无法使用从 Spree 控制器检索信息的当前布局。我还尝试在 spree 控制器中简单地为页面添加一个新定义,但这也不起作用,这意味着我必须使用控制器文件的静态版本,这会在 Spree 更新时导致问题。

有谁知道如何在现有的 Spree 商店中添加新的页面浏览量?

谢谢!

4

3 回答 3

1

有一个 spreecommerce 扩展spree_static_content用于管理来自管理员的静态页面。

此扩展程序可让您:

  • 添加和管理静态页面,例如“关于”页面。
  • 显示静态页面而不是现有的动态页面,例如主页、产品页面和分类页面。

使用管理选项卡中的“页面”选项,您可以将静态页面添加到您的 Spree 安装中。页面内容可以直接从数据库中提取,可以是单独的布局文件或呈现为部分内容。

在管理选项卡中,使用“新页面”选项创建一个新的静态页面。

title、slug、body 和 meta 字段将在加载时替换它们各自的页面元素。title、slug 和 body 元素都是必填字段。

没有指定布局/部分的正文文本将在从数据库中提取后加载到 spree_application 布局中。

布局和部分渲染

要在没有 spree_application 布局的情况下呈现整个页面,请指定布局文件的相对路径(例如 spree/layouts/layout_file_name)。该文件不会带有下划线前缀,因为它是一个布局,而不是一个部分。

要渲染部分,请在布局文件名中指定路径并选中“将布局渲染为部分”选项。布局区域中指定的路径不会有下划线,但在文件名中是必需的。

还要注意 render_snippet 助手的可用性,它通过它的 slug 找到一个页面并在你的视图中的任何地方呈现原始页面正文。

选项

使用“显示在”复选框来指定是否在页眉、页脚或边栏中显示页面链接。位置设置改变了它们出现的顺序。

最后,使用“可见”复选框切换可见性。如果未选中,则该页面将不可用。

于 2016-11-24T07:54:47.400 回答
0

使用 Deface 覆盖很容易满足您的要求。只需查看默认布局模板spree_application.html.erb并执行 Deface 的替换、插入_,无论是使用就地代码替换/插入,还是在需要时生成特定视图和模型并编写代码来呈现它们。通过这种方式,您可以完全自定义布局,同时保留并使用默认的 Spree 代码。

于 2013-01-15T14:25:14.523 回答
0

一种选择是将 Spree Engine 安装在根目录以外的位置。

Rails.application.routes.draw do

  mount Spree::Core::Engine, at: '/shop'


end

然后,您可以根据需要设置根路由,并使用标准 rails 方式添加其他页面或使用 high_voltage gem 之类的东西。

于 2018-08-01T23:33:01.290 回答