Make search more prominent.

This commit is contained in:
Sergiotarxz 2025-01-06 03:07:09 +01:00
parent c5d7e160e9
commit efbce18b1e
13 changed files with 411 additions and 179 deletions

View File

@ -65,6 +65,7 @@ document.addEventListener("DOMContentLoaded", function () {
fakeSearchInput = searchMobile.querySelector('input') fakeSearchInput = searchMobile.querySelector('input')
addListenersSearch() addListenersSearch()
} }
addListenersSearchOverlay();
const cookies = document.cookie.split(";").map((cookie) => { const cookies = document.cookie.split(";").map((cookie) => {
let [key, value] = cookie.split("="); let [key, value] = cookie.split("=");
@ -83,6 +84,12 @@ document.addEventListener("DOMContentLoaded", function () {
function startSearchTutorial() { function startSearchTutorial() {
console.log('Showing how to use search'); console.log('Showing how to use search');
const tutorialOverlay = document.querySelector('.tutorial-overlay-step-1');
if (tutorialOverlay === null) {
console.error('tutorialOverlay missing');
return;
}
// tutorialOverlay.classList.remove('hidden');
} }
function markSearchTutorialAsSeen() { function markSearchTutorialAsSeen() {
@ -174,10 +181,8 @@ function addListenersSearch() {
const searchOverlay = document.querySelector('div.search-overlay'); const searchOverlay = document.querySelector('div.search-overlay');
const searchInput = searchOverlay.querySelector('div.search input'); const searchInput = searchOverlay.querySelector('div.search input');
fakeSearchInput.value = searchInput.value; fakeSearchInput.value = searchInput.value;
exitSearch.addEventListener('click', onExitSearch) if (exitSearch !== null) {
const search = document.querySelector('div.search-overlay div.search input'); exitSearch.addEventListener('click', onExitSearch)
if (search !== null) {
search.addEventListener('change', onSearchChange);
} }
const searchIconDesktop = document.querySelector('nav.desktop a.search-icon'); const searchIconDesktop = document.querySelector('nav.desktop a.search-icon');
if (searchIconDesktop !== null) { if (searchIconDesktop !== null) {
@ -187,6 +192,13 @@ function addListenersSearch() {
} }
} }
function addListenersSearchOverlay() {
const search = document.querySelector('div.search-overlay div.search input');
if (search !== null) {
search.addEventListener('change', onSearchChange);
}
}
function searchInWebsite(value, isToBottom) { function searchInWebsite(value, isToBottom) {
window.find(value, false, !isToBottom, true) window.find(value, false, !isToBottom, true)
const selection = window.getSelection() const selection = window.getSelection()
@ -247,8 +259,34 @@ function onSearchChange() {
'event': 'realsearch_term_keyup', 'event': 'realsearch_term_keyup',
'term': search.value, 'term': search.value,
}); });
fakeSearchInput.value = search.value if (fakeSearchInput !== undefined && fakeSearchInput !== null) {
fakeSearchInput.value = search.value
}
let found = search.value.match(/^#(\S+?)(?:\:(\S+?))?$/);
const port = _port() const port = _port()
if (found) {
let attributeUrlPart = found[2];
console.log(attributeUrlPart);
if (attributeUrlPart === undefined) {
attributeUrlPart = '';
}
console.log(attributeUrlPart);
if (attributeUrlPart !== '') {
attributeUrlPart = '/atributo/' + attributeUrlPart;
}
console.log(attributeUrlPart);
const checkHashstagUrl = new URL(window.location.protocol
+ "//"
+ window.location.hostname
+ port
+ '/' + found[1] + attributeUrlPart);
fetch(checkHashstagUrl).then((res) => {
if (res.status === 200) {
window.location = checkHashstagUrl;
}
});
return;
}
const url = new URL(window.location.protocol const url = new URL(window.location.protocol
+ "//" + "//"
+ window.location.hostname + window.location.hostname

View File

@ -2,6 +2,33 @@ html {
height: 100%; height: 100%;
touch-action: none; } touch-action: none; }
div.open-browser-container {
display: flex;
justify-content: start;
width: 100%;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
background: #f2eb8c;
color: blueviolet; }
div.open-browser-container a.open-in-browser {
text-decoration: none;
display: flex;
justify-content: space-between;
width: calc(100% - 20px);
align-items: center;
margin-left: 10px;
margin-right: 10px; }
div.open-browser-container a.open-in-browser img {
display: block;
height: 2rem;
width: 2rem;
margin-right: 0px;
margin-left: 0px; }
div.open-browser-container a.open-in-browser span {
display: block; }
body { body {
margin: 0; margin: 0;
padding: 0; padding: 0;
@ -36,6 +63,43 @@ body {
align-items: center; align-items: center;
vertical-align: middle; vertical-align: middle;
margin-bottom: 0.15em; } margin-bottom: 0.15em; }
body div.tutorial-overlay-step-1 {
position: fixed;
display: block;
width: 100%;
height: 100%;
background: rgba(100, 100, 100, 0.5);
top: 0%;
z-index: 999; }
body div.tutorial-overlay-step-1 > .explanation {
position: absolute;
left: 10px;
color: aquamarine;
background: rgba(100, 100, 100, 0.5);
width: 230px;
text-align: center;
border-radius: 10px;
border: solid 3px black;
font-size: 30px;
top: calc(100% - 80px - 203px - 90px); }
body div.tutorial-overlay-step-1 > .arrow {
position: absolute;
left: 90px;
top: calc(100% - 80px - 203px);
display: block; }
body div.tutorial-overlay-step-1.hidden {
display: none; }
body div.search-results > div.description {
display: flex;
align-items: center;
flex-direction: column;
background: #2160c4;
border: solid #9dc1fa 0.3rem;
color: white;
font-weight: bold;
border-radius: 20px;
width: calc(100% - 20px - 0.6rem);
padding: 10px; }
body div.search-overlay { body div.search-overlay {
overflow-y: scroll; overflow-y: scroll;
display: none; display: none;
@ -46,9 +110,11 @@ body {
z-index: 3; z-index: 3;
top: 0; top: 0;
flex-direction: column; } flex-direction: column; }
body div.search-overlay.active { body div.search-overlay.default div.search-results {
display: flex; } height: calc(100% - 80px - 2rem);
overflow-x: scroll; }
body div.search-overlay div.search-results { body div.search-overlay div.search-results {
height: calc(100% - 80px);
margin: 7px; } margin: 7px; }
body div.search-overlay div.search-results img { body div.search-overlay div.search-results img {
width: 75px; } width: 75px; }
@ -57,6 +123,12 @@ body {
flex-direction: row; } flex-direction: row; }
body div.search-overlay div.search-results div.search-result div.row-title-url-image img { body div.search-overlay div.search-results div.search-result div.row-title-url-image img {
margin: 10px; } margin: 10px; }
body div.search-overlay div.search-results div.search-result p {
background: aliceblue;
width: fit-content;
padding: 20px;
margin-left: 90px;
margin-right: 20px; }
body div.search-overlay div.bounding-search-bar { body div.search-overlay div.bounding-search-bar {
position: fixed; position: fixed;
top: calc(100% - 74px); top: calc(100% - 74px);
@ -65,11 +137,6 @@ body {
border-radius: 10px; border-radius: 10px;
height: 60px; height: 60px;
display: flex; } display: flex; }
body div.search-overlay div.bounding-search-bar div.search {
width: calc(100% - 60px);
height: 60px;
margin-left: 0px;
margin-right: 0px; }
body div.search-overlay div.bounding-search-bar a.up, body div.search-overlay div.bounding-search-bar a.down { body div.search-overlay div.bounding-search-bar a.up, body div.search-overlay div.bounding-search-bar a.down {
display: none; } display: none; }
body div.search-overlay div.bounding-search-bar a.exit-search { body div.search-overlay div.bounding-search-bar a.exit-search {
@ -344,14 +411,9 @@ body {
position: absolute; position: absolute;
left: 80px; left: 80px;
top: 10%; top: 10%;
width: Min(calc(100% - 90px * 2), 500px); width: Min(calc(100% - 120px), 500px);
height: 80%; height: 80%;
border-radius: 10px; } border-radius: 10px; }
body nav.mobile-shortcuts a.menu-expand {
position: absolute;
left: Min(calc(100% - 80px), 600px);
top: 0;
align-self: end; }
body div.page-contents { body div.page-contents {
background: #FEFEFA; background: #FEFEFA;
position: fixed; position: fixed;
@ -463,44 +525,8 @@ body {
body div.page-contents div.description a.suscribe-category-rss img { body div.page-contents div.description a.suscribe-category-rss img {
width: 40px; width: 40px;
height: 40px; } height: 40px; }
body div.page-contents div.open-browser-container {
display: flex;
justify-content: start;
width: 100%;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
background: #f2eb8c;
color: blueviolet; }
body div.page-contents div.open-browser-container a.open-in-browser {
text-decoration: none;
display: flex;
justify-content: space-between;
width: calc(100% - 20px);
align-items: center;
margin-left: 10px;
margin-right: 10px; }
body div.page-contents div.open-browser-container a.open-in-browser img {
display: block;
height: 2rem;
width: 2rem;
margin-right: 0px;
margin-left: 0px; }
body div.page-contents div.open-browser-container a.open-in-browser span {
display: block; }
body div.page-contents div.open-browser-container.android { body div.page-contents div.open-browser-container.android {
display: none; } display: none; }
body div.page-contents div.easter-egg {
display: flex;
justify-content: center; }
body div.page-contents div.burguillos-logo-container.active {
border: solid 1px black;
border-radius: 50%;
filter: invert(1); }
body div.page-contents div.burguillos-logo-container {
padding: 40px;
width: 120px; }
body div.page-contents h1 { body div.page-contents h1 {
text-align: center; } text-align: center; }
body div.page-contents div.footer p, body div.page-contents div.footer h1, body div.page-contents div.footer h2, body div.page-contents div.footer h3, body div.page-contents div.footer h4, body div.page-contents div.footer a { body div.page-contents div.footer p, body div.page-contents div.footer h1, body div.page-contents div.footer h2, body div.page-contents div.footer h3, body div.page-contents div.footer h4, body div.page-contents div.footer a {
@ -511,6 +537,32 @@ body {
width: 20px; width: 20px;
height: 20px; } height: 20px; }
div.easter-egg {
display: flex;
justify-content: center; }
div.burguillos-logo-container.active {
filter: invert(1); }
div.burguillos-logo-container {
width: 120px; }
div.search-overlay div.search {
width: calc(100% - 60px);
height: 60px;
margin-left: 0px;
margin-right: 0px; }
div.search-overlay.active {
display: flex; }
div.search-overlay.default {
display: flex; }
div.search-overlay.default div.search {
width: 100%; }
div.search-overlay.default div.fake-text-box {
width: 100%; }
@media (min-width: 450px) { @media (min-width: 450px) {
body div.page-contents table th, body div.page-contents table td { body div.page-contents table th, body div.page-contents table td {
font-size: 20px; } } font-size: 20px; } }

View File

@ -16,6 +16,39 @@ html {
height: 100%; height: 100%;
touch-action: none; touch-action: none;
} }
div.open-browser-container {
display: flex;
justify-content: start;
width: 100%;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
background: $color_div;
color: $background_div;
a.open-in-browser {
text-decoration: none;
display: flex;
justify-content: space-between;
width: calc(100% - 20px);
align-items: center;
margin-left: 10px;
margin-right: 10px;
img {
display: block;
height: 2rem;
width: 2rem;
margin-right: 0px;
margin-left: 0px;
}
span {
display: block;
}
}
}
body { body {
summary { summary {
@ -54,6 +87,51 @@ body {
margin-bottom: 0.15em; margin-bottom: 0.15em;
} }
div.tutorial-overlay-step-1 {
position: fixed;
display: block;
width: 100%;
height: 100%;
background: rgba(100, 100, 100, 0.5);
top: 0%;
z-index: 999;
& > .explanation {
position: absolute;
left: 10px;
color: aquamarine;
background: rgba(100, 100, 100, 0.5);
width: 230px;
text-align: center;
border-radius: 10px;
border: solid 3px black;
font-size: 30px;
top: calc(100% - 80px - 203px - 90px);
}
& > .arrow {
position: absolute;
left: 90px;
top: calc(100% - 80px - 203px);
display: block;
}
&.hidden {
display: none;
}
}
div.search-results > div.description {
display: flex;
align-items: center;
flex-direction: column;
background: #2160c4;
border: solid #9dc1fa 0.3rem;
color: white;
font-weight: bold;
border-radius: 20px;
width: calc(100% - 20px - 0.6rem);
padding: 10px;
}
div.search-overlay { div.search-overlay {
overflow-y: scroll; overflow-y: scroll;
display: none; display: none;
@ -65,11 +143,16 @@ body {
top: 0; top: 0;
flex-direction: column; flex-direction: column;
&.active {
display: flex;
}
&.default {
div.search-results {
height: calc(100% - 80px - 2rem);
overflow-x: scroll;
}
}
div.search-results { div.search-results {
height: calc(100% - 80px);
margin: 7px; margin: 7px;
img { img {
@ -85,6 +168,13 @@ body {
margin: 10px; margin: 10px;
} }
} }
p {
background: aliceblue;
width: fit-content;
padding: 20px;
margin-left: 90px;
margin-right: 20px;
}
} }
} }
@ -97,12 +187,6 @@ body {
height: 60px; height: 60px;
display: flex; display: flex;
div.search {
width: calc(100% - 60px);
height: 60px;
margin-left: 0px;
margin-right: 0px;
}
a.up, a.down { a.up, a.down {
display: none; display: none;
@ -502,17 +586,10 @@ body {
position: absolute; position: absolute;
left: 80px; left: 80px;
top: 10%; top: 10%;
width: Min(calc(100% - 90px * 2), 500px); width: Min(calc(100% - 120px), 500px);
height: 80%; height: 80%;
border-radius: 10px; border-radius: 10px;
} }
a.menu-expand {
position: absolute;
left: Min(calc(100% - 80px), 600px);
top: 0;
align-self: end;
}
} }
div.page-contents { div.page-contents {
@ -686,61 +763,11 @@ body {
} }
} }
div.open-browser-container {
display: flex;
justify-content: start;
width: 100%;
margin-left: 0px;
margin-right: 0px;
padding-left: 0px;
padding-right: 0px;
background: $color_div;
color: $background_div;
a.open-in-browser {
text-decoration: none;
display: flex;
justify-content: space-between;
width: calc(100% - 20px);
align-items: center;
margin-left: 10px;
margin-right: 10px;
img {
display: block;
height: 2rem;
width: 2rem;
margin-right: 0px;
margin-left: 0px;
}
span {
display: block;
}
}
}
div.open-browser-container.android { div.open-browser-container.android {
display: none; display: none;
} }
div.easter-egg {
display: flex;
justify-content: center;
}
div.burguillos-logo-container.active {
border: solid 1px black;
border-radius: 50%;
filter: invert(1);
}
div.burguillos-logo-container {
padding: 40px;
width: 120px;
}
div.burguillos-logo-container.active img {}
h1 { h1 {
text-align: center; text-align: center;
@ -763,6 +790,42 @@ body {
} }
} }
div.easter-egg {
display: flex;
justify-content: center;
}
div.burguillos-logo-container.active {
filter: invert(1);
}
div.burguillos-logo-container {
width: 120px;
}
div.burguillos-logo-container.active img {}
div.search-overlay {
div.search {
width: calc(100% - 60px);
height: 60px;
margin-left: 0px;
margin-right: 0px;
}
&.active {
display: flex;
}
&.default {
display: flex;
div.search {
width: 100%;
}
div.fake-text-box {
width: 100%;
}
}
}
@media (min-width: 450px) { @media (min-width: 450px) {
body { body {
div.page-contents { div.page-contents {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

View File

@ -81,9 +81,7 @@
</a> </a>
</div> </div>
</div> </div>
<div class="tutorial-overlay-step-1"> %= include 'page/_search_tutorial'
</div>
<div class="complete-container"> <div class="complete-container">
%= include 'page/_mobile_foldable', categories => $categories %= include 'page/_mobile_foldable', categories => $categories
<div class="contents-without-menu"> <div class="contents-without-menu">
@ -111,7 +109,7 @@
</a> </a>
</div> </div>
% } % }
<%= content %></body> <%= content %>
<div class="description android"> <div class="description android">
<a href="#" class="pin-to-home">Añade esta página a la pantalla de inicio de tu móvil.</a> <a href="#" class="pin-to-home">Añade esta página a la pantalla de inicio de tu móvil.</a>
</div> </div>
@ -131,4 +129,5 @@
</div> </div>
%= include 'page/_mobile_menu', categories => $categories %= include 'page/_mobile_menu', categories => $categories
</div> </div>
</body>
</html> </html>

View File

@ -0,0 +1,94 @@
<!DOCTYPE html>
% my $categories = stash 'categories';
% my $current_category_slug = stash 'current_category_slug';
% my $description_og = stash 'description_og';
% $description_og =~ s/\s+/ /g;
% $description_og = substr $description_og, 0, 157;
% $description_og =~ s/\s\S+$//;
% $description_og.='...';
% my $base_url = config 'base_url';
% use Time::Piece;
% my $t = Time::Piece->new();
% my $year = $t->year;
% my $search_term = stash 'search_term' // '';
% if ($search_term eq '#index') {
% $search_term = '';
% }
<html lang="es">
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P9K5VBGN');</script>
<!-- End Google Tag Manager -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SBSKCCF31B"></script>
<script type="module" src="/js/cookie.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-SBSKCCF31B');
</script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8178723521508611" crossorigin="anonymous"></script>
% my $css_version = config 'css_version';
<script src="/js/bundle.js?v=<%=$css_version%>"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orestbida/cookieconsent@3.0.1/dist/cookieconsent.css"/>
<link rel="stylesheet" href="/css/styles.css?v=<%=$css_version%>"/>
<title><%= title %></title>
<meta charset="UTF-8"/>
<meta name="description" content="<%=defined $description_og ? $description_og : 'Lee más sobre: ' . title %>" />
<meta property="og:description" content="<%=defined $description_og ? $description_og : 'Lee más sobre: ' . title %>" />
<meta property="og:title" content="<%= title %>"/>
<meta property="og:site_name" content="Burguillos Info" />
<meta property="og:type" content="website" />
% my $ogimage = stash 'ogimage';
% say STDERR $ogimage;
% my $user_agent = stash 'useragent';
<meta property="og:url" content="<%=$base_url%><%= url_for %>"/>
% if (defined $ogimage) {
% my $url_for = url_for || '';
<meta itemprop="image" property="og:image" content="<%= $ogimage %>"/>
<meta name="image" content="<%= $ogimage %>"/>
<meta name="twitter:image" content="<%=$ogimage%>" />
% } else {
<meta name="image" property="og:image" content="<%=$base_url%>/img/burguillos.webp?v=4">
<meta name="twitter:image" content="<%=$base_url%>/img/burguillos.webp?v=4">
% }
<meta property="og:image:alt" content="Portada de <%= title %>"/>
<meta name="twitter:card" content="summary_large_image"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<body>
% if (defined $ogimage) {
<img style="display: none;" src="<%= $ogimage %>" alt="Portada de <%= title %>"/>
% }
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P9K5VBGN"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="site-wrapper">
</div>
<div class="search-overlay default">
% if ($is_android) {
<div class="description no-android-app open-browser-container">
<a href="https://play.google.com/store/apps/details?id=info.burguillos.bi" class="open-in-browser">
<img alt="" src="/img/play-store.svg"/>
<span>Prueba nuestra aplicación para Android. Más fácil, mejor.</span>
</a>
</div>
% }
<div class="search-results">
<%= content %>
<p>Burguillos Info ©2022-<%=$year%> Sergio Iglesias</p>
</div>
<div class="bounding-search-bar">
%= include 'page/_search_bar', search_term => $search_term
</div>
</div>
</body>
</html>

View File

@ -1,34 +1,30 @@
% my $posts = stash 'posts'; % my $posts = stash 'posts';
<h2>Artículos</h2> % my $base_url = config 'base_url';
<div class="articles"> <h2>Resultados de la busqueda</h2>
% unless (defined $posts && @$posts) { % unless (defined $posts && @$posts) {
<p>Parece que aun no hay artículos.</p> <p>No se pudo encontrar nada...</p>
% } % }
% for my $post (@$posts) { % for my $post (@$posts) {
<a href="/posts/<%=$post->{slug}%>"> % my $url = "$base_url/posts/$post->{slug}";
<article><% % my $title = $post->{title};
my $date_article = DateTime::Format::ISO8601->parse_datetime($post->{date}); % if (length($title) > 50) {
$date_article->set_time_zone('Europe/Madrid'); % $title = substr($title, 0, 47).'...';
%><div class="article-up-part"> % }
<p class="date"><%= ''.$date_article %></p><% <div class="search-result">
my $title = $post->{title}; <div class="row-title-url-image">
if (length($title) > 50) { % if (defined $post->{image}) {
$title = substr($title, 0, 47).'...'; <img alt="" src="<%=$post->{image}%>">
} % }
if (defined $post->{image}) { <div class="column-title-url">
%><div class="image-container"> <b><%=$post->{title}%></b><br/>
<img alt="Portada de <%=$title%>" src="<%=$post->{image}%>"/> <a href="<%=$url%>"><%=$url%></a>
</div><% </div>
} </div>
%></div><div class="article-down-part"><div> % my $xml = Mojo::DOM->new($post->{content});
<h3><%=$title%></h3><% % my $text = $xml->all_text;
my $xml = Mojo::DOM->new($post->{content}); % if (length($text) > 120) {
my $text = $xml->all_text; % $text = substr($text, 0, 117).'...';
if (length($text) > 50) { % }
$text = substr($text, 0, 47).'...'; <p><%=$text%></p>
} </div>
%><p><%=$text%></p><p class="author">Escrito por <%=$post->{author}%></p> % }
</div></div></article>
</a>
% }
</div>

View File

@ -2,8 +2,4 @@
<nav class="mobile-shortcuts"> <nav class="mobile-shortcuts">
<a class="go-to-index" href="<%='/'.$categories->{index}{slug}%>"><%== $categories->{index}{menu_text} %></a> <a class="go-to-index" href="<%='/'.$categories->{index}{slug}%>"><%== $categories->{index}{menu_text} %></a>
%= include 'page/_search_bar' %= include 'page/_search_bar'
<a class="menu-expand" href="#">
<img class="open-menu-icon" src="/img/hamburger-menu-yellow.webp" alt="Expandir el menú."/>
<img class="open-menu-icon-hover" src="/img/hamburger-menu-purple.webp" alt="Expandir el menú."/>
</a>
</nav> </nav>

View File

@ -1,8 +1,9 @@
% my $search_term = stash 'search_term' // '';
<div class="search"> <div class="search">
<a href="#" class="search-icon"> <a href="#" class="search-icon">
<img alt="Buscar" src="/img/search.svg"/> <img alt="Buscar" src="/img/search.svg"/>
</a> </a>
<div class="fake-text-box"> <div class="fake-text-box">
<input type="text"></input> <input type="text" value="<%=$search_term%>"></input>
</div> </div>
</div> </div>

View File

@ -0,0 +1,4 @@
<div class="tutorial-overlay-step-1 hidden">
<p class="explanation">Esta es la barra de busqueda</p>
<img class="arrow" src="/img/arrow-pointing-down.webp"/>
</div>

View File

@ -11,10 +11,12 @@
% my $description_og = '<div>'.$attribute->{description}.'</div>'; % my $description_og = '<div>'.$attribute->{description}.'</div>';
% $description_og = Mojo::DOM->new($description_og)->all_text; % $description_og = Mojo::DOM->new($description_og)->all_text;
% my $posts = stash 'posts'; % my $posts = stash 'posts';
% layout 'default', current_category_slug => $category->{slug}, description_og => $description_og; % layout 'search_results', current_category_slug => $category->{slug}, description_og => $description_og, search_term => "#$category->{slug}:$attribute->{identifier}";
% title $attribute->{title}; % title $attribute->{title};
<div class="description"> <div class="description">
<h1><%= $attribute->{title} %></h1> <h1><%= $attribute->{title} %></h1>
<%== $attribute->{description} %> <%== $attribute->{description} %>
</div>
<div class="content">
%= include 'page/_list_posts', posts => $posts; %= include 'page/_list_posts', posts => $posts;
</div> </div>

View File

@ -7,30 +7,17 @@
% %
% use BurguillosInfo::Posts; % use BurguillosInfo::Posts;
% %
% my $current_category = stash 'current_category';
% my $description_og = '<div>'.$current_category->{description}.'</div>'; % my $description_og = '<div>'.$current_category->{description}.'</div>';
% $description_og = Mojo::DOM->new($description_og)->all_text; % $description_og = Mojo::DOM->new($description_og)->all_text;
% layout 'default', current_category_slug => $current_category->{slug}, description_og => $description_og; % layout 'search_results', current_category_slug => $current_category->{slug}, description_og => $description_og, search_term => "#$current_category->{slug}";
% title $current_category->{title}; % title $current_category->{title};
<div class="description"> <div class="description">
<h1><%= $current_category->{title} %></h1> <h1><%= $current_category->{title} %></h1>
<%== $current_category->{description} %> <%== $current_category->{description} %>
</div>
<div class="content">
% my $children_categories = $current_category->{children}; % my $children_categories = $current_category->{children};
% my $attributes = $current_category->{attributes};
% if (@$children_categories || %$attributes) {
<h2>Quizás te interese.</h2>
% for my $child_category (@$children_categories) {
<p><a href="/<%=$child_category->{slug}%>"><%==$child_category->{title}%></a></p>
% }
% for my $attribute_slug (keys %$attributes) {
% my $attribute = $attributes->{$attribute_slug};
<p><a href="<%="/$current_category->{slug}/atributo/$attribute->{identifier}"%>"><%==$attribute->{menu_text}%></a></p>
% }
% }
% my ($category_posts) = BurguillosInfo::Posts->new->RetrieveAllPostsForCategory($current_category->{slug}); % my ($category_posts) = BurguillosInfo::Posts->new->RetrieveAllPostsForCategory($current_category->{slug});
%= include 'page/_list_posts', posts => $category_posts; %= include 'page/_list_posts', posts => $category_posts;
<h2>Suscribete a esta categoría.</h2>
<a class="suscribe-category-rss" href="/<%=$current_category->{slug}%>.rss">
<img src="/img/rss.svg" alt="Icono de suscripción rss"/>
</a>
</div> </div>