feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
This commit is contained in:
39
themes/vivespos/pages/blog.htm
Normal file
39
themes/vivespos/pages/blog.htm
Normal file
@@ -0,0 +1,39 @@
|
||||
title = "Blog — VivesPOS"
|
||||
meta_title = "Blog — VivesPOS"
|
||||
meta_description = "Consejos, guias y noticias sobre puntos de venta, retail en Mexico y VivesPOS."
|
||||
url = "/blog"
|
||||
layout = "default"
|
||||
|
||||
[blogPosts]
|
||||
postsPerPage = 9
|
||||
postPage = "blog/post"
|
||||
sortOrder = "published_at desc"
|
||||
noPostsMessage = "Pronto publicaremos articulos. Vuelve pronto!"
|
||||
==
|
||||
<section class="py-5 py-md-6">
|
||||
<div class="container">
|
||||
<div class="text-center mb-5">
|
||||
<p class="eyebrow eyebrow-blue mb-2">Blog VivesPOS</p>
|
||||
<h1 class="display-5 fw-bold mb-2">Consejos para tu negocio</h1>
|
||||
<p class="lead text-muted">Guias sobre retail, puntos de venta y tecnologia para Mexico.</p>
|
||||
</div>
|
||||
<div class="row g-4">
|
||||
{% for post in posts %}
|
||||
<div class="col-md-6 col-lg-4">
|
||||
<div class="card border-0 shadow-sm h-100 rounded-4 overflow-hidden">
|
||||
<div class="card-body p-4">
|
||||
<p class="text-muted small mb-2">{{ post.published_at|date('d M Y') }}</p>
|
||||
<h3 class="h5 fw-bold mb-2">{{ post.title }}</h3>
|
||||
<p class="text-muted small mb-3">{{ post.summary|default(post.content|striptags|slice(0, 120)) }}...</p>
|
||||
<a href="{{ '/blog/post'|page({ slug: post.slug }) }}" class="text-brand text-decoration-none fw-semibold small">Leer mas →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="col-12 text-center py-5">
|
||||
<p class="text-muted">{{ noPostsMessage }}</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
25
themes/vivespos/pages/blog/post.htm
Normal file
25
themes/vivespos/pages/blog/post.htm
Normal file
@@ -0,0 +1,25 @@
|
||||
title = "Articulo — Blog VivesPOS"
|
||||
meta_title = "{{ post.title }} — VivesPOS Blog"
|
||||
meta_description = "{{ post.summary|default('') }}"
|
||||
url = "/blog/post/:slug"
|
||||
layout = "default"
|
||||
|
||||
[blogPost]
|
||||
slug = "{{ :slug }}"
|
||||
==
|
||||
{% set post = blogPost.post %}
|
||||
<section class="py-5 py-md-6">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<p class="text-muted small mb-2">{{ post.published_at|date('d M Y') }}</p>
|
||||
<h1 class="display-6 fw-bold mb-4">{{ post.title }}</h1>
|
||||
<div class="post-content">
|
||||
{{ post.content|raw }}
|
||||
</div>
|
||||
<hr class="my-4">
|
||||
<a href="{{ '/blog'|page }}" class="text-brand text-decoration-none fw-semibold">← Volver al blog</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
39
themes/vivespos/pages/contacto.htm
Normal file
39
themes/vivespos/pages/contacto.htm
Normal file
@@ -0,0 +1,39 @@
|
||||
title = "Contacto — VivesPOS"
|
||||
meta_title = "Contacto — VivesPOS"
|
||||
meta_description = "Contactanos por WhatsApp o formulario. Respuesta en menos de 2 horas habiles."
|
||||
url = "/contacto"
|
||||
layout = "default"
|
||||
==
|
||||
<section class="py-5 py-md-6">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<div class="text-center mb-5">
|
||||
<p class="eyebrow eyebrow-blue mb-2">Contacto</p>
|
||||
<h1 class="display-5 fw-bold mb-2">Habla con nosotros</h1>
|
||||
<p class="lead text-muted">Estamos aqui para ayudarte. Sin compromiso, sin spam.</p>
|
||||
</div>
|
||||
<div class="card border-0 shadow-sm rounded-4 p-4">
|
||||
<div class="row g-4">
|
||||
<div class="col-md-6">
|
||||
<h3 class="h5 fw-bold mb-3">WhatsApp directo</h3>
|
||||
<p class="text-muted small mb-3">La forma mas rapida de contactarnos. Te respondemos en minutos durante horario habil.</p>
|
||||
<a href="https://wa.me/523317025248?text=Hola%2C%20quiero%20mas%20info%20de%20VivesPOS" class="btn btn-brand-cta w-100 mb-3" target="_blank" rel="noopener">
|
||||
<i class="bi-whatsapp me-2"></i>+52 33 1702 5248
|
||||
</a>
|
||||
<p class="text-muted small mb-0">Horario: L-V 9:00-18:00 CST</p>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<h3 class="h5 fw-bold mb-3">Soporte para clientes</h3>
|
||||
<p class="text-muted small mb-3">Ya eres cliente de VivesPOS? Abre un ticket y te ayudamos.</p>
|
||||
<a href="https://wa.me/523317025248?text=Soy%20cliente%20de%20VivesPOS%20y%20necesito%20soporte" class="btn btn-outline-secondary w-100 mb-3" target="_blank" rel="noopener">
|
||||
<i class="bi-life-preserver me-2"></i>Abrir ticket de soporte
|
||||
</a>
|
||||
<p class="text-muted small mb-0">Respuesta max 6h habiles (Premium)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
20
themes/vivespos/pages/home.htm
Normal file
20
themes/vivespos/pages/home.htm
Normal file
@@ -0,0 +1,20 @@
|
||||
title = "VivesPOS — Punto de Venta Offline-First para Mexico"
|
||||
meta_title = "VivesPOS — Punto de Venta Offline-First para Mexico"
|
||||
meta_description = "Punto de venta offline-first. Vende sin internet, tus datos siempre tuyos. Keyboard-first, scanner de codigo de barras, corte X/Z, impresion ESC/POS. Windows y Linux."
|
||||
url = "/"
|
||||
layout = "default"
|
||||
|
||||
[blogPosts]
|
||||
postsPerPage = 3
|
||||
postPage = "blog/post"
|
||||
sortOrder = "published_at desc"
|
||||
noPostsMessage = "Pronto publicaremos articulos. Vuelve pronto!"
|
||||
==
|
||||
{% partial 'home/hero' %}
|
||||
{% partial 'home/features' %}
|
||||
{% partial 'home/modes' %}
|
||||
{% partial 'home/screenshots' %}
|
||||
{% partial 'home/pricing' %}
|
||||
{% partial 'home/comparison' %}
|
||||
{% partial 'home/faq' %}
|
||||
{% partial 'home/cta' %}
|
||||
Reference in New Issue
Block a user