NAME

Dancer::Plugin::Interchange6::Routes - Routes for Interchange6 Shop Machine

ROUTES

The following routes are provided by this plugin.

Active routes are automatically installed by the shop_setup_routes keyword:

cart (/cart)

Route for displaying and updating the cart.

checkout (/checkout)

Route for the checkout process (not active and not recommended).

login (/login)

Login route.

logout (/logout)

Logout route.

Route for displaying navigation pages, for example categories and menus.

The number of products shown on the navigation page can be configured with the records option:

plugins:
  Interchange6::Routes:
    navigation:
      records: 20
product

Route for displaying products.

CONFIGURATION

The template for each route type can be configured:

plugins:
  Interchange6::Routes:
    account:
      login:
        template: login
        uri: login
        success_uri:
      logout:
        template: logout
        uri: logout
    cart:
      template: cart
      uri: cart
      active: 1
    checkout:
      template: checkout
      uri: checkout
      active: 0
    navigation:
      template: listing
      records: 0
    product:
      template: product

This sample configuration shows the current defaults.

HOOKS

The following hooks are available to manipulate the values passed to the templates:

before_product_display

The hook sub receives a hash reference, where the Product object is the value of the product key.

before_cart_display
before_checkout_display

This hook is called if a navigation uri is requested and before product search queries are generated.

The hook sub receives the navigation data as hash reference:

Navigation object.

page

Page number found at end of URI or 1 if no page number found.

template

Name of template.

The navigation hash reference can be modified inside the hook and all changes will be visible to the navigation route (and also the template) after the hook returns.

before_navigation_display

The hook sub receives the navigation data as hash reference:

Navigation object.

products

Product listing for this navigation item. The product listing is generated using "listing" in Interchange6::Schema::Result::Product.

pager

Data::Page object for "products".

To get the full count of products call total_entries on the Data::Page object.

template

Name of template. In order to use another template, change the value in the hashref.

hook 'before_navigation_display' => sub {
    my $navigation_data = shift;

    if ($navigation_data->{navigation}->uri =~ /^admin/) {
         $navigation_data->{template} = 'admin_listing';
    }
};
before_login_display

EXAMPLES

Disable parts of layout on the login view:

hook 'before_login_display' => sub {
    my $tokens = shift;

    $tokens->{layout_noleft} = 1;
    $tokens->{layout_noright} = 1;
};

DANCER HOOKS

The following standard Dancer hooks are used:

before

Set "current_user" in Interchange6::Schema for the default schema to "logged_in_user" in Dancer::Plugin::Auth::Extensible or undef.