phase in products

This commit is contained in:
Nico Schottelius 2019-12-30 21:40:48 +01:00
parent 485502407f
commit cb3e54a4e0
7 changed files with 278 additions and 142 deletions

View File

@ -0,0 +1,11 @@
name: IPv6 Only Hosting
---
buy_link: https://google.com
---
description: Hi there this is descriptino
---
_discoverable: yes
---
_hidden: no
---
teaser: We provide best IPv6 only hosting

View File

@ -0,0 +1,11 @@
name: IPv6 VPN
---
_discoverable: yes
---
_hidden: no
---
buy_link: http://ungleich.ch
---
description: This is description
---
teaser: This is teaser

View File

@ -1,17 +1,25 @@
[model] [model]
name = Product name name = Product
label = {{ this.title }} label = {{ this.title }}
hidden = yes hidden = yes
[fields.title] [fields.name]
label = Title label = Product Name
type = string type = string
size = large size = large
[fields.body] [fields.teaser]
label = Body label = Teaser
type = markdown type = string
width = 1/2
[fields.abstract] [fields.description]
label = Abstract label = Description
type = markdown type = string
width = 1/4
addon_label = @
[fields.buy_link]
label = Buy Link
type = url
width = 1/4

8
models/products.ini Normal file
View File

@ -0,0 +1,8 @@
[model]
name = Products
label = Products
hidden = yes
[fields.title]
label = Title
type = string

View 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 %}

View File

@ -1,143 +1,105 @@
<!doctype html> <!-- <!doctype html>
<html lang="en"> <head>
<head>
<!-- Required meta tags -->
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <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.
<!-- Bootstrap CSS --> </div>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> </div>
</div>
<title>{{ this.title }}</title> <div class="col-md-3">
</head> <div class="panel panel-default">
<body> <div class="panel-heading">
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <h3 class="panel-title">Product 4</h3>
<a class="navbar-brand" href="https://ungleich.ch">ungleich</a> </div>
<button class="navbar-toggler" type="button" <div class="panel-body">
data-toggle="collapse" Panel content
data-target="#navbarSupportedContent" </div>
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> </div>
<span class="navbar-toggler-icon"></span> </div>
</button> </div>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="form-inline my-2 my-lg-0"
action="https://search.ungleich.ch/yacysearch.html" method="get">
<input class="form-control mr-sm-2" type="search"
placeholder="Search" name="query" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
<div class="position-relative overflow-hidden p-3 p-md-5 m-md-3 text-center bg-light">
<div class="col-md-5 p-lg-5 mx-auto my-5">
<h1 class="display-4 font-weight-normal">Punny headline</h1>
<p class="lead font-weight-normal">And an even wittier subheading
to boot. Jumpstart your marketing efforts with this example based
on Apples marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
</div>
<div class="product-device shadow-sm d-none d-md-block"></div>
<div class="product-device product-device-2 shadow-sm d-none d-md-block"></div>
</div> </div>
</body> -->
<div class="container"> {% extends "layout.html" %}
<div class="row mb-3"> {% from "macros/blog.html" import render_blog_post %}
<div class="col-md-4"> {% from "macros/pagination.html" import render_pagination %}
<h3 class="font-weight-normal">Punny headlineX</h3> {% block title %}{{ this.title }}{% endblock %}
<p class="font-weight-normal">And an even wittier subheading {% block body %}
to boot. Jumpstart your marketing efforts with this example based <header class="intro-header" style="background-image: url('/u/static/images/home-bg.jpg');">
on Apples marketing pages.</p> <div class="container">
<a class="btn btn-outline-secondary" href="#">Get it here!</a> <div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
</div> <div class="site-heading">
<div class="col-md-4"> <h1>ungleich store</h1>
<h3 class="font-weight-normal">Punny headlineX</h3> <hr class="small">
<p class="font-weight-normal">And an even wittier subheading <span class="subheading"></span>
to boot. Jumpstart your marketing efforts with this example based
on Apples marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
</div>
<div class="col-md-4">
<h3 class="font-weight-normal">Punny headlineX</h3>
<p class="font-weight-normal">And an even wittier subheading
to boot. Jumpstart your marketing efforts with this example based
on Apples marketing pages.</p>
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="container"> </header>
<div class="row mb-3"> <div class="container">
<div class="col-md-4"> <div class="row">
<div class="card"> <div class="col-md-3">
<div class="card-body"> <div class="panel panel-primary">
<h5 class="card-title">Card title</h5> <div class="panel-heading">
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p> <h3 class="panel-title">{{this.name}}</h3>
<a href="#" class="btn btn-primary">Go somewhere</a> </div>
<div class="panel-body">
{{this.description}}
</div> </div>
</div> </div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
</div>
</div> </div>
<hr/>
<div class="container">
<div class="row mb-3">
<div class="col-md-7">
Pellentesque aliquam ac elit in rutrum. Cras hendrerit lorem pharetra lectus porttitor, vel maximus lorem viverra. Mauris blandit nulla lectus, sed cursus elit dictum vitae. Donec ullamcorper enim ac lectus laoreet, non tincidunt lorem suscipit.
</div>
<div class="col-md-5">
<img src="https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg" class="img-fluid">
</div>
</div>
</div> </div>
</div>
</div>
<footer class="footer mt-auto py-3"> {% endblock %}
<div class="container">
<span class="text-muted">Copyright
<a class=footer-link href="https://ungleich.ch">ungleich</a>.</span>
</div>
</footer>
</body>
</html>

107
templates/products.html Normal file
View 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 %}