dev-master
9999999-dev https://github.com/paste/PastePaste is a super simple "CMS" built around static files and folders.
MIT
The Requires
- php >=5.3.0
- mustache/mustache 2.3.*
cms static flat file-based portfolio
Paste is a super simple "CMS" built around static files and folders.
<!-- @template: master @partial: project @title: The Page Title @visible: TRUE // visible in menu @label: Menu Label (optional) -->
The fastest way is to clone the demo site and modify to taste! Be sure to run composer update
to install dependencies., (*1)
Demo Site: https://github.com/paste/paste-demo, (*2)
, (*3)
Use Composer. Add paste/paste
to your project's composer.json
:, (*4)
{ "require": { "paste/paste": "dev-master" } }
Create an index.php
file for the front router:
(or copy from the demo site), (*5)
<?php // composer autoload require 'vendor/autoload.php'; use Paste\Paste; // configuration $config = array( // optionally specify a 'base_url' if serving Paste from a subdirectory, i.e. RewriteBase // 'base_url' => '/paste-demo', // relative path to content directory // 'content_dir' => 'content', // relative path to template directory // 'template_dir' => 'templates', // relative path to cache directory // 'cache_dir' => 'cache', ); // load config and parse content directory $paste = new Paste($config); // (optional) user defined routing // 'route regex' => any valid callback // matched tokens from the regex will be passed as parameters, with $paste instance first $paste->add_route('blog/([0-9]{4})/([0-9]{2})/([0-9]{2})/([A-Za-z0-9-_]+)', function($paste, $year, $month, $day, $name) { // ignore date and run normal content request return $paste->render_url("blog/$name"); }); // init routing and run $paste->run();
Create the content
, templates
, cache
directories in your web root. The cache
folder must be writeable by Apache. Your web root should end up looking something like this:, (*6)
, (*7)
/cache/ /content/ index.html /templates/ template.stache /vendor/ index.php composer.json .htaccess
Add the root content index file, content/index.html
:, (*8)
<!-- @title: Hello World --> <!-- @template: template --> <h3>Hello, world!</h3>
Add the first template, e.g. templates/template.stache
:, (*9)
<!doctype html> <html> <head> <meta charset="utf-8"> <title>{{title}}</title> </head> <body> {{{content}}} </body> </html>
Create an .htaccess
file to enable URL rewriting:
(or copy from the demo site), (*10)
# don't list directories Options -Indexes # Turn on URL rewriting RewriteEngine On # Installation directory -- same as your 'base_url' RewriteBase / # Protect dot files from being viewed <Files .*> Order Deny,Allow Deny From All </Files> # Protect application and system files from being viewed RewriteRule ^(?:vendor|content|templates|cache)\b.* index.php/$0 [L] # Allow any files or directories that exist to be displayed directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Rewrite all other URLs to index.php/URL RewriteRule .* index.php/$0 [PT] # use utf-8 encoding for anything served text/plain or text/html AddDefaultCharset utf-8 # force utf-8 for a number of file formats AddCharset utf-8 .html .css .js .xml .json .rss
Now visit your Paste site in a web browser and take in the magic!, (*11)
Paste is a super simple "CMS" built around static files and folders.
MIT
cms static flat file-based portfolio