All Projects → danpros → Htmly

danpros / Htmly

Licence: other
Simple and fast databaseless PHP blogging platform, and Flat-File CMS

Projects that are alternatives of or similar to Htmly

Bludit
Simple, Fast, Secure, Flat-File CMS
Stars: ✭ 824 (+19.59%)
Mutual labels:  blog, cms, blog-engine, flat-file, website
Elefant
Elefant, the refreshingly simple PHP CMS and web framework.
Stars: ✭ 188 (-72.71%)
Mutual labels:  blog, cms, blog-engine, website
Pico
Pico is a stupidly simple, blazing fast, flat file CMS.
Stars: ✭ 3,494 (+407.11%)
Mutual labels:  cms, flat-file, markdown, website
Grav
Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS powered by PHP, Markdown, Twig, and Symfony
Stars: ✭ 13,067 (+1796.52%)
Mutual labels:  cms, flat-file, markdown, website
Typemill
TYPEMILL is a simple and lightweight Flat-File-CMS for authors and publishers.
Stars: ✭ 150 (-78.23%)
Mutual labels:  cms, flat-file, markdown, website
Sio.core
✔ [ SIOC ] Swastika I/O Core is an all in one platform (e.g CMS, eCommerce, Forum, Q&A, CRM...) ASP.NET Core / Dotnet Core System based on SIOH Framework.
Stars: ✭ 121 (-82.44%)
Mutual labels:  blog, cms, blog-engine
Cms
MaxSite CMS
Stars: ✭ 123 (-82.15%)
Mutual labels:  blog, cms, website
Sunengine
SunEngine – site engine with blog, forum and articles sections features support.
Stars: ✭ 130 (-81.13%)
Mutual labels:  blog, cms, blog-engine
Dropplets
Welcome to an easier way to blog - A minimalist markdown blogging platform.
Stars: ✭ 1,616 (+134.54%)
Mutual labels:  blog, blog-engine, markdown
Oblog
An Auto Rendering 🔽 Blogging System Based on MarkDown & Vue.js | 自动渲染装载 MarkDown 内容的博客系统
Stars: ✭ 133 (-80.7%)
Mutual labels:  blog, blog-engine, markdown
Pluxml
PluXml, Moteur de Blog et CMS à l'XML sans base de données
Stars: ✭ 168 (-75.62%)
Mutual labels:  blog, cms, website
Nodepress
😎 RESTful API service for Blog/CMS, powered by @nestjs
Stars: ✭ 829 (+20.32%)
Mutual labels:  blog, cms, blog-engine
Verless
A simple and lightweight Static Site Generator.
Stars: ✭ 276 (-59.94%)
Mutual labels:  blog, blog-engine, markdown
Nim websitecreator
Nim fullstack website framework - deploy a website within minutes
Stars: ✭ 124 (-82%)
Mutual labels:  blog, blog-engine, website
Solo
🎸 一款小而美的博客系统,专为程序员设计。
Stars: ✭ 13,245 (+1822.35%)
Mutual labels:  blog, blog-engine, markdown
Grav Plugin Admin
Grav Admin Plugin
Stars: ✭ 316 (-54.14%)
Mutual labels:  cms, markdown, website
Zola
A fast static site generator in a single binary with everything built-in. https://www.getzola.org
Stars: ✭ 7,823 (+1035.41%)
Mutual labels:  cms, blog-engine, markdown
Batflat
Lightweight, fast and easy CMS for free. Bootstrap ready. https://batflat.org
Stars: ✭ 95 (-86.21%)
Mutual labels:  cms, flat-file, markdown
Slimcms
SlimCMS - lightweight CMS based on slim 3 framework
Stars: ✭ 201 (-70.83%)
Mutual labels:  blog, cms, blog-engine
Wondercms
WonderCMS - fast and small flat file CMS (5 files)
Stars: ✭ 330 (-52.1%)
Mutual labels:  blog, cms, flat-file

Logo

HTMLy is an open source Databaseless Blogging Platform or Flat-File Blog prioritizes simplicity and speed written in PHP. HTMLy can be referred to as Flat-File CMS either since it will also manage your content.

You do not need to use a VPS to run HTMLy, shared hosting or even free hosting should work as long as the host supports at least PHP 5.3.

Demo

Visit HTMLy demo as blog.

Features

  • Admin Panel
  • Markdown editor with live preview and image upload
  • Categorization with category and tags (multiple tagging support)
  • Static Pages (e.g. Contact Page, About Page)
  • Meta canonical, description, and rich snippets for SEO
  • Pagination
  • Author Page
  • Multi author support
  • Social Links
  • Disqus Comments (optional)
  • Facebook Comments (optional)
  • Google Analytics
  • Built-in Search
  • Related Posts
  • Per Post Navigation (previous and next post)
  • Body class for easy theming
  • Breadcrumb
  • Archive page (by year, year-month, or year-month-day)
  • JSON API
  • OPML
  • RSS Feed
  • RSS 2.0 Importer (basic)
  • Sitemap.xml
  • Archive and Tag Cloud Widget
  • SEO Friendly URLs
  • Teaser thumbnail for images and Youtube videos
  • Responsive Design
  • User Roles
  • Online Backup
  • File Caching
  • Auto Update
  • Post Draft
  • i18n
  • Menu builder

Requirements

HTMLy requires PHP 5.3 or greater, PHP-XML package, and PHP-ZIP package for backup feature.

Installations

Install HTMLy using the source code:

  1. Download the latest version from the Github repo
  2. Upload and extract the zip file to your web server. You can upload it in the root directory, or in subdirectory such as htmly.
  3. Visit your domain. If you extract it in root directory visit https://www.example.com/install.php and if in subdirectory visit https://www.example.com/htmly/install.php.
  4. Follow the installer to install HTMLy.
  5. The installer will try to delete itself. Please delete the installer manually if the install.php still exist.

Online install

Install HTMLy without downloading the source code and use the online installer:

  1. Download online-installer.php from the latest release
  2. If you upload it in root directory visit https://www.example.com/online-installer.php or if in subdirectory visit https://www.example.com/subdirectory/online-installer.php.
  3. Follow the installer to install HTMLy.
  4. Please delete the installer manually if the online-installer.php and install.php still exist.

Configurations

Set written permission for the cache and content directories.

Rename config.ini.example inside the config folder to config.ini (or you can create a new config/config.ini file) then change the site settings there.

Create YourUsername.ini inside the config/users folder or simply rename the username.ini.example file and write down your password there:

password = YourPassword

In addition, HTMLy support admin user role. To do so, simply add the following line to your choosen user:

role = admin

Users assigned with the admin role can edit/delete all users' posts.

To access the admin panel, add /login to the end of your site's URL. e.g. www.yoursite.com/login

Lighttpd

The following is an example configuration for lighttpd:

$HTTP["url"] =~ "^/config" {
  url.access-deny = ( "" )
}
$HTTP["url"] =~ "^/system/includes" {
  url.access-deny = ( "" )
}
$HTTP["url"] =~ "^/system/admin/views" {
  url.access-deny = ( "" )
}

url.rewrite-once = (
  "^/(themes|system|vendor)/(.*)" => "$0",
  "^/(.*\.php)" => "$0",

  # Everything else is handles by htmly
  "^/(.*)$" => "/index.php/$1"
)

Nginx

The following is a basic configuration for Nginx:

server {
  listen 80;

  server_name example.com www.example.com;
  root /usr/share/nginx/html;

  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log error;

  index index.php;

  location ~ /config/ {
     deny all;
  }

  location / {
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
  }
}

Making a secure password

Passwords can be stored in username.ini (where "username" is the user's username) in either plaintext, encryption algorithms supported by php hash or bcrypt (recommended). To generate a bcrypt encrypted password:

$ php -a
> echo password_hash('desiredpassword', PASSWORD_BCRYPT);

This will produce a hash which is to be placed in the password field in username.ini. Ensure that the encryption field is set to password_hash.

Both Online or Offline

The built-in editor found in the admin panel, also provides you the ability to write to Markdown files offline by uploading them (see naming convention below) into the content/username/blog/category/type/:

  • username must match config/users/username.ini.
  • category must match the category.md inside content/data/category/category.md except the uncategorized category.
  • type is the content type. Available content type post, video, audio, link, quote.

For static pages you can upload it to the content/static folder.

Category

The default category is Uncategorized with slug uncategorized and you do not need to creating it inside content/data/category/ folder. But if you write it offline and want to assign new category to specific post you need to creating it first before you can use those category, example content/data/category/new-category.md with the following content:

<!--t New category title t-->
<!--d New category meta description d-->

New category info etc.

The slug for the new category is new-category (htmly removing the file extension). And for full file directory:

content/username/new-category/post/file.md

File Naming Convention

When you write a blog post and save it via the admin panel, HTMLy automatically create a .md file extension with the following name, example:

2014-01-31-12-56-40_tag1,tag2,tag3_databaseless-blogging-platform-flat-file-blog.md

Here's the explanation (separated by an underscore):

  • 2014-01-31-12-56-40 is the published date. The date format is yyyy-mm-dd-hh-mm-ss
  • tag1,tag2,tag3 are the tags, separated by commas
  • databaseless-blogging-platform-flat-file-blog is the URL

For static pages, use the following format:

content/static/about.md

In the example above, the /about.md creates the URL: www.yourblog.com/about

Thus, if you write/create files offline, you must name the .md file in the format above.

For static subpages, use the following format:

content/static/about/me.md

This will create the URL: www.yourblog.com/about/me

Content Tags

If you are writing offline, you need specify the content tags below:

Title

<!--t Title t-->

Meta description

<!--d The meta description d-->

Tags

This is just the tags display and for the slug is in the filename.

<!--tag Tag1,Tag2 tag-->

Featured image

Post with featured image.

<!--image http://www.example.com/image-url/image.jpg image-->

Featured youtube video

Post with featured youtube video.

<!--video https://www.youtube.com/watch?v=xxxxxxx video-->

Featured soundcloud audio

Post with featured soundcloud audio.

<!--audio https://soundcloud.com/xxxx/audio-url audio-->

Featured link

Post with featured link.

<!--link https://github.com/danpros/htmly link-->

Featured quote

Post with featured quote.

<!--quote Premature Optimization is The Root of All Evil quote-->

Example

Example of how your post would look like:

<!--t Here is the post title t-->
<!--d The meta description d-->
<!--tag Tag1,Tag2 tag-->
<!--video https://www.youtube.com/watch?v=xxxxxxx video-->

Paragraph 1

Paragraph 2 etc.

Contribute

  1. Fork and edit
  2. Submit pull request for consideration

Contributors

Copyright / License

For copyright notice please read COPYRIGHT.txt. HTMLy is licensed under the GNU General Public License Version 2.0 (or later).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].