vinou/site-builder

PHP library to generate template based webpages with dynamic content from the Vinou Plattform


README

The Vinou Site-Builder is a PHP library that easily combine a basic php routing configured in a routes.yml file with Twig template rendering. The library also provides the possible to call libraries as data processors and pipe the result directly within the twig template.

Table of contents

Typical project structure

This example project structur can be found inside the repository in the Example/Project folder

Installation (via typical project structure)

This installation guide is based on our preferred project structure. This structure is developed over years and adopted from many OSS projects. Special thanks are going to the great TYPO3 community that we are participating over years and delivers a great knowhow and share ideas over years.

1. Setup project structure

composer require vinou/site-builder
cp -R vendor/vinou/site-builder/Examples/Project/config ./
cp -R vendor/vinou/site-builder/Examples/Project/web ./

2. Modify your installation

Required modifications!

  • Fill in your Vinou AuthId and token in config/settings.yml you can find them in your Vinou-Office
  • Fill in your mail server credentials in config/mail.yml

Optional but typical modifications

  • Configure Vinou API-Connector via Vinou constants
  • Add basic but needed routes in config/routes.yml

Route configuration

1. General route parameters

2. Load sitemap configuration for route

PLEASE NOTICE: to use sitemap parameters your route must contain a variable placeholder

wines/{path_segment}:
  template: 'Wines/detail.twig'
  pageTitle: 'Wine detail page'
  public: true
  sitemap:
    function: getWinesAll
    params:
      lazy: false
      pageSize: 500
    dataKey: 'wines'
  dataProcessing:
    wine: getWine

3. Use dataProcessing

The main principle is that you can define a key that is filled by the result of the function that is called within a specific processor. If no processor is set the Vinou API-Connector is used by default.

SHORTHAND NOTICE: If you don't need any additional function configuration and want to call an API-Connector function you can define a key directly with the function name

Example shorthand calls for wines and wineries

wines/{path_segment}:
  template: 'Wines/Detail.twig'
  pageTitle: 'wine detail page'
  public: true
  dataProcessing:
    wines: getWinesAll
    wineries: getWineriesAll

Example advanced config to combine wines and bundles into one items array

wines/{path_segment}:
  template: 'Wines/Detail.twig'
  pageTitle: 'wine detail page'
  public: true
  dataProcessing:
    wines: getWinesAll
    bundles: getBundlesAll
    items:
      processor: 'formatter'
      function: 'mergeData'
      useRouteData: FALSE
      useData:
        - wines
        - bundles
    wineries: getWineriesAll

4. Registered processors

5. Register your own processor

Create your own processor

<?php
namespace YourVendor\YourNamespace\Processors;

class YourProcessor extends \Vinou\SiteBuilder\Processors\AbstractProcessor {

  public function dataMagic ($data = NULL) {
    $formattedData = $data;
    // transform your data here or do other stuff
    return $formattedData;
  }

}

Go to your index.php and load the processor before SiteBuilder instantiation

require_once __DIR__ . '/Path/to/YourProcessor.php';

Than use your processor directly in your route config

your-route-with-processor:
  template: 'Pages/template.twig'
  pageTitle: 'Page title'
  public: true
  dataProcessing:
    templatekey:
      class: '\YourVendor\YourNamespace\Processors\YourProcessor'
      funtion: 'dataMagic'

Classlist

Provider

This Library is developed by the Vinou GmbH.

Vinou GmbH
Mombacher Straße 68
55122 Mainz
E-Mail: kontakt@vinou.de
Phone: +49 6131 6245390