Compare commits
11 Commits
107f07c035
...
752d346522
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
752d346522 | ||
|
|
c18b014bcc | ||
|
|
8536c713f6 | ||
|
|
53a450503d | ||
|
|
cf9258019b | ||
|
|
42b66d3bf7 | ||
|
|
b52416976a | ||
|
|
f85295ff22 | ||
|
|
a3212d9201 | ||
|
|
7bb21a6646 | ||
|
|
041638adde |
@ -1,8 +1,24 @@
|
||||
// app/blog/[slug]/page.tsx
|
||||
// app/blog/[slug]/page.js
|
||||
import PageBanner from "@/components/PageBanner";
|
||||
import WellFoodLayout from "@/layout/WellFoodLayout";
|
||||
import { Blog } from "@/utility/constant.utils";
|
||||
|
||||
export async function generateMetadata({ params }) {
|
||||
const blog = Blog.find((item) => item.slug === params.slug);
|
||||
|
||||
if (!blog) {
|
||||
return {
|
||||
title: "Blog not found",
|
||||
description: "The blog you are looking for does not exist.",
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
title: blog.metatitle,
|
||||
description: blog.metadescription,
|
||||
};
|
||||
}
|
||||
|
||||
export async function generateStaticParams() {
|
||||
return Blog.map((item) => ({
|
||||
slug: item.slug,
|
||||
@ -11,7 +27,6 @@ export async function generateStaticParams() {
|
||||
|
||||
export default function BlogPage({ params }) {
|
||||
const { slug } = params;
|
||||
|
||||
const blog = Blog.find((item) => item.slug === slug);
|
||||
|
||||
if (!blog) {
|
||||
@ -20,7 +35,10 @@ export default function BlogPage({ params }) {
|
||||
|
||||
return (
|
||||
<WellFoodLayout>
|
||||
<PageBanner pageTitle={"Blog details"} background="/assets/images/inner-banner/2.webp" />
|
||||
<PageBanner
|
||||
pageTitle={"Blog Details"}
|
||||
background="/assets/images/inner-banner/2.webp"
|
||||
/>
|
||||
<section className="blog-details-area py-80 rpy-60">
|
||||
<div className="container container-1290">
|
||||
<div className="row">
|
||||
@ -33,7 +51,11 @@ export default function BlogPage({ params }) {
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<img src={blog.bigImage} alt="Blog Standard" loading="lazy" />
|
||||
<img
|
||||
src={blog.bigImage}
|
||||
alt={blog.title}
|
||||
loading="lazy"
|
||||
/>
|
||||
</div>
|
||||
<div
|
||||
className="content"
|
||||
|
||||
179
app/contact-south-indian-restaurant/page.js
Normal file
179
app/contact-south-indian-restaurant/page.js
Normal file
@ -0,0 +1,179 @@
|
||||
import PageBanner from "@/components/PageBanner";
|
||||
import WellFoodLayout from "@/layout/WellFoodLayout";
|
||||
import ContactForm from "@/components/ContactForm";
|
||||
|
||||
export const metadata = {
|
||||
title: "Shiva Sakthi | Best South Indian Restaurant in Mississauga",
|
||||
description:
|
||||
"Get in touch with Shiva Sakthi, Mississauga’s top Indian restaurant. Call or visit us for dine-in, takeout, or catering. Located Airport Road Malton, Mississauga",
|
||||
};
|
||||
|
||||
const page = () => {
|
||||
return (
|
||||
<WellFoodLayout>
|
||||
<PageBanner
|
||||
pageTitle={"Contact"}
|
||||
background="/assets/images/inner-banner/3.webp"
|
||||
/>
|
||||
|
||||
{/* === Contact Info Cards === */}
|
||||
<section className="contact-page-area pt-100 rpt-100 pb-60 rpb-30 rel z-1">
|
||||
<div className="container">
|
||||
<div className="row align-items-center">
|
||||
<div
|
||||
className="contact-page-content rmb-55"
|
||||
data-aos="fade-up"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<div className="section-title mb-35 text-center">
|
||||
<span className="sub-title mb-10">contact us</span>
|
||||
<h2>Get In Touch With Us</h2>
|
||||
<p
|
||||
data-aos="fade-left"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}>
|
||||
We’re always happy to connect with you at Shiva Sakthi Restaurant. Conveniently located in a prime and easily accessible area, our restaurant welcomes guests who are looking for fresh, authentic South Indian meals served with care. Whether you want to make a reservation, check our menu, place a takeaway order, or inquire about catering services, our team is ready to assist you. Visitors can reach us by phone, email, or through the contact form on this page. We aim to respond quickly to all inquiries and ensure every guest enjoys a smooth experience. Drop by, get in touch, or simply say hello—we look forward to serving you.
|
||||
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Cards Row with Spacing */}
|
||||
<div className="row gx-4 gy-4">
|
||||
<div className="col-lg-4 col-md-6 col-sm-12 d-flex justify-content-center">
|
||||
<div
|
||||
className="contact-info-item bgc-black flex-fill p-4"
|
||||
style={{
|
||||
backgroundImage: "url(/assets/images/background/hero.jpg)",
|
||||
}}
|
||||
>
|
||||
<div className="icon">
|
||||
<i className="fal fa-phone" />
|
||||
</div>
|
||||
<div className="content">
|
||||
<span className="title" style={{ fontWeight: "bold" }}>
|
||||
Call Us
|
||||
</span>
|
||||
<p>
|
||||
<a href="tel:+19056773555">905-677-3555</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-4 col-md-6 col-sm-12 d-flex justify-content-center">
|
||||
<div
|
||||
className="contact-info-item bgc-black flex-fill p-4"
|
||||
style={{
|
||||
backgroundImage: "url(/assets/images/background/hero.jpg)",
|
||||
}}
|
||||
>
|
||||
<div className="icon">
|
||||
<i className="fal fa-envelope-open" />
|
||||
</div>
|
||||
<div className="content">
|
||||
<span className="title" style={{ fontWeight: "bold" }}>
|
||||
Email Address
|
||||
</span>
|
||||
<p>
|
||||
<a href="mailto:info@shivasakthi.ca">info@shivasakthi.ca</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-4 col-md-6 col-sm-12 d-flex justify-content-center">
|
||||
<div
|
||||
className="contact-info-item bgc-black flex-fill p-4"
|
||||
style={{
|
||||
backgroundImage: "url(/assets/images/background/hero.jpg)",
|
||||
}}
|
||||
>
|
||||
<div className="icon">
|
||||
<i className="fal fa-map-marker-alt" />
|
||||
</div>
|
||||
<div className="content">
|
||||
<span className="title" style={{ fontWeight: "bold" }}>
|
||||
Location
|
||||
</span>
|
||||
<p>
|
||||
7166 Airport Road, Mississauga, Ontario L4T 2H2, Canada.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* === Contact Form & Image (Equal Height) === */}
|
||||
<section className="contact-page-area rpt-40 pt-60 pb-60 rel z-1 bgc-black">
|
||||
<div className="container">
|
||||
<div className="row align-items-stretch no-gap">
|
||||
<div className="col-lg-6 d-flex">
|
||||
<div
|
||||
className="contact-page-content rmb-55 d-flex w-100"
|
||||
data-aos="fade-left"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<div className="contact-info-wrap flex-fill">
|
||||
<img
|
||||
src="/assets/images/contact.webp"
|
||||
alt="Contact ShivaSakthi"
|
||||
loading="lazy"
|
||||
style={{ width: "100%", height: "100%", objectFit: "cover" }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="col-lg-6 d-flex"
|
||||
data-aos="fade-right"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<div className="flex-fill d-flex">
|
||||
<ContactForm />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="bg-lines">
|
||||
<span />
|
||||
<span />
|
||||
<span />
|
||||
<span />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* === Google Map === */}
|
||||
<section className="contact-page-area pt-60">
|
||||
<div className="container-fluid">
|
||||
<div className="row align-items-center">
|
||||
<div
|
||||
className="our-location"
|
||||
data-aos="fade-up"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
{/* <iframe
|
||||
src="https://www.google.com/maps/embed?pb=!1m10!1m8!1m3!1d96777.16150026117!2d-74.00840582560909!3d40.71171357405996!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2sbd!4v1706508986625!5m2!1sen!2sbd"
|
||||
style={{ border: 0, width: "100%" }}
|
||||
allowFullScreen=""
|
||||
loading="lazy"
|
||||
referrerPolicy="no-referrer-when-downgrade"
|
||||
/> */}
|
||||
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d369174.37626170606!2d-79.647352!3d43.706916!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882b3bfed533002b%3A0xe83c1cd7caca2ee6!2s7166%20Airport%20Rd%2C%20Mississauga%2C%20ON%20L4T%202H2%2C%20Canada!5e0!3m2!1sen!2sus!4v1748536731832!5m2!1sen!2sus" style={{ border: 0, width: "100%" }}
|
||||
allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</WellFoodLayout>
|
||||
);
|
||||
};
|
||||
export default page;
|
||||
@ -1,141 +0,0 @@
|
||||
|
||||
import PageBanner from "@/components/PageBanner";
|
||||
import WellFoodLayout from "@/layout/WellFoodLayout";
|
||||
import ContactForm from "@/components/ContactForm";
|
||||
|
||||
export const metadata = {
|
||||
title: "Shiva Sakthi | Best South Indian Restaurant in Mississauga",
|
||||
description: "Get in touch with Shiva Sakthi, Mississauga’s top Indian restaurant. Call or visit us for dine-in, takeout, or catering. Located Airport Road Malton, Mississauga",
|
||||
};
|
||||
|
||||
const page = () => {
|
||||
|
||||
return (
|
||||
<WellFoodLayout>
|
||||
<PageBanner pageTitle={"Contact us"} background="/assets/images/inner-banner/3.webp" />
|
||||
<section className="contact-page-area pt-130 rpt-100 pb-60 rpb-85 rel z-1" >
|
||||
<div className="container">
|
||||
<div className="row align-items-center">
|
||||
|
||||
<div
|
||||
className="contact-page-content rmb-55"
|
||||
data-aos="fade-up"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<div className="section-title mb-35 text-center">
|
||||
<span className="sub-title mb-10">contact us</span>
|
||||
<h2>Get In Touch With Us</h2>
|
||||
</div>
|
||||
<div className="row">
|
||||
<div className="col-md-4">
|
||||
<div className="contact-info-item bgc-black" style={{
|
||||
backgroundImage: "url(/assets/images/background/hero.jpg)"
|
||||
}}>
|
||||
<div className="icon"><i className="fal fa-map-marker-alt" /></div>
|
||||
<div className="content">
|
||||
<span className="title" style={{ fontWeight: "bold" }}>Location</span>
|
||||
<p>7166 Airport Road, Mississauga, Ontario L4T 2H2, Canada.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-md-4">
|
||||
<div className="contact-info-item bgc-black" style={{
|
||||
backgroundImage: "url(/assets/images/background/hero.jpg)"
|
||||
}}>
|
||||
<div className="icon"><i className="fal fa-envelope-open" /></div>
|
||||
<div className="content">
|
||||
<span className="title" style={{ fontWeight: "bold" }}>Email Address</span>
|
||||
<p>
|
||||
<a href="mailto:info@shivasakthi.ca">info@shivasakthi.ca</a>
|
||||
<br />
|
||||
<br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-md-4">
|
||||
<div className="contact-info-item bgc-black" style={{
|
||||
backgroundImage: "url(/assets/images/background/hero.jpg)"
|
||||
}}>
|
||||
<div className="icon"><i className="fal fa-phone" /></div>
|
||||
<div className="content">
|
||||
<span className="title" style={{ fontWeight: "bold" }}>Call Us</span>
|
||||
<p>
|
||||
<a href="tel: 9056773555">905 677 3555</a>
|
||||
<br />
|
||||
<br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="contact-page-area rpt-40 pt-60 pb-60 rel z-1 bgc-black">
|
||||
<div className="container">
|
||||
<div className="row align-items-center no-gap">
|
||||
<div className="col-lg-6">
|
||||
<div
|
||||
className="contact-page-content rmb-55"
|
||||
data-aos="fade-left"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
|
||||
<div className="contact-info-wrap">
|
||||
|
||||
<img src="/assets/images/contact.webp" alt="Contact ShivaSakthi" loading="lazy" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="col-lg-6"
|
||||
data-aos="fade-right"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<ContactForm />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div className="bg-lines">
|
||||
<span />
|
||||
<span />
|
||||
<span />
|
||||
<span />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="contact-page-area pt-60">
|
||||
<div className="container-fluid">
|
||||
<div className="row align-items-center">
|
||||
<div
|
||||
className="our-location"
|
||||
data-aos="fade-up"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
{/* <iframe
|
||||
src="https://www.google.com/maps/embed?pb=!1m10!1m8!1m3!1d96777.16150026117!2d-74.00840582560909!3d40.71171357405996!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2sbd!4v1706508986625!5m2!1sen!2sbd"
|
||||
style={{ border: 0, width: "100%" }}
|
||||
allowFullScreen=""
|
||||
loading="lazy"
|
||||
referrerPolicy="no-referrer-when-downgrade"
|
||||
/> */}
|
||||
<iframe src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d369174.37626170606!2d-79.647352!3d43.706916!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x882b3bfed533002b%3A0xe83c1cd7caca2ee6!2s7166%20Airport%20Rd%2C%20Mississauga%2C%20ON%20L4T%202H2%2C%20Canada!5e0!3m2!1sen!2sus!4v1748536731832!5m2!1sen!2sus" style={{ border: 0, width: "100%" }}
|
||||
allowfullscreen="" loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</WellFoodLayout>
|
||||
);
|
||||
};
|
||||
export default page;
|
||||
@ -8,7 +8,7 @@ import "@css/slick.min.css";
|
||||
import "@css/style.css";
|
||||
import "./globals.css";
|
||||
export const metadata = {
|
||||
title: "Shivasakthi Restaurant",
|
||||
title: "Shivasakthi Restaurant | South Indian Dining & Thali",
|
||||
description: "The best Indian food in Mississauga! Enjoy authentic South Indian cuisine, vegetarian dishes, dosa, Indian snacks, and takeout options at Shiva Sakthi.",
|
||||
};
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ const page = () => {
|
||||
{/* Headline Area end */}
|
||||
{/* Restaurant Menu Area start */}
|
||||
<RestaurantMenu />
|
||||
<MenuIframe />
|
||||
{/* <MenuIframe /> */}
|
||||
</WellFoodLayout>
|
||||
);
|
||||
};
|
||||
|
||||
@ -5,8 +5,7 @@
|
||||
<section
|
||||
className="booking-table-area-two bgs-cover py-100 rel z-1 overlay"
|
||||
style={{
|
||||
backgroundImage:
|
||||
"url(/assets/images/about/bg-about.webp)",
|
||||
backgroundImage: "url(/assets/images/about/bg-about.webp)",
|
||||
}}
|
||||
>
|
||||
<div className="container">
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
const AboutCallAction2 = () => {
|
||||
return (
|
||||
<section className="cta-area py-100 rel z-1 bgc-primary" style={{
|
||||
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)"
|
||||
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)",
|
||||
}} >
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
@ -12,7 +12,7 @@
|
||||
<span className="sub-title mb-5 text-white">Craving Authentic Indian Flavors?</span>
|
||||
<h2>Don’t wait—call us now to place your order!</h2>
|
||||
</div>
|
||||
<Link href="/contact" className="theme-btn style-three">
|
||||
<Link href="/contact-south-indian-restaurant" className="theme-btn style-three">
|
||||
Call Us <i className="far fa-arrow-alt-right" />
|
||||
</Link>
|
||||
{/* <div
|
||||
|
||||
@ -9,10 +9,15 @@ const AboutCategory = () => {
|
||||
className="col about-biryani-category-1"
|
||||
data-aos="fade-up"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
|
||||
<img src="/assets/images/about/ambur_chicken_biryani.png" />
|
||||
<img
|
||||
src="/assets/images/about/ambur_chicken_biryani.webp"
|
||||
alt="Ambur Chicken Biryani"
|
||||
width="570"
|
||||
height="270"
|
||||
loading="lazy" />
|
||||
{/* <span className="quality">Quality Food</span>
|
||||
<h2>Strawberry Juice & slices</h2>
|
||||
<Link href="shop" className="theme-btn style-two">
|
||||
@ -27,8 +32,13 @@ const AboutCategory = () => {
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}
|
||||
>
|
||||
|
||||
<img src="/assets/images/about/mutton-biryani.png" />
|
||||
|
||||
<img
|
||||
src="/assets/images/about/mutton-biryani.webp"
|
||||
alt="Mutton Biryani"
|
||||
width="570"
|
||||
height="270"
|
||||
loading="lazy" />
|
||||
{/* <h3>buy 1</h3>
|
||||
<span className="get-one">get free 1</span>
|
||||
<Link href="shop" className="theme-btn">
|
||||
|
||||
@ -38,7 +38,7 @@ const AboutContent = () => {
|
||||
<i className="flaticon-high-quality" />
|
||||
</div>
|
||||
<h5>
|
||||
<Link href="menu-burger">Best Quality Food</Link>
|
||||
<Link href="/menu">Best Quality Food</Link>
|
||||
</h5>
|
||||
<p>
|
||||
Our talented chefs craft each dish precision sourcing
|
||||
@ -51,7 +51,7 @@ const AboutContent = () => {
|
||||
<i className="flaticon-chef" />
|
||||
</div>
|
||||
<h5>
|
||||
<Link href="menu-burger">Experience our Chefs</Link>
|
||||
<Link href="/menu">Experience our Chefs</Link>
|
||||
</h5>
|
||||
<p>
|
||||
Our talented chefs craft each dish precision sourcing
|
||||
|
||||
@ -7,8 +7,7 @@ const Testimonial = () => {
|
||||
<section
|
||||
className="testimonials-two bgc-primary"
|
||||
style={{
|
||||
backgroundImage:
|
||||
"url(/assets/images/testimonials/testimonials-two-bg.png)",
|
||||
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)",
|
||||
}}
|
||||
>
|
||||
<div className="row align-items-center">
|
||||
|
||||
@ -91,7 +91,8 @@ const ContactForm = () => {
|
||||
return (
|
||||
<div className="contact-page-form">
|
||||
<h3>Send Us Message</h3>
|
||||
<p>Your email address will not be published. Required fields are marked *</p>
|
||||
<p>Have a question or need assistance? Fill out the form below and our team will get back to you as soon as possible.
|
||||
*</p>
|
||||
<form id="contactForm" className="contactForm" name="contactForm" onSubmit={handleSubmit}>
|
||||
<div className="row mt-30 gap-20">
|
||||
<div className="col-sm-6">
|
||||
@ -176,7 +177,7 @@ const ContactForm = () => {
|
||||
</div>
|
||||
<div className="col-sm-12 mt-3 mb-3">
|
||||
<ReCAPTCHA
|
||||
sitekey="6Lfi9o4rAAAAAOatjscl4m4UaOA7_g_rFBHOaf5n"
|
||||
sitekey="6LcGsNkrAAAAAKtqLyzbOb9emB3JSHUFSXGiDiO1"
|
||||
onChange={handleCaptchaChange}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -32,7 +32,7 @@ const FoodCategory = () => {
|
||||
</div>
|
||||
<div className="content">
|
||||
<h4>
|
||||
<Link href="menu-restaurant">Best Quality Food</Link>
|
||||
<Link href="/menu">Best Quality Food</Link>
|
||||
</h4>
|
||||
<p>Sed ut perspiciatis unde omnis este natus sit voluptatem</p>
|
||||
</div>
|
||||
|
||||
@ -1784,7 +1784,7 @@ const RestaurantMenu = ({ menus }) => {
|
||||
<div className="d-flex justify-content-center">
|
||||
<img src={menu.icon} style={{width:"50%"}} loading="lazy" /> {/* margin-end to add space */}
|
||||
</div>
|
||||
<span>{menu.title}</span>
|
||||
<span className="new-class">{menu.title}</span>
|
||||
</div>
|
||||
</Nav.Link>
|
||||
</Nav.Item>
|
||||
|
||||
@ -7,8 +7,7 @@ const Testimonial = () => {
|
||||
<section
|
||||
className="testimonials-two bgc-primary"
|
||||
style={{
|
||||
backgroundImage:
|
||||
"url(assets/images/testimonials/testimonials-two-bg.png)",
|
||||
backgroundImage: "url(/assets/images/testimonials/testimonials-two-bg.png)",
|
||||
}}
|
||||
>
|
||||
<div className="row align-items-center">
|
||||
|
||||
@ -14,7 +14,14 @@ const ListOfBlogSection = () => {
|
||||
data-aos-offset={50}
|
||||
>
|
||||
<span className="sub-title mb-5">The Latest News What We Have</span>
|
||||
<h2>Our Latest Food News</h2>
|
||||
<h2>Our Latest Food News at Shiva Sakthi
|
||||
</h2>
|
||||
<p
|
||||
data-aos="fade-left"
|
||||
data-aos-duration={1500}
|
||||
data-aos-offset={50}>
|
||||
Welcome to the Shiva Sakthi Restaurant blog — your go-to place for delicious food stories, culinary insights, and everything related to authentic South Indian dining. Here, we share expert tips, traditional recipes, festival specials, and behind-the-scenes glimpses from our kitchen. Whether you’re a long-time customer or discovering us for the first time, our blog helps you explore the rich flavours, preparation methods, and cultural roots behind every dish we serve. At Shiva Sakthi Restaurant, we believe food is more than a meal — it’s an experience filled with warmth, tradition, and community. Through these articles, we aim to educate, inspire, and connect with food lovers who appreciate quality, freshness, and homemade taste. Dive in and enjoy a flavourful journey with us.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -11,8 +11,8 @@ const heroSlides = [
|
||||
"At Shiva Sakthi, we serve more than just food — we serve memories. Taste the heritage of South India in every bite, lovingly prepared with spices that tell a story.",
|
||||
buttonText: "Order now",
|
||||
buttonLink: "https://gosnappy.io/owa/r/shiva-sakthi-restaurant/5921/menu_655/",
|
||||
leftImage: "/assets/images/home/right-4.webp",
|
||||
rightImage: "/assets/images/home/right-4.webp",
|
||||
leftImage: "/assets/images/home/shiva-sakthi-web-banner.webp",
|
||||
rightImage: "/assets/images/home/shiva-sakthi-web-banner.webp",
|
||||
},
|
||||
{
|
||||
subtitle: "Welcome to Shiva Sakthi Restaurant",
|
||||
@ -89,7 +89,8 @@ const HeroBanner = () => {
|
||||
<span className="sub-title">{slide.subtitle}</span>
|
||||
<h1 dangerouslySetInnerHTML={{ __html: slide.title }}></h1>
|
||||
<p>{slide.description}</p>
|
||||
<Link href={slide.buttonLink} className="theme-btn mt-25" target={slide.buttonLink.startsWith("http") && index < 2 && "_blank"} >
|
||||
<Link href={slide.buttonLink} className="theme-btn mt-25"
|
||||
target={slide.buttonLink.startsWith("http") && index < 2 ? "_blank" : undefined} >
|
||||
{slide.buttonText} <i className="far fa-arrow-alt-right" />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -113,7 +113,7 @@ const PopularMenu = () => {
|
||||
))}
|
||||
</div>
|
||||
<div className="text-center mt-3">
|
||||
<a class="theme-btn style-two" href="/menu">View Full Menu <i class="far fa-arrow-alt-right"></i></a>
|
||||
<a className="theme-btn style-two" href="/menu">View Full Menu <i className="far fa-arrow-alt-right"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div className="menu-items-shape">
|
||||
|
||||
@ -88,7 +88,7 @@ const DefaultFooter = () => {
|
||||
<li><Link href="/">Home</Link></li>
|
||||
<li><Link href="/about">About</Link></li>
|
||||
<li><Link href="/menu">Menu</Link></li>
|
||||
<li><Link href="/contact">Contact</Link></li>
|
||||
<li><Link href="/contact-south-indian-restaurant">Contact</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -100,7 +100,7 @@ const DefaultFooter = () => {
|
||||
<ul>
|
||||
<li>7166 Airport Road, Mississauga Ontario.L4T 2H2, Canada</li>
|
||||
<li><a href="mailto:info@shivasakthi.ca"><u>info@shivasakthi.ca</u></a></li>
|
||||
<li><a href="callto:905 677 3555">905 677 3555</a></li>
|
||||
<li><a href="tel:+19056773555">905-677-3555</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -125,7 +125,7 @@ const DefaultFooter = () => {
|
||||
<div className="col-lg-12">
|
||||
<div className="copyright-text text-center">
|
||||
<p>
|
||||
Copyright {new Date().getFullYear()} © Shivas Dosa Restaurant. Powered by <Link href="https://metatroncubesolutions.com/">MetatronCube</Link>. All Right Reserved.{" "}
|
||||
Copyright {new Date().getFullYear()} © Shivas Dosa Restaurant. Powered by <Link href="https://metatroncubesolutions.com/" target="_blank">MetatronCube</Link>. All Right Reserved.{" "}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -274,7 +274,7 @@ const Footer2 = () => {
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
|
||||
<a href="tel:+10987654321">+1 098 765 4321</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -384,7 +384,7 @@ const Footer3 = () => {
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
|
||||
<a href="tel:+10987654321">+1 098 765 4321</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -537,7 +537,7 @@ const Footer5 = () => {
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
|
||||
<a href="tel:+10987654321">+1 (098) 765-4321</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -682,7 +682,7 @@ const Footer6 = () => {
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="callto:+(1)0987654321">+(1) 098 765 4321</a>
|
||||
<a href="tel:+10987654321">+1 (098) 765-4321</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -235,7 +235,7 @@ const MobileMenu = () => {
|
||||
<Link href="menu-grill">Menu Gril</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="menu-burger">Menu Burger</Link>
|
||||
<Link href="/menu">Menu Burger</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="menu-sea-food">Menu Sea Food</Link>
|
||||
@ -320,7 +320,7 @@ const MobileMenu = () => {
|
||||
</div>
|
||||
</li> */}
|
||||
<li>
|
||||
<Link href="/contact">Contact</Link>
|
||||
<Link href="/contact-south-indian-restaurant">Contact</Link>
|
||||
</li>
|
||||
</ul>
|
||||
{/* <ul className="navigation clearfix">
|
||||
@ -366,7 +366,7 @@ const MobileMenu = () => {
|
||||
<Link href="menu-grill">Menu Gril</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="menu-burger">Menu Burger</Link>
|
||||
<Link href="/menu">Menu Burger</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="menu-sea-food">Menu Sea Food</Link>
|
||||
@ -464,7 +464,7 @@ const MobileMenu = () => {
|
||||
</div>
|
||||
{/* <div className="header-number">
|
||||
<i className="far fa-phone" />
|
||||
Call : <a href="callto:+88012345688">+880 123 456 88</a>
|
||||
Call : <a href="tel:+88012345688">+880 123 456 88</a>
|
||||
</div>
|
||||
<SearchBtn />
|
||||
<div className="menu-btns">
|
||||
@ -606,7 +606,7 @@ const Header = () => {
|
||||
<Link href="menu-grill">Menu Gril</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="menu-burger">Menu Burger</Link>
|
||||
<Link href="/menu">Menu Burger</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link href="menu-sea-food">Menu Sea Food</Link>
|
||||
@ -688,7 +688,7 @@ const Header = () => {
|
||||
</div>
|
||||
</li> */}
|
||||
<li>
|
||||
<Link href="/contact">Contact</Link>
|
||||
<Link href="/contact-south-indian-restaurant">Contact</Link>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="menu-btns" style={{ paddingLeft: "30px" }}>
|
||||
@ -702,7 +702,7 @@ const Header = () => {
|
||||
</div>
|
||||
{/* <div className="header-number">
|
||||
<i className="far fa-phone" />
|
||||
Call : <a href="callto:+88012345688">+880 123 456 88</a>
|
||||
Call : <a href="tel:+88012345688">+880 123 456 88</a>
|
||||
</div> */}
|
||||
{/* Nav Search */}
|
||||
{/* <SearchBtn /> */}
|
||||
|
||||
@ -9,7 +9,7 @@ const WellFoodLayout = ({ children, bgBlack, footer }) => {
|
||||
useEffect(() => {
|
||||
niceSelect();
|
||||
wellfoodUtility.animation();
|
||||
console.log(bgBlack);
|
||||
// console.log(bgBlack);
|
||||
if (bgBlack) {
|
||||
document.querySelector(".page-wrapper").classList.add("bg-black");
|
||||
} else {
|
||||
|
||||
13
package.json
13
package.json
@ -2,12 +2,13 @@
|
||||
"name": "shivasakthi-restarunt",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint",
|
||||
"sitemap": "node scripts/generate-sitemap.cjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"aos": "^2.3.4",
|
||||
"axios": "^1.9.0",
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
|
||||
Note: This is Main Style CSS File. */
|
||||
/*----------------------------------------------------------------------
|
||||
CSS INDEX
|
||||
----------------------
|
||||
CSS INDEX
|
||||
----------------------
|
||||
|
||||
## Default Style
|
||||
## Common Classes
|
||||
@ -783,6 +783,8 @@ a.theme-btn.style-three:hover {
|
||||
.food-menu-tab .nav-link {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 8px;
|
||||
padding-left: 12px;
|
||||
padding-right: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -805,20 +807,20 @@ a.theme-btn.style-three:hover {
|
||||
}
|
||||
|
||||
.food-menu-tab .nav-link span {
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 991px) {
|
||||
.food-menu-tab .nav-link span {
|
||||
font-size: 16px;
|
||||
font-size: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 575px) {
|
||||
.food-menu-tab .nav-link span {
|
||||
margin-top: 0;
|
||||
font-size: 16px;
|
||||
font-size: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -946,20 +948,54 @@ a.theme-btn.style-three:hover {
|
||||
|
||||
/* Slick Arrows */
|
||||
.slick-arrow {
|
||||
position: absolute;
|
||||
top: 40%;
|
||||
right: 100%;
|
||||
transform: translateY(-50%);
|
||||
font-size: 20px;
|
||||
-webkit-transition: 0.5s;
|
||||
-o-transition: 0.5s;
|
||||
transition: 0.5s;
|
||||
padding-top: 2px;
|
||||
width: 65px;
|
||||
height: 65px;
|
||||
background: white;
|
||||
line-height: 65px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background: black;
|
||||
line-height: 40px;
|
||||
border-radius: 50%;
|
||||
text-align: center;
|
||||
color: var(--heading-color);
|
||||
color: #ffff;
|
||||
-webkit-box-shadow: 0px 4px 60px rgba(0, 0, 0, 0.15);
|
||||
box-shadow: 0px 4px 60px rgba(0, 0, 0, 0.15);
|
||||
z-index: 10;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
|
||||
.slick-arrow {
|
||||
right: 98%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
|
||||
.slick-arrow {
|
||||
right: 97%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
|
||||
.slick-arrow {
|
||||
right: 92%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
|
||||
.slick-prev {
|
||||
left: -1% !important;
|
||||
}
|
||||
}
|
||||
|
||||
.slick-arrow:focus,
|
||||
@ -4549,6 +4585,12 @@ h6,
|
||||
}
|
||||
}
|
||||
|
||||
.new-class{
|
||||
|
||||
font-size: 16px;
|
||||
|
||||
}
|
||||
|
||||
.main-header .logo {
|
||||
z-index: 9;
|
||||
padding: 2px 0;
|
||||
@ -4858,7 +4900,7 @@ h6,
|
||||
align-items: center;
|
||||
-webkit-box-pack: start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: start;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
@ -7431,7 +7473,7 @@ h6,
|
||||
display: flex;
|
||||
-webkit-box-align: start;
|
||||
-ms-flex-align: start;
|
||||
align-items: start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.about-btn-customer .theme-btn {
|
||||
@ -8185,7 +8227,7 @@ h6,
|
||||
display: flex;
|
||||
-webkit-box-align: end;
|
||||
-ms-flex-align: end;
|
||||
align-items: end;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.food-menu-item.style-two .content h5 .title {
|
||||
@ -8206,6 +8248,12 @@ h6,
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
@media(max-width:425px) {
|
||||
.food-menu-item.style-two .content h5 .price {
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.food-menu-item.style-two .content p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
@ -8225,7 +8273,11 @@ h6,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media(max-width:425px) {
|
||||
.food-menu-item.style-two .content h5 {
|
||||
font-size: 17px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.popular-menu-wrap {
|
||||
@ -9756,7 +9808,7 @@ h6,
|
||||
|
||||
@media only screen and (max-width: 479px) {
|
||||
.testimonial-two-item .text {
|
||||
font-size: 20px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
@ -10775,7 +10827,7 @@ h6,
|
||||
align-items: center;
|
||||
-webkit-box-pack: start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: start;
|
||||
justify-content: flex-start;
|
||||
text-transform: uppercase;
|
||||
font-family: var(--heading-font);
|
||||
}
|
||||
@ -12281,6 +12333,8 @@ blockquote .blockquote-footer:before {
|
||||
.slick-prev,
|
||||
.slick-next {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background: #222222;
|
||||
@ -12289,16 +12343,18 @@ blockquote .blockquote-footer:before {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
|
||||
.slick-prev {
|
||||
left: 0%;
|
||||
top: 25%;
|
||||
left: -3%;
|
||||
top: 40%;
|
||||
}
|
||||
|
||||
.slick-next {
|
||||
right: -3% !important;
|
||||
top: 25%
|
||||
top: 40%
|
||||
}
|
||||
|
||||
.about-biryani-category-1 {
|
||||
@ -12315,6 +12371,13 @@ blockquote .blockquote-footer:before {
|
||||
right: -40px !important;
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
|
||||
.custom-next-arrow {
|
||||
right: 0px !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* For screen widths 1024px and below */
|
||||
@media (max-width: 1024px) {
|
||||
.custom-prev-arrow {
|
||||
@ -12352,4 +12415,22 @@ blockquote .blockquote-footer:before {
|
||||
.about-biryani-category-1 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 320px) {
|
||||
.slick-arrow {
|
||||
right: 87%;
|
||||
}
|
||||
|
||||
.food-menu-tab .nav-link {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 8px;
|
||||
padding-left: 7px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.food-menu-tab .nav-link span {
|
||||
margin-top: 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
@ -4825,7 +4825,7 @@ h6,
|
||||
align-items: center;
|
||||
-webkit-box-pack: start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: start;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
@ -7308,7 +7308,7 @@ h6,
|
||||
display: flex;
|
||||
-webkit-box-align: start;
|
||||
-ms-flex-align: start;
|
||||
align-items: start;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.about-btn-customer .theme-btn {
|
||||
@ -8052,7 +8052,7 @@ h6,
|
||||
display: flex;
|
||||
-webkit-box-align: end;
|
||||
-ms-flex-align: end;
|
||||
align-items: end;
|
||||
align-items: flex-end;
|
||||
}
|
||||
|
||||
.food-menu-item.style-two .content h5 .title {
|
||||
@ -10575,7 +10575,7 @@ h6,
|
||||
align-items: center;
|
||||
-webkit-box-pack: start;
|
||||
-ms-flex-pack: start;
|
||||
justify-content: start;
|
||||
justify-content: flex-start;
|
||||
text-transform: uppercase;
|
||||
font-family: var(--heading-font);
|
||||
}
|
||||
|
||||
BIN
public/assets/images/about/ambur_chicken_biryani.webp
Normal file
BIN
public/assets/images/about/ambur_chicken_biryani.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
public/assets/images/about/mutton-biryani.webp
Normal file
BIN
public/assets/images/about/mutton-biryani.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
BIN
public/assets/images/blog/blog-large-1.jpg
Normal file
BIN
public/assets/images/blog/blog-large-1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 62 KiB |
BIN
public/assets/images/home/shiva-sakthi-web-banner.webp
Normal file
BIN
public/assets/images/home/shiva-sakthi-web-banner.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
@ -1 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://shivasakthi.ca/</loc><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://shivasakthi.ca/about</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/menu</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/blog</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/contact</loc><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://shivasakthi.ca/blog/the-flavors-of-north-india-more-than-just-curries</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-secret-to-perfect-north-indian-curries</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-rich-history-of-south-indian-cuisine</loc><changefreq>weekly</changefreq><priority>0.6</priority></url></urlset>
|
||||
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://shivasakthi.ca/</loc><changefreq>daily</changefreq><priority>1.0</priority></url><url><loc>https://shivasakthi.ca/about/</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/menu/</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/blog/</loc><changefreq>weekly</changefreq><priority>0.7</priority></url><url><loc>https://shivasakthi.ca/contact-south-indian-restaurant/</loc><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://shivasakthi.ca/blog/the-flavors-of-north-india-more-than-just-curries/</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-secret-to-perfect-north-indian-curries/</loc><changefreq>weekly</changefreq><priority>0.6</priority></url><url><loc>https://shivasakthi.ca/blog/the-rich-history-of-south-indian-cuisine/</loc><changefreq>weekly</changefreq><priority>0.6</priority></url></urlset>
|
||||
@ -1,47 +1,79 @@
|
||||
const fs = require('fs');
|
||||
const { SitemapStream, streamToPromise } = require('sitemap');
|
||||
const path = require('path');
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const { SitemapStream, streamToPromise } = require("sitemap");
|
||||
|
||||
const hostname = "https://shivasakthi.ca";
|
||||
const addTrailingSlash = true; // Set true if your Next.js has trailingSlash: true
|
||||
|
||||
// ✅ Utility to control trailing slashes
|
||||
const shouldAddSlash = (url) => {
|
||||
if (url === "/") return false;
|
||||
if (/\.[a-z0-9]{2,6}(\?.*)?$/i.test(url)) return false;
|
||||
return true;
|
||||
};
|
||||
|
||||
const formatUrl = (url) => {
|
||||
if (!url.startsWith("/")) url = "/" + url;
|
||||
|
||||
if (addTrailingSlash && shouldAddSlash(url) && !url.endsWith("/")) {
|
||||
return url + "/";
|
||||
}
|
||||
if (!addTrailingSlash && url.endsWith("/") && url !== "/") {
|
||||
return url.slice(0, -1);
|
||||
}
|
||||
return url;
|
||||
};
|
||||
|
||||
// ✅ Static pages
|
||||
const staticLinks = [
|
||||
{ url: '/', changefreq: 'daily', priority: 1.0 },
|
||||
{ url: '/about', changefreq: 'weekly', priority: 0.7 },
|
||||
{ url: '/menu', changefreq: 'weekly', priority: 0.7 },
|
||||
{ url: '/blog', changefreq: 'weekly', priority: 0.7 },
|
||||
{ url: '/contact', changefreq: 'monthly', priority: 0.5 }
|
||||
{ url: "/", changefreq: "daily", priority: 1.0 },
|
||||
{ url: "/about", changefreq: "weekly", priority: 0.7 },
|
||||
{ url: "/menu", changefreq: "weekly", priority: 0.7 },
|
||||
{ url: "/blog", changefreq: "weekly", priority: 0.7 },
|
||||
{ url: "/contact-south-indian-restaurant", changefreq: "monthly", priority: 0.5 },
|
||||
];
|
||||
|
||||
// ✅ Dynamic blog posts (example)
|
||||
const blogPosts = [
|
||||
{ slug: 'the-flavors-of-north-india-more-than-just-curries' },
|
||||
{ slug: 'the-secret-to-perfect-north-indian-curries' },
|
||||
{ slug: 'the-rich-history-of-south-indian-cuisine' }
|
||||
{ slug: "/blog/the-flavors-of-north-india-more-than-just-curries/" },
|
||||
{ slug: "/blog/the-secret-to-perfect-north-indian-curries/" },
|
||||
{ slug: "/blog/the-rich-history-of-south-indian-cuisine/" },
|
||||
];
|
||||
|
||||
// Convert blog slugs to sitemap entries
|
||||
const blogLinks = blogPosts.map(post => ({
|
||||
url: `/blog/${post.slug}`,
|
||||
changefreq: 'weekly',
|
||||
priority: 0.6
|
||||
// // Convert blog slugs to sitemap entries
|
||||
const blogLinks = blogPosts.map((post) => ({
|
||||
url: formatUrl(post.slug),
|
||||
changefreq: "weekly",
|
||||
priority: 0.6,
|
||||
}));
|
||||
|
||||
const allLinks = [...staticLinks, ...blogLinks];
|
||||
const allLinks = [...staticLinks, ...blogLinks].map((link) => ({
|
||||
...link,
|
||||
url: formatUrl(link.url),
|
||||
}));
|
||||
|
||||
async function generateSitemap() {
|
||||
try {
|
||||
const sitemap = new SitemapStream({ hostname: 'https://shivasakthi.ca/' });
|
||||
const writeStream = fs.createWriteStream(path.resolve(__dirname, '../public/sitemap.xml'));
|
||||
try {
|
||||
const sitemap = new SitemapStream({ hostname });
|
||||
const writeStream = fs.createWriteStream(
|
||||
path.resolve(__dirname, "../public/sitemap.xml")
|
||||
);
|
||||
|
||||
sitemap.pipe(writeStream);
|
||||
sitemap.pipe(writeStream);
|
||||
|
||||
allLinks.forEach(link => sitemap.write(link));
|
||||
sitemap.end();
|
||||
console.log("📦 Writing URLs to sitemap:");
|
||||
allLinks.forEach((link) => {
|
||||
const fullUrl = `${hostname}${link.url}`;
|
||||
console.log(" -", fullUrl);
|
||||
sitemap.write(link);
|
||||
});
|
||||
|
||||
await streamToPromise(sitemap);
|
||||
console.log('✅ sitemap.xml created with blog slugs!');
|
||||
} catch (error) {
|
||||
console.error('❌ Error creating sitemap.xml:', error);
|
||||
}
|
||||
sitemap.end();
|
||||
await streamToPromise(sitemap);
|
||||
|
||||
console.log("✅ sitemap.xml created successfully!");
|
||||
} catch (error) {
|
||||
console.error("❌ Error creating sitemap.xml:", error);
|
||||
}
|
||||
}
|
||||
|
||||
generateSitemap();
|
||||
|
||||
@ -3,8 +3,10 @@ export const Blog = [
|
||||
id: 1,
|
||||
slug: "the-flavors-of-north-india-more-than-just-curries",
|
||||
image: "/assets/images/blog/blog-1.webp",
|
||||
bigImage:"/assets/images/blog/blog-large-1.webp",
|
||||
bigImage: "/assets/images/blog/blog-large-1.jpg ",
|
||||
title: "The Flavors of North India: More Than Just Curries",
|
||||
metatitle: "Flavors of North India: Beyond Just Curries | Shiva Shakthi",
|
||||
metadescription: "Explore the aromatic breads, tandoori delights, rice dishes & hearty vegetarian staples that make North Indian cuisine so much more than just curries.",
|
||||
user: "Admin",
|
||||
date: "05 Dec 2024",
|
||||
short_des: "Exploring the Bread, Tandoor, and Delights of North Indian Cuisine 'North Indian cuisine is not only about rich curries but also a vibrant array of breads, tandoor-cooked",
|
||||
@ -123,8 +125,10 @@ export const Blog = [
|
||||
id: 2,
|
||||
slug: "the-secret-to-perfect-north-indian-curries",
|
||||
image: "/assets/images/blog/blog-2.webp",
|
||||
bigImage:"/assets/images/blog/blog-large-2.webp",
|
||||
bigImage: "/assets/images/blog/blog-large-2.webp",
|
||||
title: "The Secret to Perfect North Indian Curries",
|
||||
metatitle: "The Secret to Perfect North Indian Curries | Shiva Shakthi",
|
||||
metadescription: "Discover how Shiva Shakthi crafts irresistible North Indian curries — from slow-cooked bases and toasted spices to creamy textures and balanced flavors.",
|
||||
user: "Admin",
|
||||
date: "05 Dec 2024",
|
||||
short_des: "Unlocking the Flavors of Authentic North Indian CuisineNorth Indian curries are the heart and soul of Indian cuisine, known for their rich textures, deep flavors, and",
|
||||
@ -229,8 +233,10 @@ export const Blog = [
|
||||
id: 3,
|
||||
slug: "the-rich-history-of-south-indian-cuisine",
|
||||
image: "/assets/images/blog/blog-3.webp",
|
||||
bigImage:"/assets/images/blog/blog-large-3.webp",
|
||||
bigImage: "/assets/images/blog/blog-large-3.webp",
|
||||
title: "The Rich History of South Indian Cuisine",
|
||||
metatitle: "The Rich History of South Indian Cuisine | Shiva Sakthi",
|
||||
metadescription: "Explore the rich history of South Indian cuisine from dosa and sambar origins to regional diversity & authentic flavors at Shiva Sakthi’s culinary journey.",
|
||||
user: "Admin",
|
||||
date: "05 Dec 2024",
|
||||
short_des: "A Journey Through Time: The Story of South Indian Cuisine",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user