add Chennora Theme module with a custom homepage template.

This commit is contained in:
Alaguraj0361 2026-01-29 10:24:40 +05:30
parent e116b72a5b
commit 1287a329bb
3 changed files with 122 additions and 63 deletions

View File

@ -1,7 +1,7 @@
{ {
'name': 'Chennora Theme', 'name': 'Chennora Theme',
'description': 'Custom theme for Chennora website', 'description': 'Custom theme for Chennora website',
'category': 'Theme/Creative', 'category': 'Theme/Website',
'version': '1.0', 'version': '1.0',
'author': 'Your Company', 'author': 'Your Company',
'depends': ['website', 'website_sale'], 'depends': ['website', 'website_sale'],
@ -20,6 +20,6 @@
'images': [ 'images': [
], ],
'installable': True, 'installable': True,
'application': False, 'application': True,
'license': 'LGPL-3', 'license': 'LGPL-3',
} }

View File

@ -7,10 +7,7 @@
<!-- ====================================================== --> <!-- ====================================================== -->
<template id="custom_homepage" inherit_id="website.homepage" name="Chennora Homepage"> <template id="custom_homepage" inherit_id="website.homepage" name="Chennora Homepage">
<xpath expr="//div[@id='wrap']" position="replace"> <xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure"> <div id="wrap" class="oe_structure oe_empty"><section class="s_carousel_wrapper o_half_screen_height" data-vxml="001" data-snippet="s_carousel" data-name="Carousel">
<t t-name="website.home">
<t t-call="website.layout">
<div id="wrap" class="oe_structure oe_empty"><section class="s_carousel_wrapper o_half_screen_height" data-vxml="001" data-snippet="s_carousel" data-name="Carousel">
<div class="s_carousel carousel s_carousel_rounded slide" data-bs-interval="10000" id="myCarousel1769233718425" style="background-image: none;"> <div class="s_carousel carousel s_carousel_rounded slide" data-bs-interval="10000" id="myCarousel1769233718425" style="background-image: none;">
<ol class="carousel-indicators o_we_no_overlay"> <ol class="carousel-indicators o_we_no_overlay">
@ -343,10 +340,7 @@ Chennora is rated among the best Indian restaurants in Brampton, offering authen
</section> </section>
<section class="s_image_gallery o_colored_level o_masonry o_spc-small o_full_screen_height pt88 pb88" data-vcss="001" data-columns="3" style="overflow: hidden; background-color: rgb(244, 241, 234);" data-snippet="s_images_wall" data-name="Images Wall"> <section class="s_image_gallery o_colored_level o_masonry o_spc-small o_full_screen_height pt88 pb88" data-vcss="001" data-columns="3" style="overflow: hidden; background-color: rgb(244, 241, 234);" data-snippet="s_images_wall" data-name="Images Wall">
<div class="container"><div class="row s_nb_column_fixed"><div class="o_masonry_col o_snippet_not_selectable col-lg-4"><img src="/web/image/1161-29a55824/2.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1141" data-original-src="/web/image/1141-88fd5340/2.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="2.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/><img src="/web/image/1164-aa20369a/5.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1147" data-original-src="/web/image/1147-469da4f8/5.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="5.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/></div><div class="o_masonry_col o_snippet_not_selectable col-lg-4"><img src="/web/image/1163-b94d1989/3.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1143" data-original-src="/web/image/1143-62197fdb/3.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="3.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/><img src="/web/image/1165-f2a91b13/6.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1149" data-original-src="/web/image/1149-1e98fb01/6.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="6.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/></div><div class="o_masonry_col o_snippet_not_selectable col-lg-4"><img src="/web/image/1167-bd1894cc/4.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1145" data-original-src="/web/image/1145-5c5e2c76/4.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="4.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/><img src="/web/image/1166-5b32b24f/7.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1151" data-original-src="/web/image/1151-17e406c0/7.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="7.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/></div></div></div> <div class="container"><div class="row s_nb_column_fixed"><div class="o_masonry_col o_snippet_not_selectable col-lg-4"><img src="/web/image/1161-29a55824/2.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1141" data-original-src="/web/image/1141-88fd5340/2.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="2.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/><img src="/web/image/1164-aa20369a/5.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1147" data-original-src="/web/image/1147-469da4f8/5.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="5.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/></div><div class="o_masonry_col o_snippet_not_selectable col-lg-4"><img src="/web/image/1163-b94d1989/3.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1143" data-original-src="/web/image/1143-62197fdb/3.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="3.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/><img src="/web/image/1165-f2a91b13/6.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1149" data-original-src="/web/image/1149-1e98fb01/6.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="6.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/></div><div class="o_masonry_col o_snippet_not_selectable col-lg-4"><img src="/web/image/1167-bd1894cc/4.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1145" data-original-src="/web/image/1145-5c5e2c76/4.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="4.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/><img src="/web/image/1166-5b32b24f/7.svg" alt="" class="img img-fluid d-block o_we_custom_image" data-mimetype="image/svg+xml" data-original-id="1151" data-original-src="/web/image/1151-17e406c0/7.webp" data-mimetype-before-conversion="image/webp" data-resize-width="384" data-shape="web_editor/geometric_round/geo_round_square_1" data-file-name="7.svg" data-shape-colors=";;;;" data-original-mimetype="image/webp" loading="lazy"/></div></div></div>
</section></div> </section>
</t>
</t>
</div> </div>
</xpath> </xpath>
</template> </template>
@ -358,11 +352,6 @@ Chennora is rated among the best Indian restaurants in Brampton, offering authen
<template id="custom_aboutus" inherit_id="website.aboutus" name="Chennora About Us"> <template id="custom_aboutus" inherit_id="website.aboutus" name="Chennora About Us">
<xpath expr="//div[@id='wrap']" position="replace"> <xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure"> <div id="wrap" class="oe_structure">
<t name="About Us" t-name="website.aboutus">
<t t-call="website.layout">
<div id="wrap">
<div class="oe_structure">
<section class="s_title parallax s_parallax_is_fixed bg-black-50 pt24 pb24" data-vcss="001" data-snippet="s_title" data-scroll-background-ratio="1"> <section class="s_title parallax s_parallax_is_fixed bg-black-50 pt24 pb24" data-vcss="001" data-snippet="s_title" data-scroll-background-ratio="1">
<span class="s_parallax_bg oe_img_bg" style="background-image: url('/web/image/website.s_parallax_default_image'); background-position: 50% 0;"/> <span class="s_parallax_bg oe_img_bg" style="background-image: url('/web/image/website.s_parallax_default_image'); background-position: 50% 0;"/>
<div class="o_we_bg_filter bg-black-50"/> <div class="o_we_bg_filter bg-black-50"/>
@ -371,12 +360,6 @@ Chennora is rated among the best Indian restaurants in Brampton, offering authen
</div> </div>
</section> </section>
</div> </div>
<div class="oe_structure"/>
</div>
</t>
</t>
</div>
</xpath> </xpath>
</template> </template>
@ -390,48 +373,124 @@ Chennora is rated among the best Indian restaurants in Brampton, offering authen
<template id="custom_contactus" inherit_id="website.contactus" name="Chennora Contact Us"> <template id="custom_contactus" inherit_id="website.contactus" name="Chennora Contact Us">
<xpath expr="//div[@id='wrap']" position="replace"> <xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure"> <div id="wrap" class="oe_structure">
<t t-name="base.contact"> <section class="s_title o_colored_level pt96 pb96" data-vcss="001" data-snippet="s_title" data-name="Title" style="background-color: rgb(4, 18, 29); background-image: none;">
<address t-ignore="true" class="o_portal_address mb-0" itemscope="itemscope" itemtype="http://schema.org/Organization"> <div class="container s_allow_columns">
<div t-if="not (('name' in fields) or (address and 'address' in fields) or (city and 'city' in fields) or (mobile and 'mobile' in fields) or (website and 'website' in fields) or (email and 'email' in fields))" class="css_non_editable_mode_hidden"> <h1 class="display-3-fs text-center" style="text-align: center;"><font class="text-o-color-3">Contact Us</font></h1>
--<span class="text-muted" t-esc="name"/>-- <p class="lead text-center" style="text-align: center;"><font class="text-o-color-3">Have questions? We're here to help!</font></p>
</div> </div>
<t t-if="object.country_id.name_position != 'after'"> </section>
<t t-call="base.contact_name"/> <section class="s_text_block pt40 pb40 o_colored_level" data-snippet="s_text_block" data-name="Text" style="background-color: rgb(244, 241, 234);">
</t> <div class="container s_allow_columns">
<div class="gap-2" itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress"> <div class="row">
<div t-if="address and 'address' in fields" t-attf-class="d-flex align-items-baseline gap-1"> <div class="col-lg-4 pt24 pb24 o_colored_level o_animate o_anim_zoom_in">
<i t-if="not options.get('no_marker')" class="fa fa-map-marker fa-fw" role="img" aria-label="Address" title="Address"/> <div class="card bg-white h-100 border-0 shadow-sm" style="border-radius: 15px;">
<span class="d-block w-100 lh-sm" itemprop="streetAddress" t-esc="address"/> <div class="card-body text-center p-4">
</div> <i class="fa fa-map-marker fa-3x mb-3" style="color: rgb(254, 205, 79);"/>
<div t-if="city and 'city' in fields" t-attf-class="d-flex align-items-baseline gap-1"> <h4>Our Address</h4>
<i t-if="not options.get('no_marker')" class="fa fa-map-marker fa-fw" role="img" aria-label="Address" title="Address"/> <p>123 Restaurant Row,<br/>Brampton, ON L6X 1A1</p>
<span> </div>
<div> </div>
<span itemprop="addressLocality" t-esc="city"/>, </div>
<span itemprop="addressCountry" t-esc="country_id"/> <div class="col-lg-4 pt24 pb24 o_colored_level o_animate o_anim_zoom_in" style="animation-delay: 0.2s;">
</div> <div class="card bg-white h-100 border-0 shadow-sm" style="border-radius: 15px;">
</span> <div class="card-body text-center p-4">
</div> <i class="fa fa-phone fa-3x mb-3" style="color: rgb(254, 205, 79);"/>
<div class="d-flex align-items-center gap-1" t-if="phone and 'phone' in fields"> <h4>Phone Number</h4>
<i t-if="not options.get('no_marker') or options.get('phone_icons')" class="fa fa-phone fa-fw" role="img" aria-label="Phone" title="Phone"/> <span class="o_force_ltr" itemprop="telephone" t-esc="phone"/> <p>+1 (905) 555-0123</p>
</div> </div>
<div class="d-flex align-items-center gap-1" t-if="mobile and 'mobile' in fields"> </div>
<i t-if="not options.get('no_marker') or options.get('phone_icons')" class="fa fa-mobile fa-fw" role="img" aria-label="Mobile" title="Mobile"/> <span class="o_force_ltr" itemprop="telephone" t-esc="mobile"/> </div>
</div> <div class="col-lg-4 pt24 pb24 o_colored_level o_animate o_anim_zoom_in" style="animation-delay: 0.4s;">
<!-- Prevent issue with iOS Safari parsing of schema data without telephone itemprops --> <div class="card bg-white h-100 border-0 shadow-sm" style="border-radius: 15px;">
<div t-if="not (phone and 'phone' in fields) and not (mobile and 'mobile' in fields)" itemprop="telephone"/> <div class="card-body text-center p-4">
<div class="d-flex align-items-center gap-1" t-if="website and 'website' in fields"> <i class="fa fa-envelope fa-3x mb-3" style="color: rgb(254, 205, 79);"/>
<i t-if="not options.get('no_marker')" class="fa fa-globe fa-fw" role="img" aria-label="Website" title="Website"/> <h4>Email Address</h4>
<a t-att-href="website and '%s%s' % ('http://' if '://' not in website else '',website)"><span itemprop="website" t-esc="website"/></a> <p>info@chennora.com</p>
</div> </div>
<div class="d-flex align-items-center gap-1" t-if="email and 'email' in fields"><i t-if="not options.get('no_marker')" class="fa fa-envelope fa-fw" role="img" aria-label="Email" title="Email"/> <span class="text-break" itemprop="email" t-esc="email"/></div> </div>
</div> </div>
<div t-if="vat and 'vat' in fields"><span t-esc="vat_label"/>: <span itemprop="vatID" t-esc="vat"/></div> </div>
<t t-if="object.country_id and object.country_id.name_position == 'after'"> </div>
<t t-call="base.contact_name"/> </section>
</t> <section class="s_website_form pt64 pb64 o_colored_level" data-vcss="001" data-snippet="s_website_form">
</address> <div class="container">
</t> <h2 class="text-center mb-5">Send us a Message</h2>
<div class="row">
<div class="col-lg-8 offset-lg-2">
<div id="contactus_form_container" class="bg-white p-5 shadow-sm" style="border-radius: 15px;">
<form action="/website/form/" method="post" enctype="multipart/form-data" class="o_mark_required" data-mark="*" data-model_name="mail.mail" data-success-mode="redirect" data-success-page="/contactus-thank-you">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<div class="s_website_form_rows row g-4">
<!-- Name -->
<div class="col-12 s_website_form_field s_website_form_custom s_website_form_required" data-type="char" data-name="Field">
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label" style="width: 150px" for="contact_name">
<span class="s_website_form_label_content">Your Name</span>
<span class="s_website_form_mark">*</span>
</label>
<div class="col-sm">
<input type="text" class="form-control s_website_form_input" name="name" required="" id="contact_name"/>
</div>
</div>
</div>
<!-- Email -->
<div class="col-12 s_website_form_field s_website_form_custom s_website_form_required" data-type="email" data-name="Field">
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label" style="width: 150px" for="contact_email">
<span class="s_website_form_label_content">Email Address</span>
<span class="s_website_form_mark">*</span>
</label>
<div class="col-sm">
<input type="email" class="form-control s_website_form_input" name="email_from" required="" id="contact_email"/>
</div>
</div>
</div>
<!-- Phone -->
<div class="col-12 s_website_form_field s_website_form_custom" data-type="char" data-name="Field">
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label" style="width: 150px" for="contact_phone">
<span class="s_website_form_label_content">Phone Number</span>
</label>
<div class="col-sm">
<input type="tel" class="form-control s_website_form_input" name="phone" id="contact_phone"/>
</div>
</div>
</div>
<!-- Subject -->
<div class="col-12 s_website_form_field s_website_form_custom" data-type="char" data-name="Field">
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label" style="width: 150px" for="contact_subject">
<span class="s_website_form_label_content">Subject</span>
</label>
<div class="col-sm">
<input type="text" class="form-control s_website_form_input" name="subject" id="contact_subject"/>
</div>
</div>
</div>
<!-- Message -->
<div class="col-12 s_website_form_field s_website_form_custom s_website_form_required" data-type="text" data-name="Field">
<div class="row s_col_no_resize s_col_no_bgcolor">
<label class="col-form-label col-sm-auto s_website_form_label" style="width: 150px" for="contact_message">
<span class="s_website_form_label_content">Your Message</span>
<span class="s_website_form_mark">*</span>
</label>
<div class="col-sm">
<textarea class="form-control s_website_form_input" name="description" rows="5" required="" id="contact_message"></textarea>
</div>
</div>
</div>
<!-- Submit -->
<div class="col-12 s_website_form_submit text-end" data-name="Submit Button">
<button type="submit" class="btn btn-primary btn-lg px-5 flat" style="background-color: rgb(4, 18, 29); border-color: rgb(4, 18, 29); border-radius: 5px;">Send Message</button>
<span id="s_website_form_result"></span>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
</div> </div>
</xpath> </xpath>
</template> </template>