phase in products
This commit is contained in:
parent
485502407f
commit
cb3e54a4e0
7 changed files with 278 additions and 142 deletions
11
content/u/products/ipv6-only-hosting/contents.lr
Normal file
11
content/u/products/ipv6-only-hosting/contents.lr
Normal 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
|
11
content/u/products/ipv6vpn/contents.lr
Normal file
11
content/u/products/ipv6vpn/contents.lr
Normal 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
|
|
@ -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
8
models/products.ini
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
[model]
|
||||||
|
name = Products
|
||||||
|
label = Products
|
||||||
|
hidden = yes
|
||||||
|
|
||||||
|
[fields.title]
|
||||||
|
label = Title
|
||||||
|
type = string
|
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 %}
|
|
@ -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">
|
||||||
<!-- Bootstrap CSS -->
|
<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.">
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
|
<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">
|
||||||
<title>{{ this.title }}</title>
|
<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>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
<div class="container-fluid">
|
||||||
<a class="navbar-brand" href="https://ungleich.ch">ungleich</a>
|
<div class="row">
|
||||||
<button class="navbar-toggler" type="button"
|
<div class="jumbotron">
|
||||||
data-toggle="collapse"
|
<h1>Welcome to ungleich's store.</h1>
|
||||||
data-target="#navbarSupportedContent"
|
<p>Here you can find all the good things. </p>
|
||||||
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
<p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
|
||||||
<span class="navbar-toggler-icon"></span>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<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>
|
</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 Apple’s marketing pages.</p>
|
|
||||||
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="product-device shadow-sm d-none d-md-block"></div>
|
<div class="row">
|
||||||
<div class="product-device product-device-2 shadow-sm d-none d-md-block"></div>
|
<div class="col-md-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">IPv6 VPN</h3>
|
||||||
</div>
|
</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="container">
|
||||||
<div class="row mb-3">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||||
<h3 class="font-weight-normal">Punny headlineX</h3>
|
<div class="site-heading">
|
||||||
<p class="font-weight-normal">And an even wittier subheading
|
<h1>ungleich store</h1>
|
||||||
to boot. Jumpstart your marketing efforts with this example based
|
<hr class="small">
|
||||||
on Apple’s marketing pages.</p>
|
<span class="subheading"></span>
|
||||||
<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 Apple’s 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 Apple’s marketing pages.</p>
|
|
||||||
<a class="btn btn-outline-secondary" href="#">Get it here!</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row mb-3">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-3">
|
||||||
<div class="card">
|
<div class="panel panel-primary">
|
||||||
<div class="card-body">
|
<div class="panel-heading">
|
||||||
<h5 class="card-title">Card title</h5>
|
<h3 class="panel-title">{{this.name}}</h3>
|
||||||
<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="panel-body">
|
||||||
</div>
|
{{this.description}}
|
||||||
<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>
|
||||||
</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>
|
||||||
|
{% endblock %}
|
||||||
<div class="col-md-5">
|
|
||||||
<img src="https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg" class="img-fluid">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer class="footer mt-auto py-3">
|
|
||||||
<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
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