Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
479e874d88 |
10 changed files with 302 additions and 1 deletions
2
Makefile
2
Makefile
|
@ -1,4 +1,4 @@
|
||||||
BUILDDIR=../ungleich-staticcms-build
|
BUILDDIR=ungleich-staticcms-build
|
||||||
DESTINATION=ungleichstatic@staticweb.ungleich.ch:/home/services/www/ungleichstatic/staticcms.ungleich.ch/www/
|
DESTINATION=ungleichstatic@staticweb.ungleich.ch:/home/services/www/ungleichstatic/staticcms.ungleich.ch/www/
|
||||||
|
|
||||||
all: publish
|
all: publish
|
||||||
|
|
|
@ -3,3 +3,8 @@ name = ungleich Blog
|
||||||
source_path = /u/blog
|
source_path = /u/blog
|
||||||
filename = feed.xml
|
filename = feed.xml
|
||||||
item_model = blog-post
|
item_model = blog-post
|
||||||
|
|
||||||
|
[product]
|
||||||
|
name = ungleich products
|
||||||
|
source_path = /u/products
|
||||||
|
item_model = product
|
||||||
|
|
3
content/u/products/contents.lr
Normal file
3
content/u/products/contents.lr
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
_model: products
|
||||||
|
---
|
||||||
|
title: Ungleich's product page
|
7
content/u/products/ipv6-only-hosting/contents.lr
Normal file
7
content/u/products/ipv6-only-hosting/contents.lr
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
name: IPv6 Only Hosting
|
||||||
|
---
|
||||||
|
buy_link: https://google.com
|
||||||
|
---
|
||||||
|
description: Hi there this is descriptino
|
||||||
|
---
|
||||||
|
teaser: We provide best IPv6 only hosting
|
9
content/u/products/ipv6vpn/contents.lr
Normal file
9
content/u/products/ipv6vpn/contents.lr
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
name: IPv6 VPN
|
||||||
|
---
|
||||||
|
_discoverable: yes
|
||||||
|
---
|
||||||
|
buy_link: http://ungleich.ch
|
||||||
|
---
|
||||||
|
description: This is description
|
||||||
|
---
|
||||||
|
teaser: This is teaser
|
25
models/product.ini
Normal file
25
models/product.ini
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
[model]
|
||||||
|
name = Product
|
||||||
|
label = {{ this.title }}
|
||||||
|
hidden = yes
|
||||||
|
|
||||||
|
[fields.name]
|
||||||
|
label = Product Name
|
||||||
|
type = string
|
||||||
|
size = large
|
||||||
|
|
||||||
|
[fields.teaser]
|
||||||
|
label = Teaser
|
||||||
|
type = string
|
||||||
|
width = 1/2
|
||||||
|
|
||||||
|
[fields.description]
|
||||||
|
label = Description
|
||||||
|
type = string
|
||||||
|
width = 1/4
|
||||||
|
addon_label = @
|
||||||
|
|
||||||
|
[fields.buy_link]
|
||||||
|
label = Buy Link
|
||||||
|
type = url
|
||||||
|
width = 1/4
|
11
models/products.ini
Normal file
11
models/products.ini
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
[model]
|
||||||
|
name = Products
|
||||||
|
label = Products
|
||||||
|
hidden = yes
|
||||||
|
|
||||||
|
[fields.title]
|
||||||
|
label = Title
|
||||||
|
type = string
|
||||||
|
|
||||||
|
[children]
|
||||||
|
model = product
|
29
templates/macros/product.html
Normal file
29
templates/macros/product.html
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{% macro render_product(product, from_index=false) %}
|
||||||
|
{% if from_index %}
|
||||||
|
<div class="post-preview">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
{% set image = product.attachments.images.first() %}
|
||||||
|
<h2><a href="{{ product|url }}">{% if image %}<img src="{{ image.thumbnail(240)|url }}" alt=""/>{% else %}<div class="blog-post-placeholder"></div>{% endif %}</a></h2>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-8">
|
||||||
|
{% if from_index %}<a href="{{ product|url }}"><h2 class="post-title">{{ post.title }}</h2></a>
|
||||||
|
{% else %}
|
||||||
|
<h2 class="post-title">{{ product.title }}</h2>
|
||||||
|
{% endif %}
|
||||||
|
<p class="post-meta" style="font-size:0.9em;">
|
||||||
|
Posted on {{ product.pub_date }} by {% if product.twitter_handle %}<a href="https://twitter.com/{{ post.twitter_handle }}">{{ post.author or post.twitter_handle }}</a>{% else %}{{ post.author }} {% endif %}
|
||||||
|
</p>
|
||||||
|
<p class="post-subtitle">
|
||||||
|
<p>
|
||||||
|
{{ product.abstract }}
|
||||||
|
</p>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
{{ product.body }}
|
||||||
|
{% endif %}
|
||||||
|
{% endmacro %}
|
105
templates/product.html
Normal file
105
templates/product.html
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
<!-- <!doctype html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>the new ungleich blog | ungleich.ch</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="Affordable VM hosting in Glarus, Switzerland, operated by 100% hydropower. Devuan, debian, freebsd, ubuntu, centos. Our tech stack is fully open source.">
|
||||||
|
<meta name="author" content="ungleich glarus ag">
|
||||||
|
<link href="https://ungleich.ch/u/static/css/bootstrap-3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css">
|
||||||
|
<link href="https://ungleich.ch/u/static/css/font-awesome-4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||||
|
<link href="https://ungleich.ch/u/static/css/clean-blog.css" rel="stylesheet" type="text/css">
|
||||||
|
<link href="//fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
|
||||||
|
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
|
||||||
|
<link rel="shortcut icon" href="https://ungleich.ch/u/static/images/favicon.ico"/>
|
||||||
|
<script type="text/javascript" src="https://ungleich.ch/u/static/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ungleich.ch/u/static/js/bootstrap.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="jumbotron">
|
||||||
|
<h1>Welcome to ungleich's store.</h1>
|
||||||
|
<p>Here you can find all the good things. </p>
|
||||||
|
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 VPN</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
The ungleich IPv6 VPN enables you to have IPv6 anywhere in the world. There are active VPNs in Germany, Croatia, South Korea, China, Spain, ... you name it! Coming with a /48 network, you have plenty of IPv6 space that even allows you to create more than 65'000 standard (/64) networks for yourself. One for the office, one for the coworkers, one for the servers, one for the dog and so on and on.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 Backuo</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
IPv6 is quickly replacing IPv4 now world wide and more and more servers are only reachable by IPv6. So a backup without IPv6 is not future ready.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 Only Hosting</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
Our VMs have pure IPv6 connectivity. However using DNS64 and NAT64, they still can reach the old IPv4 Internet.
|
||||||
|
Secure, easy, and simple. It will be running in few seconds.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Product 4</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
Panel content
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body> -->
|
||||||
|
{% extends "layout.html" %}
|
||||||
|
{% from "macros/blog.html" import render_blog_post %}
|
||||||
|
{% from "macros/pagination.html" import render_pagination %}
|
||||||
|
{% block title %}{{ this.title }}{% endblock %}
|
||||||
|
{% block body %}
|
||||||
|
<header class="intro-header" style="background-image: url('/u/static/images/home-bg.jpg');">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||||
|
<div class="site-heading">
|
||||||
|
<h1>ungleich store</h1>
|
||||||
|
<hr class="small">
|
||||||
|
<span class="subheading"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">{{this.name}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{{this.description}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
107
templates/products.html
Normal file
107
templates/products.html
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
<!-- <!doctype html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>the new ungleich blog | ungleich.ch</title>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="description" content="Affordable VM hosting in Glarus, Switzerland, operated by 100% hydropower. Devuan, debian, freebsd, ubuntu, centos. Our tech stack is fully open source.">
|
||||||
|
<meta name="author" content="ungleich glarus ag">
|
||||||
|
<link href="https://ungleich.ch/u/static/css/bootstrap-3.3.4/css/bootstrap.min.css" rel="stylesheet" type="text/css">
|
||||||
|
<link href="https://ungleich.ch/u/static/css/font-awesome-4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||||
|
<link href="https://ungleich.ch/u/static/css/clean-blog.css" rel="stylesheet" type="text/css">
|
||||||
|
<link href="//fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" rel="stylesheet" type="text/css">
|
||||||
|
<link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
|
||||||
|
<link rel="shortcut icon" href="https://ungleich.ch/u/static/images/favicon.ico"/>
|
||||||
|
<script type="text/javascript" src="https://ungleich.ch/u/static/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="https://ungleich.ch/u/static/js/bootstrap.min.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="jumbotron">
|
||||||
|
<h1>Welcome to ungleich's store.</h1>
|
||||||
|
<p>Here you can find all the good things. </p>
|
||||||
|
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 VPN</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
The ungleich IPv6 VPN enables you to have IPv6 anywhere in the world. There are active VPNs in Germany, Croatia, South Korea, China, Spain, ... you name it! Coming with a /48 network, you have plenty of IPv6 space that even allows you to create more than 65'000 standard (/64) networks for yourself. One for the office, one for the coworkers, one for the servers, one for the dog and so on and on.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 Backuo</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
IPv6 is quickly replacing IPv4 now world wide and more and more servers are only reachable by IPv6. So a backup without IPv6 is not future ready.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 Only Hosting</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
Our VMs have pure IPv6 connectivity. However using DNS64 and NAT64, they still can reach the old IPv4 Internet.
|
||||||
|
Secure, easy, and simple. It will be running in few seconds.
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Product 4</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
Panel content
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body> -->
|
||||||
|
{% extends "layout.html" %}
|
||||||
|
{% from "macros/blog.html" import render_blog_post %}
|
||||||
|
{% from "macros/pagination.html" import render_pagination %}
|
||||||
|
{% block title %}{{ this.title }}{% endblock %}
|
||||||
|
{% block body %}
|
||||||
|
<header class="intro-header" style="background-image: url('/u/static/images/home-bg.jpg');">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||||
|
<div class="site-heading">
|
||||||
|
<h1>ungleich store</h1>
|
||||||
|
<hr class="small">
|
||||||
|
<span class="subheading"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
{% for product in this.children %}
|
||||||
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-primary">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h2 class="panel-title">{{product.name}}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{{product.teaser}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
Reference in a new issue