Bootstrap products
This commit is contained in:
parent
16fb2bb919
commit
5f0f8f66db
19 changed files with 359 additions and 327 deletions
6
Makefile
6
Makefile
|
@ -1,5 +1,5 @@
|
|||
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/u/
|
||||
|
||||
all: publish
|
||||
|
||||
|
@ -7,7 +7,7 @@ pull:
|
|||
git pull
|
||||
|
||||
publish: pull build permissions
|
||||
rsync -av --exclude .lektor/ $(BUILDDIR)/ $(DESTINATION)
|
||||
rsync -av --delete --exclude .lektor/ $(BUILDDIR)/u/ $(DESTINATION)
|
||||
|
||||
permissions: build
|
||||
find $(BUILDDIR) -type f -exec chmod 0644 {} \;
|
||||
|
@ -17,4 +17,4 @@ build:
|
|||
lektor build -O $(BUILDDIR)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILDDIR)
|
||||
rm -rf $(BUILDDIR)
|
||||
|
|
8
content/u/products/cloud-backup/contents.lr
Normal file
8
content/u/products/cloud-backup/contents.lr
Normal file
|
@ -0,0 +1,8 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
title: Cloud Backup
|
||||
---
|
||||
subtitle: Your insurance in Switzerland
|
||||
---
|
|
@ -1,3 +1,5 @@
|
|||
_model: products
|
||||
---
|
||||
title: ungleich products
|
||||
title: Products
|
||||
---
|
||||
subtitle: Our offer to make your life easier.
|
||||
|
|
8
content/u/products/ipv4-to-ipv6-proxy/contents.lr
Normal file
8
content/u/products/ipv4-to-ipv6-proxy/contents.lr
Normal file
|
@ -0,0 +1,8 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
title: IPv6 to IPv6 Proxy
|
||||
---
|
||||
subtitle: Make your IPv6 resources reachable from the IPv4 world
|
||||
---
|
|
@ -1,4 +1,4 @@
|
|||
name: IPv6 Only Hosting
|
||||
title: IPv6 Only Hosting
|
||||
---
|
||||
link: https://ipv6onlyhosting.com
|
||||
---
|
||||
|
@ -6,8 +6,4 @@ _discoverable: yes
|
|||
---
|
||||
_hidden: no
|
||||
---
|
||||
abstract: We provide best IPv6 only hosting
|
||||
---
|
||||
description:
|
||||
|
||||
Hi there this is descriptino
|
||||
subtitle: We provide best IPv6 only hosting
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
name: IPv6 VPN
|
||||
title: IPv6 VPN
|
||||
---
|
||||
_discoverable: yes
|
||||
---
|
||||
|
@ -6,6 +6,5 @@ _hidden: no
|
|||
---
|
||||
buy_link: http://ungleich.ch
|
||||
---
|
||||
description: This is description
|
||||
subtitle: We enable you with IPv6 everywhere
|
||||
---
|
||||
teaser: This is teaser
|
||||
|
|
55
content/u/products/privacy-chat/contents.lr
Normal file
55
content/u/products/privacy-chat/contents.lr
Normal file
|
@ -0,0 +1,55 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
title: Privacy enhanced Chat
|
||||
---
|
||||
subtitle: Your personal chat server
|
||||
---
|
||||
link: http://ungleich.ch
|
||||
---
|
||||
feature1_title: Location: Switzerland
|
||||
---
|
||||
feature1_text: The chat server is located in the neutral country
|
||||
Switzerland with strong privacy laws.
|
||||
---
|
||||
feature2_title: Scalable
|
||||
---
|
||||
feature2_text:
|
||||
|
||||
Are you running a small team? Or are you a bigger
|
||||
organisation? There is an instance that works for each of your
|
||||
cases.
|
||||
---
|
||||
feature3_title: Open Source
|
||||
---
|
||||
feature3_text:
|
||||
|
||||
The chat server only consists of Open Source
|
||||
Software. The software can easily be audited by third parties and its
|
||||
security verified. It also does not lock you in with us. If you are
|
||||
ever not happy with our service, you can take the data and host the
|
||||
chat server somewhere else.
|
||||
---
|
||||
offer1_title: Regular
|
||||
---
|
||||
offer1_text: text of offer
|
||||
---
|
||||
offer1_link: text of offer
|
||||
---
|
||||
offer2_title: Pro
|
||||
---
|
||||
offer2_text: text of offer
|
||||
---
|
||||
offer2_link: link of offer
|
||||
---
|
||||
offer3_title: Starter
|
||||
---
|
||||
offer3_text: text of offer
|
||||
---
|
||||
offer3_link: link of offer
|
||||
---
|
||||
content1_text: Text of the first content block
|
||||
---
|
||||
content1_image: https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg
|
||||
---
|
55
content/u/products/private-search-engine/contents.lr
Normal file
55
content/u/products/private-search-engine/contents.lr
Normal file
|
@ -0,0 +1,55 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
title: Private Search Engine
|
||||
---
|
||||
subtitle: Your own alternative to google
|
||||
---
|
||||
link: http://ungleich.ch
|
||||
---
|
||||
feature1_title: Have your own
|
||||
---
|
||||
You can provide search results from your own web sites without having
|
||||
to rely on google.
|
||||
---
|
||||
feature2_title: Scalable
|
||||
---
|
||||
feature2_text:
|
||||
|
||||
Are you running a small team? Or are you a bigger
|
||||
organisation? There is an instance that works for each of your
|
||||
cases.
|
||||
---
|
||||
feature3_title: Open Source
|
||||
---
|
||||
feature3_text:
|
||||
|
||||
The chat server only consists of Open Source
|
||||
Software. The software can easily be audited by third parties and its
|
||||
security verified. It also does not lock you in with us. If you are
|
||||
ever not happy with our service, you can take the data and host the
|
||||
chat server somewhere else.
|
||||
---
|
||||
offer1_title: Regular
|
||||
---
|
||||
offer1_text: text of offer
|
||||
---
|
||||
offer1_link: text of offer
|
||||
---
|
||||
offer2_title: Pro
|
||||
---
|
||||
offer2_text: text of offer
|
||||
---
|
||||
offer2_link: link of offer
|
||||
---
|
||||
offer3_title: Starter
|
||||
---
|
||||
offer3_text: text of offer
|
||||
---
|
||||
offer3_link: link of offer
|
||||
---
|
||||
content1_text: Text of the first content block
|
||||
---
|
||||
content1_image: https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg
|
||||
---
|
8
content/u/products/storage-glarnercloud/contents.lr
Normal file
8
content/u/products/storage-glarnercloud/contents.lr
Normal file
|
@ -0,0 +1,8 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
title: Cloud Storage
|
||||
---
|
||||
subtitle: Stored safely in Switzerland
|
||||
---
|
|
@ -1,66 +0,0 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
_model: testproduct
|
||||
---
|
||||
title: IPv6 VPN
|
||||
---
|
||||
subtitle: The IPv6 VPN allows you to reach the IPv6 Internet from everywhere!
|
||||
---
|
||||
link: http://ungleich.ch
|
||||
---
|
||||
feature1_title: title of feature
|
||||
---
|
||||
feature1_text: text of feature
|
||||
---
|
||||
feature3_title: title of feature
|
||||
---
|
||||
feature3_text: text of feature
|
||||
---
|
||||
offer1_title: title of offer
|
||||
---
|
||||
offer1_text: text of offer
|
||||
---
|
||||
offer1_link: text of offer
|
||||
---
|
||||
offer2_title: title of offer
|
||||
---
|
||||
offer2_text: text of offer
|
||||
---
|
||||
offer2_link: link of offer
|
||||
---
|
||||
offer3_title: title of offer
|
||||
---
|
||||
offer3_text: text of offer
|
||||
---
|
||||
offer3_link: link of offer
|
||||
---
|
||||
upper_content: upper content
|
||||
---
|
||||
lower_content: lower content
|
||||
---
|
||||
content1_text: Text of the first content block
|
||||
---
|
||||
content1_image: https://hack4glarus.ch/static/ungleich_page/img/logo_black.svg
|
||||
---
|
||||
---
|
||||
---
|
||||
|
||||
description:
|
||||
|
||||
Something about the product
|
||||
|
||||
## Feature 1
|
||||
|
||||
...
|
||||
|
||||
## Feature 2
|
||||
|
||||
Something else
|
||||
|
||||
## Feature 3
|
||||
|
||||
and so on
|
||||
|
||||
so on
|
|
@ -1,46 +0,0 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
_model: testproduct
|
||||
---
|
||||
title: IPv6 VPN
|
||||
---
|
||||
subtitle: The IPv6 VPN allows you to reach the IPv6 Internet from everywhere!
|
||||
---
|
||||
link: http://ungleich.ch
|
||||
---
|
||||
feature1_title: title of feature
|
||||
---
|
||||
feature1_text: text of feature
|
||||
---
|
||||
feature2_title: title of feature
|
||||
---
|
||||
feature2_text: text of feature
|
||||
---
|
||||
feature3_title: title of feature
|
||||
---
|
||||
feature3_text: text of feature
|
||||
---
|
||||
offer1_title: title of offer
|
||||
---
|
||||
offer1_text: text of offer
|
||||
---
|
||||
offer1_link: text of offer
|
||||
---
|
||||
offer2_title: title of offer
|
||||
---
|
||||
offer2_text: text of offer
|
||||
---
|
||||
offer2_link: link of offer
|
||||
---
|
||||
offer3_title: title of offer
|
||||
---
|
||||
offer3_text: text of offer
|
||||
---
|
||||
offer3_link: link of offer
|
||||
---
|
||||
upper_content: upper content
|
||||
---
|
||||
lower_content: lower content
|
||||
---
|
8
content/u/products/virtual-machine-hosting/contents.lr
Normal file
8
content/u/products/virtual-machine-hosting/contents.lr
Normal file
|
@ -0,0 +1,8 @@
|
|||
_discoverable: yes
|
||||
---
|
||||
_hidden: no
|
||||
---
|
||||
title: Virtual Machine Hosting
|
||||
---
|
||||
subtitle: Sustainable, green and safe
|
||||
---
|
|
@ -3,22 +3,96 @@ name = Product
|
|||
label = {{ this.title }}
|
||||
hidden = yes
|
||||
|
||||
[fields.name]
|
||||
label = Product Name
|
||||
[fields.title]
|
||||
label = Title of the product
|
||||
type = string
|
||||
size = large
|
||||
|
||||
[fields.abstract]
|
||||
label = Abstract
|
||||
[fields.subtitle]
|
||||
label = Subtitle
|
||||
type = string
|
||||
width = 1/2
|
||||
|
||||
[fields.description]
|
||||
label = Description
|
||||
type = string
|
||||
width = 1/4
|
||||
type = markdown
|
||||
|
||||
[fields.link]
|
||||
label = Link
|
||||
type = url
|
||||
width = 1/4
|
||||
|
||||
[fields.feature1_title]
|
||||
label = Feature1 Title
|
||||
type = string
|
||||
|
||||
[fields.feature2_title]
|
||||
label = Feature2 Title
|
||||
type = string
|
||||
|
||||
[fields.feature3_title]
|
||||
label = Feature3 Title
|
||||
type = string
|
||||
|
||||
[fields.feature1_text]
|
||||
label = Feature1 Text
|
||||
type = text
|
||||
|
||||
[fields.feature2_text]
|
||||
label = Feature2 Text
|
||||
type = text
|
||||
|
||||
[fields.feature3_text]
|
||||
label = Feature3 Text
|
||||
type = text
|
||||
|
||||
[fields.content1_text]
|
||||
label = Content1 Text
|
||||
type = text
|
||||
|
||||
[fields.content1_image]
|
||||
label = Content 1 Image
|
||||
type = url
|
||||
|
||||
[fields.content2_text]
|
||||
label = Content 2 Text
|
||||
type = text
|
||||
|
||||
[fields.content2_image]
|
||||
label = Content 2 Image
|
||||
type = url
|
||||
|
||||
[fields.offer1_title]
|
||||
label = Offer 1 Title
|
||||
type = string
|
||||
|
||||
[fields.offer1_text]
|
||||
label = Offer 1 Text
|
||||
type = text
|
||||
|
||||
[fields.offer1_link]
|
||||
label = Offer 1 Link
|
||||
type = url
|
||||
|
||||
[fields.offer2_title]
|
||||
label = Offer 2 Title
|
||||
type = string
|
||||
|
||||
[fields.offer2_text]
|
||||
label = Offer 2 Text
|
||||
type = text
|
||||
|
||||
[fields.offer2_link]
|
||||
label = Offer 2 Link
|
||||
type = url
|
||||
|
||||
[fields.offer3_title]
|
||||
label = Offer 3 Title
|
||||
type = string
|
||||
|
||||
[fields.offer3_text]
|
||||
label = Offer 3 Text
|
||||
type = text
|
||||
|
||||
[fields.offer3_link]
|
||||
label = Offer 3 Link
|
||||
type = url
|
||||
|
|
|
@ -6,3 +6,6 @@ hidden = yes
|
|||
[fields.title]
|
||||
label = Title
|
||||
type = string
|
||||
|
||||
[children]
|
||||
model = product
|
|
@ -1,54 +0,0 @@
|
|||
[model]
|
||||
name = Product
|
||||
label = {{ this.title }}
|
||||
hidden = yes
|
||||
|
||||
[fields.title]
|
||||
label = Title of the product
|
||||
type = string
|
||||
size = large
|
||||
|
||||
[fields.subtitle]
|
||||
label = Subtitle
|
||||
type = string
|
||||
|
||||
[fields.description]
|
||||
label = Description
|
||||
type = markdown
|
||||
|
||||
[fields.link]
|
||||
label = Link
|
||||
type = url
|
||||
width = 1/4
|
||||
|
||||
[fields.feature1_title]
|
||||
label = Feature1 Title
|
||||
type = string
|
||||
|
||||
[fields.feature2_title]
|
||||
label = Feature2 Title
|
||||
type = string
|
||||
|
||||
[fields.feature3_title]
|
||||
label = Feature3 Title
|
||||
type = string
|
||||
|
||||
[fields.feature1_text]
|
||||
label = Feature1 Text
|
||||
type = string
|
||||
|
||||
[fields.feature2_text]
|
||||
label = Feature2 Text
|
||||
type = string
|
||||
|
||||
[fields.feature3_text]
|
||||
label = Feature3 Text
|
||||
type = string
|
||||
|
||||
[fields.content1_text]
|
||||
label = Content1 Text
|
||||
type = string
|
||||
|
||||
[fields.content1_image]
|
||||
label = Content1 Image
|
||||
type = url
|
|
@ -5,8 +5,11 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- Bootstrap CSS -->
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
|
||||
<!-- Bootstrap + helpers2 -->
|
||||
<link rel="stylesheet"
|
||||
href="/u/static/bootstrap-4.4.1-dist/css/bootstrap.min.css">
|
||||
|
||||
|
||||
|
||||
<title>{% block title %}Welcome to {% endblock %} | ungleich.ch</title>
|
||||
</head>
|
||||
|
@ -23,10 +26,16 @@
|
|||
<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>
|
||||
<a class="nav-link" href="/blog/">Old Blog<a/>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/u/blog/">New Blog<a/>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="https://chat.ungleich.ch/">Chat<a/>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#">Link</a>
|
||||
<a class="nav-link" href="/u/products/">Products</a>
|
||||
</li>
|
||||
</ul>
|
||||
<form class="form-inline my-2 my-lg-0"
|
||||
|
@ -57,5 +66,13 @@
|
|||
<a class=footer-link href="https://ungleich.ch">ungleich</a>.</span>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- slow javascript at the end -->
|
||||
<script type="text/javascript"
|
||||
src="/u/static/js/jquery-3.4.1.min.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="/u/static/popper.js-1.16.0/dist/esm/popper.min.js"></script>
|
||||
<script type="text/javascript"
|
||||
src="/u/static/bootstrap-4.4.1-dist/js/bootstrap.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,34 +1,87 @@
|
|||
{% extends "layout.html" %}
|
||||
{% from "macros/blog.html" import render_blog_post %}
|
||||
{% from "macros/pagination.html" import render_pagination %}
|
||||
{% extends "layout-2020.html" %}
|
||||
{% 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>
|
||||
{% block subtitle %}{{ this.subtitle }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature1_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature1_text }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature2_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature2_text }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature3_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature3_text }}</p>
|
||||
</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 class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
{{ this.content1_text }}
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
{% if this.content1_image %}
|
||||
<img src="{{ this.content1_image }}" class="img-fluid">
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-4">
|
||||
{% if this.offer1_title and this.offer1_text and this.offer1_link %}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer1_title }}</h5>
|
||||
<p class="card-text">{{ this.offer1_text }}</p>
|
||||
<a href="{{ this.offer1_link }}" class="btn btn-primary">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
{% if this.offer2_title and this.offer2_text and this.offer2_link %}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer2_title }}</h5>
|
||||
<p class="card-text">{{ this.offer2_text }}</p>
|
||||
<a href="{{ this.offer2_link }}" class="btn btn-primary">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
{% if this.offer3_title and this.offer3_text and this.offer3_link %}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ this.offer3_title }}</h5>
|
||||
<p class="card-text">{{ this.offer3_text }}</p>
|
||||
<a href="{{ this.offer3_link }}" class="btn btn-primary">Order</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
{{ this.content2_text }}
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
{% if this.content2_image %}
|
||||
<img src="{{ this.content2_image }}" class="img-fluid">
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,37 +1,31 @@
|
|||
{% extends "layout.html" %}
|
||||
{% from "macros/blog.html" import render_blog_post %}
|
||||
{% from "macros/pagination.html" import render_pagination %}
|
||||
{% extends "layout-2020.html" %}
|
||||
{% block title %}{{ this.title }}{% endblock %}
|
||||
{% block body %}
|
||||
{% block content %}
|
||||
|
||||
<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>Products</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}}</h2>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{product.teaser}}
|
||||
{% for product in this.children %}
|
||||
{% if loop.first %}
|
||||
<div class="row mb-3">
|
||||
{% endif %}
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ product.title }}</h5>
|
||||
<p class="card-text">{{ product.subtitle }}</p>
|
||||
<a class="btn btn-primary" href="{{ product|url }}">Check it out</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% if loop.index is divisibleby 3 %}
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="row">
|
||||
{% endif %}
|
||||
{% if loop.last %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,82 +0,0 @@
|
|||
{% extends "layout-2020.html" %}
|
||||
{% block title %}{{ this.title }}{% endblock %}
|
||||
{% block subtitle %}{{ this.subtitle }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature1_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature1_text }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature2_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature2_text }}</p>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<h3 class="font-weight-normal">{{ this.feature3_title }}</h3>
|
||||
<p class="font-weight-normal">{{ this.feature3_text }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
{{ this.content1_text }}
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
{% if this.content1_image %}
|
||||
<img src="{{ this.content1_image }}" class="img-fluid">
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-4">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Offer 1</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">Offer 2</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">Offer 3</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>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div class="container">
|
||||
<div class="row mb-3">
|
||||
<div class="col-md-7">
|
||||
{{ this.content2_text }}
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
{% if this.content2_image %}
|
||||
<img src="{{ this.content2_image }}" class="img-fluid">
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
Loading…
Reference in a new issue