|
|
1 year ago | |
|---|---|---|
| cache | 2 years ago | |
| config | 2 years ago | |
| content/data | 3 years ago | |
| lang | 1 year ago | |
| system | 1 year ago | |
| themes | 2 years ago | |
| .gitignore | 3 years ago | |
| .htaccess | 10 years ago | |
| .updateignore | 11 years ago | |
| COPYRIGHT.txt | 2 years ago | |
| LICENSE.txt | 12 years ago | |
| README.md | 1 year ago | |
| SECURITY.md | 2 years ago | |
| composer.json | 2 years ago | |
| composer.lock | 5 years ago | |
| favicon.ico | 10 years ago | |
| humans.txt | 4 years ago | |
| index.php | 4 years ago | |
| install.php | 2 years ago | |
| robots.txt | 10 years ago | |
| upload.php | 4 years ago | |
HTMLy is an open source databaseless blogging platform prioritizes simplicity and speed written in PHP.
It uses a unique algorithm to find or list any content based on date, type, category, tag, or author, and it's performance remain fast even if we have ten thousand of posts and hundreds of tags.
Visit HTMLy demo as blog.
HTMLy requires PHP 5.3 or greater, PHP-XML package, PHP-INTL package, and PHP-ZIP package for backup feature.
Install HTMLy using the source code:
htmly.https://www.example.com/install.php and if in subdirectory visit https://www.example.com/htmly/install.php.install.php still exist.Install HTMLy without downloading the source code and use the online installer:
online-installer.php from the latest releasehttps://www.example.com/online-installer.php or if in subdirectory visit https://www.example.com/subdirectory/online-installer.php.online-installer.php and install.php still exist.Set written permission for the cache and content directories.
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
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"
)
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;
}
}
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.
The built-in editor found in the admin panel. HTMLy also allows you to write the markdown files offline and then uploading them into eg. content/username/blog/category/type/ (see the naming convention below):
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.
Note for offline writing: Every time new content added (post, category etc.), or you make changes that change the folder structure or file names, simply delete the index folder inside cache folder so that the changes detected by HTMLy.
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/blog/new-category/post/file.md
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 Y-m-d-H-i-stag1,tag2,tag3 are the tags, separated by commasdatabaseless-blogging-platform-flat-file-blog is the URLFor 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
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.
For copyright notice please read COPYRIGHT.txt. HTMLy is licensed under the GNU General Public License Version 2.0 (or later).