jacksleight/statamic-bonus-routes

此包最新版本(0.3.2)没有可用的许可信息。

0.3.2 2024-05-07 12:51 UTC

This package is auto-updated.

Last update: 2024-09-07 13:36:46 UTC


README

附加路由

这个Statamic插件简化了设置基于集合和分类的附加路由的过程,通过为您处理动态挂载和数据检索。这对于以下情况很有用:

  • 在活动集合的条目页面下方添加注册页面
  • 在博客集合的条目页面上方添加基于日期的归档页面
  • 将筛选的新闻集合挂载到网站的各个部分
  • 自定义和挂载分类URL

通过编写自己的自定义路由和控制器,所有这些都成为可能,这个插件只是让这个过程更简单,并为您节省了硬编码URL的麻烦。

安装

您可以在Statamic控制面板的“工具 > 附加组件”部分搜索此插件并点击“安装”,或者从项目根目录运行以下命令

composer require jacksleight/statamic-bonus-routes

入门

您可以使用Route::bonus()方法定义附加路由。这些应添加到您的routes/web.php文件中。此方法接受以下参数

  • 类型 (字符串): 路由类型和处理程序
  • uri (字符串): 路由URI
  • 视图 (字符串): 应渲染的视图名称
  • 数据 (数组,可选): 任何要解析到模板的附加数据

集合路由

支持两种类型的集合路由,显示和索引。显示路由与Statamic的标准路由完全相同,将请求的条目解析到视图模板或404(如果没有找到内容)。索引路由用于列表和一般非条目特定页面。

集合显示路由必须包含Statamic标准路由使用的所有参数。它们可以包含额外的参数,并且它们可以按不同的顺序排列,但它们必须全部包含。

以下是一些示例附加集合路由。

// Add a date based blog archive page
Route::bonus('collection:blog', '{mount}/{year}', 'blog.archive');

// Add a seperate blog post comments page
Route::bonus('collection:blog', '{mount}/{year}/{slug}/comments', 'blog.comments');

// Mount a blog collection to an additional entry
Route::bonus('collection:blog', '{mount:entry-id}/{year}/{slug}', 'blog.show');

分类路由

支持两种类型的分类路由,显示和索引。显示路由与Statamic的标准路由完全相同,将请求的术语解析到视图模板或404(如果没有找到内容)。索引路由用于列表和一般非术语特定页面。

分类显示路由必须包含一个slug参数。

以下是一些示例附加分类路由。

// Customise a taxonomy's URL
Route::bonus('taxonomy:topics', 'categories/{slug}', 'topics.show');

// Add a seperate posts page under a taxonomy term
Route::bonus('taxonomy:topics', 'topics/{slug}/posts', 'topics.posts');

// Mount a taxonomy to an entry
Route::bonus('taxonomy:topics', '{mount:entry-id}/{slug}', 'topics.show');

链接到路由

附加路由是普通的Laravel路由。要链接到它们,您需要给它们一个名称,然后在模板中使用route标签。在定义路由后调用Laravel的name方法来给它们命名

Route::bonus('collection:blog', '{mount}/{year}', 'blog.archive')->name('blog.archive');

然后在模板中使用route标签

{{ route:blog.archive year="2022" }}

路由缓存

附加路由是普通的Laravel路由,在启用路由缓存时将被缓存。这意味着对挂载条目的更改可能不会立即反映在路由中。此插件提供了一个实用程序,允许您通过控制面板刷新路由缓存,您可以在工具 > 路由缓存刷新下找到它。或者,您可以通过在命令行中运行php artisan route:cache来刷新缓存。

路由覆盖

本插件本身不会以任何方式覆盖、更改或干扰Statamic的路由。然而,自定义Laravel路由优先于Statamic路由。如果您定义了一个与Statamic路由相同的额外路由,它将覆盖Statamic。应尽量避免这种情况,最好尽可能使用Statamic的路由。