Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Diego Prieto
/
landingpage_gpi
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ffde7817
authored
Apr 01, 2025
by
Diego Prieto
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into 'master'
Dev See merge request
!3
parents
69a57ab4
c425d997
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
83 deletions
faq.html
index.html
faq.html
View file @
ffde7817
...
...
@@ -384,59 +384,47 @@
<div
id=
"preloader"
></div>
<script>
const
toggles
=
document
.
querySelectorAll
(
'.cardToggle'
);
toggles
.
forEach
((
toggle
)
=>
{
toggle
.
addEventListener
(
'click'
,
function
(
e
)
{
e
.
preventDefault
();
const
pfCard
=
this
.
closest
(
'.pf-card'
);
const
contentCard
=
pfCard
.
querySelector
(
'.content-card'
);
const
iconDown
=
pfCard
.
querySelector
(
'.icon-down'
);
const
iconUp
=
pfCard
.
querySelector
(
'.icon-up'
);
const
titleCard
=
pfCard
.
querySelector
(
'.titleCard'
);
contentCard
.
classList
.
toggle
(
'open'
);
iconDown
.
classList
.
toggle
(
'close'
);
iconUp
.
classList
.
toggle
(
'open'
);
pfCard
.
classList
.
toggle
(
'open'
);
titleCard
.
classList
.
toggle
(
'open'
);
});
});
</script>
<script>
fetch
(
'https://promofenix.com/api/module_landing/getModuleLanding'
)
.
then
((
response
)
=>
response
.
json
())
.
then
((
data
)
=>
{
const
faqsContainer
=
document
.
querySelector
(
'.preguntas-frecuentes-2'
);
faqsContainer
.
innerHTML
=
''
;
// Limpiamos el contenedor
const
faqsContainer
=
document
.
querySelector
(
'.preguntas-frecuentes-2'
);
if
(
faqsContainer
&&
Array
.
isArray
(
data
.
data
.
faqs
)
&&
data
.
data
.
faqs
.
length
>
0
)
{
faqsContainer
.
innerHTML
=
''
;
// Limpiar solo si vienen datos
const
faqsOrdenadas
=
data
.
data
.
faqs
.
filter
((
faq
)
=>
faq
.
status
===
true
)
.
sort
((
a
,
b
)
=>
a
.
id
-
b
.
id
);
// Orden por ID ascendente
.
sort
((
a
,
b
)
=>
a
.
id
-
b
.
id
);
faqsOrdenadas
.
forEach
((
faq
)
=>
{
const
pfCard
=
document
.
createElement
(
'div'
);
pfCard
.
classList
.
add
(
'pf-card'
);
const
pregunta
=
faq
.
question
||
'Sin título'
;
const
respuesta
=
faq
.
answer
?
faq
.
answer
.
replace
(
/
\n
/g
,
'
<
br
>
')
: '
Sin
respuesta
disponible
'
;
pfCard
.
innerHTML
=
`
<div>
<h1 class="titleCard">
${
faq
.
question
}
</h1>
<h1 class="titleCard">
${
pregunta
}
</h1>
<a href="#" class="cardToggle">
<i class="bi bi-caret-down-fill icon-down"></i>
<i class="bi bi-caret-up-fill icon-up"></i>
</a>
</div>
<span class="content-card">
${
faq
.
answer
.
replace
(
/
\n
/g
,
'
<
br
>
'
)
}
</span>
<span class="content-card">
${
respuesta
}
</span>
`
;
faqsContainer
.
appendChild
(
pfCard
);
});
}
//
Volver a agregar los listeners para el toggle
//
🔁 Esta parte se ejecuta SIEMPRE (ya sea que vengan FAQs o se muestren los estáticos)
const
toggles
=
document
.
querySelectorAll
(
'.cardToggle'
);
toggles
.
forEach
((
toggle
)
=>
{
toggle
.
addEventListener
(
'click'
,
function
(
e
)
{
...
...
@@ -457,9 +445,30 @@
})
.
catch
((
error
)
=>
{
console
.
error
(
'Error al obtener las FAQs:'
,
error
);
// 🔁 Aseguramos que los toggles funcionen incluso si hay error en la API
const
toggles
=
document
.
querySelectorAll
(
'.cardToggle'
);
toggles
.
forEach
((
toggle
)
=>
{
toggle
.
addEventListener
(
'click'
,
function
(
e
)
{
e
.
preventDefault
();
const
pfCard
=
this
.
closest
(
'.pf-card'
);
const
contentCard
=
pfCard
.
querySelector
(
'.content-card'
);
const
iconDown
=
pfCard
.
querySelector
(
'.icon-down'
);
const
iconUp
=
pfCard
.
querySelector
(
'.icon-up'
);
const
titleCard
=
pfCard
.
querySelector
(
'.titleCard'
);
contentCard
.
classList
.
toggle
(
'open'
);
iconDown
.
classList
.
toggle
(
'close'
);
iconUp
.
classList
.
toggle
(
'open'
);
pfCard
.
classList
.
toggle
(
'open'
);
titleCard
.
classList
.
toggle
(
'open'
);
});
});
});
</script>
<!-- Vendor JS Files -->
<script
src=
"assets/vendor/bootstrap/js/bootstrap.bundle.min.js"
></script>
<script
src=
"assets/vendor/aos/aos.js"
></script>
...
...
@@ -470,22 +479,6 @@
<script
src=
"assets/vendor/php-email-form/validate.js"
></script>
<!-- Template Main JS File -->
<script>
// Realizamos la petición a la API usando fetch
fetch
(
'https://promofenix.com/api/module_landing/getModuleLanding'
)
.
then
((
response
)
=>
response
.
json
())
.
then
((
data
)
=>
{
// Actualizamos las imágenes dinámicamente
document
.
getElementById
(
'portada-img'
).
src
=
data
.
data
.
portada
.
image_path
;
document
.
getElementById
(
'seccion1-img'
).
src
=
data
.
data
.
seccion1
.
image_path
;
document
.
getElementById
(
'seccion2-img'
).
src
=
data
.
data
.
seccion2
.
image_path
;
})
.
catch
((
error
)
=>
{
console
.
error
(
'Error al obtener los datos de la API:'
,
error
);
});
</script>
<script
src=
"assets/js/main.js"
></script>
<script>
...
...
index.html
View file @
ffde7817
...
...
@@ -70,20 +70,6 @@
<!-- End Header -->
<!-- End Header -->
<!-- Menú desplegable -->
<nav
id=
"sideMenu"
class=
"side-menu"
>
<div
class=
"side-menu-content"
>
<div
class=
"side-options"
><a
href=
"index.html"
>
¿Qué es PROMOFÉNIX?
</a></div
>
<div
class=
"side-options"
><a
href=
"#"
>
Programa de bonificaciones
</a></div
>
<div
class=
"side-options"
><a
href=
"#"
>
Experiencias PROMOFÉNIX
</a></div>
<div
class=
"side-options"
><a
href=
"#"
>
Registrar referido
</a></div>
</div>
</nav>
<!-- ======= Hero Section ======= -->
<section
id=
"hero"
class=
"hero"
>
<div
class=
""
>
...
...
@@ -329,16 +315,6 @@
<div
id=
"preloader"
></div>
<script>
const
toggleButton
=
document
.
getElementById
(
'menuToggle'
);
const
sideMenu
=
document
.
getElementById
(
'sideMenu'
);
toggleButton
.
addEventListener
(
'click'
,
function
(
e
)
{
e
.
preventDefault
();
sideMenu
.
classList
.
toggle
(
'open'
);
});
</script>
<!-- Vendor JS Files -->
<script
src=
"assets/vendor/bootstrap/js/bootstrap.bundle.min.js"
></script>
<script
src=
"assets/vendor/aos/aos.js"
></script>
...
...
@@ -353,50 +329,72 @@
fetch
(
'https://promofenix.com/api/module_landing/getModuleLanding'
)
.
then
((
response
)
=>
response
.
json
())
.
then
((
data
)
=>
{
// ✅ Actualiza imágenes y videos
document
.
getElementById
(
'portada-img'
).
src
=
data
.
data
.
portada
.
image_path
;
document
.
getElementById
(
'seccion1-img'
).
src
=
data
.
data
.
seccion1
.
image_path
;
document
.
getElementById
(
'seccion2-img'
).
src
=
data
.
data
.
seccion2
.
image_path
;
// ✅ Validación segura para cada sección
const
portadaImg
=
document
.
getElementById
(
'portada-img'
);
if
(
data
.
data
.
portada
?.
image_path
)
{
portadaImg
.
src
=
data
.
data
.
portada
.
image_path
;
}
const
seccion1Img
=
document
.
getElementById
(
'seccion1-img'
);
if
(
data
.
data
.
seccion1
?.
image_path
)
{
seccion1Img
.
src
=
data
.
data
.
seccion1
.
image_path
;
}
const
seccion2Img
=
document
.
getElementById
(
'seccion2-img'
);
if
(
data
.
data
.
seccion2
?.
image_path
)
{
seccion2Img
.
src
=
data
.
data
.
seccion2
.
image_path
;
}
const
videoTestimonial
=
document
.
getElementById
(
'video-testimonial'
);
if
(
data
.
data
.
videotestimonio
?.
image_path
)
{
videoTestimonial
.
src
=
data
.
data
.
videotestimonio
.
image_path
;
}
if
(
data
.
data
.
testimonio
?.
image_path
)
{
videoTestimonial
.
poster
=
data
.
data
.
testimonio
.
image_path
;
}
const
videoTutorial1
=
document
.
getElementById
(
'video-tutorial1'
);
if
(
data
.
data
.
videotutorial1
?.
image_path
)
{
videoTutorial1
.
src
=
data
.
data
.
videotutorial1
.
image_path
;
}
if
(
data
.
data
.
tutorial1
?.
image_path
)
{
videoTutorial1
.
poster
=
data
.
data
.
tutorial1
.
image_path
;
}
const
videoTutorial2
=
document
.
getElementById
(
'video-tutorial2'
);
if
(
data
.
data
.
videotutorial2
?.
image_path
)
{
videoTutorial2
.
src
=
data
.
data
.
videotutorial2
.
image_path
;
}
if
(
data
.
data
.
tutorial2
?.
image_path
)
{
videoTutorial2
.
poster
=
data
.
data
.
tutorial2
.
image_path
;
}
// ✅
INSERTAR SOLO LAS 3 PRIMERAS FAQS
// ✅
Mostrar FAQs si existen
const
faqsContainer
=
document
.
querySelector
(
'.faq-s-2'
);
if
(
Array
.
isArray
(
data
.
data
.
faqs
)
&&
data
.
data
.
faqs
.
length
>
0
)
{
faqsContainer
.
innerHTML
=
''
;
const
faqs
=
data
.
data
.
faqs
.
slice
(
0
,
3
);
// Solo 3 preguntas
const
faqs
=
data
.
data
.
faqs
.
slice
(
0
,
3
);
faqs
.
forEach
((
faq
)
=>
{
const
div
=
document
.
createElement
(
'div'
);
div
.
classList
.
add
(
'faq-s-table'
);
const
h1
=
document
.
createElement
(
'h1'
);
h1
.
textContent
=
faq
.
question
;
h1
.
textContent
=
faq
.
question
||
'Sin título'
;
const
p
=
document
.
createElement
(
'p'
);
const
respuestaCorta
=
faq
.
answer
.
length
>
240
faq
.
answer
&&
faq
.
answer
.
length
>
240
?
faq
.
answer
.
slice
(
0
,
240
)
+
'...'
:
faq
.
answer
;
:
faq
.
answer
||
'Sin respuesta'
;
p
.
textContent
=
respuestaCorta
;
div
.
appendChild
(
h1
);
div
.
appendChild
(
p
);
faqsContainer
.
appendChild
(
div
);
});
}
})
.
catch
((
error
)
=>
{
console
.
error
(
'Error al obtener los datos de la API:'
,
error
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment