Diff -- /var/www/vhosts/3dshawn.com/shop.3dshawn.com/TEMPLATES/store_layouts/gallery.html

O Operator
Diff

/var/www/vhosts/3dshawn.com/shop.3dshawn.com/TEMPLATES/store_layouts/gallery.html

added on local at 2026-07-01 22:10:03

Added
+132
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to ec9dca9ce082
Restore this content →
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.
1<!-- =====================================================================
2 LAYOUT: Gallery Wall
3 Masonry image grid. Minimal text per card, hover reveals details.
4 Best for image-first sellers. Scenery, dioramas, big variety.
5===================================================================== -->
6
7<style>
8:root { $theme_css_vars }
9
10/* Masonry-style grid using CSS columns. Each card breaks into the
11 appropriate column at runtime. Hover reveals title/price overlay. */
12.gw-grid { column-count: 4; column-gap: 12px; }
13@media (max-width: 1100px) { .gw-grid { column-count: 3; } }
14@media (max-width: 750px) { .gw-grid { column-count: 2; } }
15@media (max-width: 480px) { .gw-grid { column-count: 1; } }
16.gw-tile {
17 display: block;
18 break-inside: avoid;
19 margin-bottom: 12px;
20 position: relative;
21 border-radius: 8px;
22 overflow: hidden;
23 border: 1px solid var(--col-border);
24 text-decoration: none;
25}
26.gw-tile img { width: 100%; display: block; }
27.gw-tile .gw-meta {
28 position: absolute; left: 0; right: 0; bottom: 0;
29 padding: 14px;
30 background: linear-gradient(0deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.0) 100%);
31 color: #fff;
32 opacity: 0;
33 transform: translateY(8px);
34 transition: opacity 0.2s, transform 0.2s;
35}
36.gw-tile:hover .gw-meta { opacity: 1; transform: translateY(0); }
37.gw-tile:hover { border-color: var(--col-accent); }
38</style>
39
40[if:$preview_banner]
41<div style="position:sticky;top:0;z-index:9999;background:#0a0e1c;border-bottom:1px solid rgba(59,130,246,0.40);box-shadow:0 4px 16px rgba(0,0,0,0.55);padding:10px 20px;text-align:center;font-size:13px;color:#93c5fd;font-weight:600">
42 $preview_banner
43</div>
44[/if]
45
46<header style="background:var(--col-bg);padding:24px 32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--col-border);flex-wrap:wrap">
47 <a href="/store.cgi?id=$store_id" style="display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0">
48 <div class="brand-mark" style="background:linear-gradient(130deg, var(--col-accent), var(--col-accent-bright))">$store_initials</div>
49 <div>
50 <div style="font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--col-text)">$store_name</div>
51 <div style="font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--col-text-3)">Gallery</div>
52 </div>
53 </a>
54 <nav style="display:flex;gap:18px;align-items:center;flex-wrap:wrap">
55 [loop:@nav_pages]<a href="$loop1.href" style="font-size:13px;color:var(--col-text-2);font-weight:600;text-decoration:none">$loop1.title</a>[/loop]
56 </nav>
57 <div style="flex:1;display:flex;justify-content:center;min-width:0">$store_search_form</div>
58 <div style="display:flex;gap:10px;align-items:center">
59 </div>
60 <div style="display:inline-flex;gap:8px;align-items:center;margin-left:8px">$store_signin_link $store_cart_link</div>
61</header>
62
63[if:$is_specific_page]
64 [if:$page_not_found]
65 <section style="padding:120px 32px;text-align:center;max-width:600px;margin:0 auto">
66 <h1 class="hero-title" style="font-size:48px">Page not found</h1>
67 <a href="/store.cgi?id=$store_id" class="btn btn-primary btn-lg">Back to home</a>
68 </section>
69 [/if]
70 [if:!$page_not_found]
71 <section style="padding:80px 32px 60px;max-width:900px;margin:0 auto">
72 <h1 class="hero-title" style="font-size:48px">$page_title</h1>
73 <div class="text-secondary" style="font-size:17px;line-height:1.7;margin-top:24px;white-space:pre-wrap">$page_body</div>
74 </section>
75 [/if]
76[/if]
77
78[if:!$is_specific_page]
79<!-- Slim hero -->
80<section style="padding:48px 32px;max-width:1500px;margin:0 auto;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;border-bottom:1px solid var(--col-border)">
81 <div>
82 <h1 style="font-family:var(--font-display);font-size:clamp(36px,5vw,56px);font-weight:700;letter-spacing:-0.02em;line-height:1.05;color:var(--col-text);margin:0">A wall of $product_count items.</h1>
83 <p style="font-size:15px;color:var(--col-text-2);max-width:600px;margin-top:12px;line-height:1.6">$store_tagline</p>
84 </div>
85 <div style="display:flex;gap:8px">
86 <a href="#" class="btn btn-ghost btn-sm">All</a>
87 <a href="#" class="btn btn-ghost btn-sm">Minis</a>
88 <a href="#" class="btn btn-ghost btn-sm">Terrain</a>
89 <a href="#" class="btn btn-ghost btn-sm">Sets</a>
90 </div>
91</section>
92
93<!-- Masonry gallery -->
94<section id="shop" style="padding:24px 24px 60px;max-width:1500px;margin:0 auto">
95 [if:$has_products]
96 <div class="gw-grid">
97 [loop:@products]
98 <a href="/listing_details.cgi?id=$loop1.id" class="gw-tile">
99 <img src="$loop1.hero_image" alt="$loop1.title" loading="lazy">
100 <div class="gw-meta">
101 <div style="font-size:14px;font-weight:700">$loop1.title</div>
102 <div style="display:flex;justify-content:space-between;align-items:center;margin-top:4px">
103 <span style="font-size:13px">$loop1.price</span>
104 <span style="font-size:11px;opacity:0.8">$loop1.rating_n reviews</span>
105 </div>
106 </div>
107 </a>
108 [/loop]
109 $pagination_html
110 </div>
111 [/if]
112
113 [if:!$has_products]
114 <div class="card" style="text-align:center;padding:64px 32px">
115 <div style="font-family:var(--font-display);font-size:24px;color:var(--col-text)">The gallery is being hung</div>
116 <p class="text-secondary" style="margin-top:8px">Items will appear here as they're added.</p>
117 </div>
118 [/if]
119</section>
120
121<!-- About -->
122<section id="about" style="background:var(--col-bg-2);padding:60px 32px;border-top:1px solid var(--col-border)">
123 <div style="max-width:800px;margin:0 auto;text-align:center">
124 <h2 style="font-family:var(--font-display);font-size:32px;color:var(--col-text);font-weight:700">About the gallery</h2>
125 <p style="font-size:15px;color:var(--col-text-2);line-height:1.8;margin-top:16px">$store_about</p>
126 </div>
127</section>
128[/if]
129
130<footer style="border-top:1px solid var(--col-border);padding:24px 32px;text-align:center">
131 <div class="text-xs text-dim" style="letter-spacing:1.5px;text-transform:uppercase">$store_name &middot; powered by shop.3dshawn.com</div>
132</footer>