Goals
          
            - Understand how Sculpin works
- Tips or "Best practices" for Drupal developers
- Extending Sculpin / Integrating with Drupal
Overview
          
            - Why Sculpin For Drupalistas
- Setup and Installation
- How Sculpin Works
- Integrating With Drupal
Why A Static Site (Generator)?
          
            
              - MUCH simpler than a CMS
- Easier and cheaper to deploy
- More secure
- Faster and easier to scale
- A generator lets you use a static site on larger projects
- Helps you avoid The Golden Hammer
Why Sculpin?
          
            Out of the 398 static site generators (staticsitegenerators.net) why pick Sculpin?
            
              - Well supported and maintained
- General purpose
- Extendable
Why Sculpin?
          Technology
          
            
              - Written in PHP
- Uses modern PHP tooling
- Leverages Symfony components (yay Drupal 8!)
- Themes/templates use Twig (yay Drupal 8!)
- Config files are in YAML (yay Drupal 8!)
Setup and Installation
          
            
              - Download and install the Sculpin executable (PHAR file)
- Create a simple directory structure
- Create a file in the right directory
- run 'sculpin generate'
Download And Install Sculpin
          
            
              - curl -O https://download.sculpin.io/sculpin.phar
- chmod +x sculpin.phar
- mv sculpin.phar ~/bin/sculpin
- PATH=$PATH:$HOME/bin
Directory Structure
          
            Two options:
            
              - Use a starter kit
- Create the files and directories yourself
DEMO!
	  
        
        
          How Sculpin Works
          Configuration Files
          
            
              - Two files, both under app/config
- sculpin_kernel.yml - settings for file generation
- sculpin_site.yml - settings for the site itself
- Both are optional and only used to add meta data or override defaults
- Can have per-environment site files - sculpin_site_prod.yml
DEMO!
	  
        
        
          How Sculpin Works
          Sources
          
            
              - Sources are files under the the "source" directory
How Sculpin Works
          Sources
          
            How source files are handled.
            
              - Markdown translated to HTML
- 
                Files without "front matter"
                
              
- 
                Files with "front matter"
                
                  - Processed - templates, URLs, etc.
 
DEMO!
	  
        
        
          How Sculpin Works
          Templating
          
            There are two ways to organize your templates, css, etc.
            
              - Basic - In subdirectories directly under "source"
- Theme - In a theme sub-directory under "source"
How Sculpin Works
          Templating
          
            
 source
 ├── _includes
 ├── _layouts
 ├── _partials
 └── _views
            
           
          
            
 source
 └── themes
   └── karlkedrovsky
     └── drupalcorn
       ├── _includes
       ├── _layouts
       ├── _partials
       └── _views
            
           
	  
        
        
          DEMO!
	  
        
        
          Content Types
          
            
              - 
                Content type based on one of two things:
                
                  - Path - subdirectory of "source"
- Meta - Key from "front matter"
 
- Different default layout
- Different permalink (URL)
- Etc.
DEMO!
	  
        
        
          Integrating With Drupal
          
            
              - Don't fight the tool (use pages)
- Keep in mind we're bending the tool a bit
- Can be good for things like consilidating info from multiple sites.
Integrating With Drupal
          Options
          
            
              - Create a custom Symfony bundle
- Create a Twig extension
DEMO!
	  
        
        
          Integrating With Drupal
          
            
              - SculpinKernel.php loads DrupalBundle
- DrupalBundle loads DependencyInjection/DrupalExtension.php
- DrupalExtension specifies services.yml
- servcies.yml specifies the new Twig functions