avvertix / pronto
Pronto CMS. The CMS that is almost pronto (ready in italian) for you and your website.
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:project
Requires
- php: >=5.5.9
- avvertix/pronto-framework: ^0.1.0
Requires (Dev)
- fzaninotto/faker: ~1.0
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2020-02-08 13:10:36 UTC
README
The CMS that is almost ready ("pronto" in italian) for you to use.
The aim of Pronto is to be a download and run flat-file based CMS with high speed and low maintenance costs. It uses Laravel Lumen at its core.
Features
- Markdown content parsing
- Sections and subsections
- Page and section configurable order
- Multiple level page nesting
- Multi-language support
- Themes
- File Download and assets management
- Imagination
Browser compatibility
At now the plan is to target all the modern browsers (IE10, IE11, Edge, Chrome, Firefox, Safari, Opera latest versions).
Requirements
- php 5.5.9+
- php fileinfo extension
- Composer (for managing PHP dependencies)
- NodeJS and NPM (for building the frontend)
Installation
To create a new project use Composer "create-project" command. Pass it the package name (avvertix/pronto
), and the directory to create the project in (e.g. path
). You can also provide a version as third argument, otherwise the latest version is used.
php composer.phar create-project avvertix/pronto path
Now that all the PHP code is there you could initialize the frontend (i.e. the default theme) by launching
npm install gulp
Content Writing
Your website content will be gathered from the folders and from the Markdown files contained in the storage/content
folder.
Folders will be converted to sections, while markdown files are the pages. Only markdown file whose extension is .md
will be considered.
If a folder contains a file named index.md
will be showed when a section is requested.
We support the following markdown specifications:
The framework offers syntax highlighting so please specify the language for each fenced code block.
Folder naming rules
- lower case,
- no spaces,
-
and_
for word separation
File naming rules
.md
extension,- no spaces,
- use
-
as word separator, - entirely lower case
Adding images (png, jpg, ...) and resources (pdf, zip, ...)
Images can be stored in storage/images
and then referenced, in the markdown page, with their names using a special path, like in the example below
![alt](./i/image-name.png)
Image file names follow the same rules for file naming as the markdown pages.
if you want to set a link on an image, you could do that using the following markdown syntax
[![](./i/image-name.png)](./i/image-name.png)
The previous example will open the full size version of the image when the image preview is clicked.
Global Navigation Menu
The global navigation menu that will be inserted in the header of the website is entirely made
using a json based configuration. The configuration file, named config.json
, must be inside the storage/app
folder.
Three types of elements can be inserted in the global navigation:
- External links,
- Links to pages,
- Links to sections.
Every element in the menu must have a title
attribute that is used for the UI of the menu and a ref
attribute which holds the link to the element.
External links
For external links you have to specify:
title
: the title of the link to be showed to the userref
: the absolute URL
Links to pages
For pages you have to specify:
title
: the title to be showed to the usertype
:page
ref
: the path of the page, wich consists in the section slug and the page slug (relative to thecontent
folder)
Links to sections
title
: the title to be showed to the usertype
:section
ref
: the path to the section (relative to thecontent
folder)
The following code block is an example of config.json
menu section.
{ "menu": [ { "title": "Git", "ref": "http://git.project" }, { "title": "Sub Section Promoted", "type": "section", "ref": "example-section/sub-section-1" }, { "title": "Home", "type": "page", "ref": "index" } ] }
Securing your installation
...
Created with Visual Studio Code