Introduce Chennora Odoo theme with custom homepage, styling, and assets.

This commit is contained in:
Alaguraj0361 2026-01-28 17:37:28 +05:30
parent 0444eb4c94
commit 63c6edc4a7
11 changed files with 764 additions and 0 deletions

View File

View File

@ -0,0 +1,25 @@
{
'name': 'Chennora Theme',
'description': 'Custom theme for Chennora website',
'category': 'Theme/Creative',
'version': '1.0',
'author': 'Your Company',
'depends': ['website', 'website_sale'],
'data': [
'views/layout.xml', # Header, Footer, and Global Layout changes
'views/pages.xml', # specific page content (Home, About, etc.)
'views/snippets.xml', # Custom Building Blocks
'views/options.xml', # Options for snippets (if any)
],
'assets': {
'web.assets_frontend': [
'theme_chennora/static/src/scss/primary_variables.scss',
'theme_chennora/static/src/scss/theme.scss',
],
},
'images': [
],
'installable': True,
'application': False,
'license': 'LGPL-3',
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

View File

@ -0,0 +1,13 @@
/* Define your SCSS variables here.
Verify Odoo documentation for official variable names.
Example:
$o-color-palettes: (
'my-palette': (
'o-color-1': #111111,
'o-color-2': #222222,
'o-color-3': #333333,
'o-color-4': #444444,
'o-color-5': #555555,
),
);
*/

View File

@ -0,0 +1 @@
/* Put your custom CSS/SCSS rules here */

View File

@ -0,0 +1,229 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="custom_main_layout" inherit_id="website.layout" name="Chennora Main Layout" priority="50">
<xpath expr="//html" position="before">
<!-- [ORIGINAL CONTENT PRESERVED] -->
<t t-set="html_data" t-value="{ 'lang': lang and lang.replace('_', '-'), 'data-website-id': website.id if website else None, 'data-edit_translations': '1' if edit_translations else None, 'data-main-object': repr(main_object) if main_object else None, 'data-seo-object': repr(seo_object) if seo_object else None, }"/>
<t t-if="not request.env.user._is_public()" t-set="nothing" t-value="html_data.update({ 'data-is-published': 'website_published' in main_object.fields_get() and main_object.website_published, 'data-can-optimize-seo': 'website_meta_description' in main_object.fields_get(), 'data-can-publish': 'can_publish' in main_object.fields_get() and main_object.can_publish, 'data-editable-in-backend': edit_in_backend or ('website_published' in main_object.fields_get() and main_object._name != 'website.page'), })"/>
<!--
TODO Review in master (this is a stable fix for new databases).
See REVIEW_CAN_PUBLISH_UNSUDO.
-->
<t t-if="html_data and html_data.get('data-can-publish') == True">
<t t-set="nothing" t-value="html_data.update({ 'data-can-publish': 'can_publish' in main_object.fields_get() and main_object.sudo(flag=False).can_publish, })"/>
</t>
<t t-if="editable or translatable" t-set="nothing" t-value="html_data.update({ 'data-editable': '1' if editable else None, 'data-translatable': '1' if translatable else None, 'data-view-xmlid': xmlid, 'data-viewid': viewid, })"/>
</xpath>
<xpath expr="//head" position="attributes">
<!--
Cache the <head> of the website.layout:
- For each individual website.page record (their css/js might be the
same but their title will not for example). Arguably we could do this
for any record (not only website.page) but this t-cache was originally
added to replace the website.page own cache system. For other records,
it could probably depend on each individual access right.
- Only for non-designers (especially visitors) (hence the "editable or
translatable" check).
- Only if not in any debug mode (we want any correct value of debug mode
to correctly appear in the `odoo` object + assets may depend on this
(e.g. debug=assets or debug=tests)).
-->
<attribute name="t-cache">main_object if main_object and main_object._name == 'website.page' and not request.session.debug and not editable and not translatable else None</attribute>
</xpath>
<xpath expr="//head/*[1]" position="before">
<t t-if="not title">
<t t-if="not additional_title and main_object and 'name' in main_object">
<t t-set="additional_title" t-value="main_object.name"/>
</t>
<t t-set="default_title" t-translation="off" t-value="(additional_title + ' | ' if additional_title else '') + (website or res_company).name"/>
<t t-set="seo_object" t-value="seo_object or main_object"/>
<t t-if="seo_object and 'website_meta_title' in seo_object and seo_object.website_meta_title">
<t t-set="title" t-value="seo_object.website_meta_title"/>
</t>
<t t-else="">
<t t-set="title" t-value="default_title"/>
</t>
</t>
<t t-set="x_icon" t-value="website.image_url(website, 'favicon')"/>
</xpath>
<xpath expr="//head/meta[last()]" position="after">
<meta name="generator" content="Odoo"/>
<t t-set="website_meta" t-value="seo_object and seo_object.get_website_meta() or {}"/>
<meta name="default_title" t-att-content="default_title" groups="website.group_website_designer"/>
<meta t-if="(main_object and 'website_indexed' in main_object and not main_object.website_indexed) or (website.domain and not website._is_indexable_url(request.httprequest.url_root))" name="robots" content="noindex"/>
<t t-set="seo_object" t-value="seo_object or main_object"/>
<t t-set="meta_description" t-value="seo_object and 'website_meta_description' in seo_object and seo_object.website_meta_description or website_meta_description or website_meta.get('meta_description', '')"/>
<t t-set="meta_keywords" t-value="seo_object and 'website_meta_keywords' in seo_object and seo_object.website_meta_keywords or website_meta_keywords"/>
<meta t-if="meta_description or editable" name="description" t-att-content="meta_description"/>
<meta t-if="meta_keywords or editable" name="keywords" t-att-content="meta_keywords"/>
<t t-if="seo_object">
<meta name="default_description" t-att-content="website_meta_description or website_meta.get('meta_description')" groups="website.group_website_designer"/>
<!-- OpenGraph tags for Facebook sharing -->
<t t-set="opengraph_meta" t-value="website_meta.get('opengraph_meta')"/>
<t t-if="opengraph_meta">
<t t-foreach="opengraph_meta" t-as="property">
<t t-if="isinstance(opengraph_meta[property], list)">
<t t-foreach="opengraph_meta[property]" t-as="meta_content">
<meta t-att-property="property" t-att-content="meta_content"/>
</t>
</t>
<t t-else="">
<meta t-att-property="property" t-att-content="opengraph_meta[property]"/>
</t>
</t>
</t>
<!-- Twitter tags for sharing -->
<t t-set="twitter_meta" t-value="website_meta.get('twitter_meta')"/>
<t t-if="opengraph_meta">
<t t-foreach="twitter_meta" t-as="t_meta">
<meta t-att-name="t_meta" t-att-content="twitter_meta[t_meta]"/>
</t>
</t>
</t>
<!-- `alternate`/`canonical` mainly useful to crawlers/bots/SEO tools, which test the website as public user -->
<t t-if="request and request.is_frontend_multilang and website and website.is_public_user()">
<t t-set="alternate_languages" t-value="website._get_alternate_languages(canonical_params=canonical_params)"/>
<t t-foreach="alternate_languages" t-as="lg">
<link rel="alternate" t-att-hreflang="lg['hreflang']" t-att-href="lg['href']"/>
</t>
</t>
<link t-if="request and website and website.is_public_user()" rel="canonical" t-att-href="website._get_canonical_url(canonical_params=canonical_params)"/>
<!-- TODO: Once we have style in DB, add this preconnect only if a
google font is actually used. Note that if no font is used, the
preconnect is actually not connecting to the google servers. -->
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin=""/>
</xpath>
<xpath expr="//header" position="attributes">
<attribute name="data-name">Header</attribute>
<attribute name="t-att-data-extra-items-toggle-aria-label">extra_items_toggle_aria_label</attribute>
</xpath>
<xpath expr="//header/t[@t-cache]" position="attributes">
<!-- website.is_public_user() is needed for menus having a page with
restricted visibility (only shown to logged in user): public users and
logged in users can't share the menu cache. -->
<attribute name="t-cache">None if website.is_menu_cache_disabled() else (xmlid,website,website.is_public_user())</attribute>
</xpath>
<xpath expr="//header" position="before">
<t t-set="cta_btn_text" t-value="False"/>
<t t-set="cta_btn_href">/contactus</t>
<t t-set="extra_items_toggle_aria_label">Extra items button</t>
</xpath>
<xpath expr="//footer" position="attributes">
<attribute name="data-name">Footer</attribute>
<!-- Background now controlled by css configuration, using color combinations -->
<attribute name="t-attf-class" add="o_colored_level o_cc" remove="bg-light" separator=" "/>
<!-- Add the main object as a cache key so that the footer_visible page
option is properly reflected across pages. Controllers and other objects
do not have any page option (yet) so they can share the same cache -->
<attribute name="t-cache" add="website,main_object._name == 'website.page' and main_object"/>
</xpath>
<xpath expr="//div[hasclass('o_footer_copyright')]" position="attributes">
<attribute name="data-name">Copyright</attribute>
<!-- Background now controlled by css configuration, using color combinations -->
<attribute name="class" add="o_colored_level o_cc" separator=" "/>
</xpath>
<xpath expr="//t[@t-call='web.brand_promotion']/.." position="attributes">
<attribute name="class" add="o_not_editable" separator=" "/>
<attribute name="t-if">not editable</attribute>
</xpath>
<xpath expr="//div[@id='wrapwrap']" position="after">
<t t-if="website and website.google_analytics_key and not editable">
<script id="tracking_code" t-attf-src="https://www.googletagmanager.com/gtag/js?id={{ website.google_analytics_key }}" async="async"/>
<script id="tracking_code_config">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
});
gtag('js', new Date());
gtag('config', '&lt;t t-esc="website.google_analytics_key"/&gt;');
function allConsentsGranted() {
gtag('consent', 'update', {
'ad_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'analytics_storage': 'granted',
});
}
<t t-if="website._allConsentsGranted()">
allConsentsGranted();
</t>
<t t-else="">
document.addEventListener(
"optionalCookiesAccepted",
allConsentsGranted,
{once: true}
);
</t>
</script>
</t>
<t t-if="website and website.plausible_shared_key and not editable">
<script id="plausible_script" name="plausible" defer="defer" t-att-data-domain="website.plausible_site" t-att-src="website._get_plausible_script_url()"/>
</t>
</xpath>
<!-- Page options -->
<xpath expr="//div[@id='wrapwrap']" position="before">
<t groups="website.group_website_restricted_editor">
<t t-foreach="['header_overlay', 'header_color', 'header_text_color', 'header_visible', 'footer_visible']" t-as="optionName">
<!-- Firefox autocomplete is too aggressive and works on hidden inputs,
so we need to disable it (https://bugzilla.mozilla.org/show_bug.cgi?id=520561) -->
<input t-if="optionName in main_object" type="hidden" class="o_page_option_data" autocomplete="off" t-att-name="optionName" t-att-value="main_object[optionName]"/>
</t>
</t>
<t t-set="header_bg_color" t-value="'header_color' in main_object and main_object.header_color or ''"/>
<t t-set="header_bg_color_is_class" t-value="'bg-' in header_bg_color"/>
<t t-set="header_bg_color_class" t-value="header_bg_color_is_class and header_bg_color or ''"/>
<t t-set="header_bg_color_style" t-value="(not header_bg_color_is_class) and header_bg_color or ''"/>
<t t-set="header_text_color" t-value="'header_text_color' in main_object and main_object.header_text_color or ''"/>
<t t-set="header_text_color_is_class" t-value="'text-' in header_text_color"/>
<t t-set="header_text_color_class" t-value="header_text_color_is_class and header_text_color or ''"/>
<t t-set="header_text_color_style" t-value="(not header_text_color_is_class) and header_text_color or ''"/>
<div groups="base.group_user" class="o_frontend_to_backend_nav position-fixed d-none">
<svg xmlns="http://www.w3.org/2000/svg" class="o_frontend_to_backend_icon position-absolute" width="24px" height="24px" viewBox="-7 -7 24 24" preserveAspectRatio="xMinYMin">
<path fill="#FFF" d="M8 8V1a1 1 0 1 1 2 0v8a1 1 0 0 1-1 1H1a1 1 0 1 1 0-2h7z"/>
</svg>
<div class="o_frontend_to_backend_buttons d-flex">
<a href="#" title="Go to your Odoo Apps" class="o_frontend_to_backend_apps_btn fa fa-th d-flex align-items-center justify-content-center text-decoration-none" data-bs-toggle="dropdown"/>
<div class="dropdown-menu o_frontend_to_backend_apps_menu" role="menu">
<a role="menuitem" class="dropdown-item" t-esc="menu['name']" t-as="menu" t-foreach="env['ir.ui.menu'].with_context(force_action=True).load_menus_root()['children']" t-attf-href="/web#menu_id=#{menu['id']}&amp;action=#{menu['action'] and menu['action'].split(',')[1] or ''}"/>
</div>
<a groups="website.group_website_restricted_editor" href="#" title="Edit this content" class="o_frontend_to_backend_edit_btn px-3 d-flex align-items-center justify-content-center text-decoration-none">
<img src="/website/static/description/icon.png" alt=""/>Editor
</a>
</div>
</div>
</xpath>
<xpath expr="//div[@id='wrapwrap']" position="attributes">
<attribute name="t-attf-class" add="#{'o_header_overlay' if 'header_overlay' in main_object and main_object.header_overlay else ''}" separator=" "/>
</xpath>
<xpath expr="//header" position="attributes">
<attribute name="t-attf-class" add="#{header_bg_color_class}" separator=" "/>
<attribute name="t-attf-style" add="#{header_bg_color_style and ('background-color: %s;' % header_bg_color_style)}" separator=" "/>
<attribute name="t-attf-class" add="#{header_text_color_class}" separator=" "/>
<attribute name="t-attf-style" add="#{header_text_color_style and ('color: %s;' % header_text_color_style)}" separator=" "/>
</xpath>
<xpath expr="//header" position="attributes">
<attribute name="t-attf-class" add="#{'d-none o_snippet_invisible' if 'header_visible' in main_object and not main_object.header_visible else ''}" separator=" "/>
<attribute name="t-att-data-invisible">'1' if 'header_visible' in main_object and not main_object.header_visible else None</attribute>
</xpath>
<xpath expr="//footer[@id='bottom']" position="attributes">
<attribute name="t-attf-class" add="#{'d-none o_snippet_invisible' if 'footer_visible' in main_object and not main_object.footer_visible else ''}" separator=" "/>
<attribute name="t-att-data-invisible">'1' if 'footer_visible' in main_object and not main_object.footer_visible else None</attribute>
</xpath>
</template>
</data>
</odoo>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!--
Snippet Options
Define options for your snippets (e.g. background color pickers, toggle switches).
-->
</data>
</odoo>

View File

@ -0,0 +1,458 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- ====================================================== -->
<!-- 1. HOME PAGE (Inherits and Replaces Default Home) -->
<!-- ====================================================== -->
<template id="custom_homepage" inherit_id="website.homepage" name="Chennora Homepage">
<xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure">
<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;">
<ol class="carousel-indicators o_we_no_overlay">
<li data-bs-target="#myCarousel1769233718425" class="active" data-bs-slide-to="0" aria-current="true"/>
<li data-bs-target="#myCarousel1769233718425" data-bs-slide-to="1"/>
<li data-bs-target="#myCarousel1769233718425" data-bs-slide-to="2"/>
</ol>
<div class="carousel-inner">
<div class="carousel-item o_colored_level pb256 pt256 active oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/theme_chennora/static/src/img/chen-banner-1.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1135" data-original-src="/web/image/1135-573357bb/chen-banner-1.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="oe_unremovable container">
<div class="row">
<div class="carousel-content o_colored_level col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll o_visible" style="">
<h2 class="display-3-fs"><font class="text-o-color-3">Slide Title</font></h2>
<p class="lead"><font class="text-o-color-3">Use this snippet to presents your content in a slideshow-like format. Don't write about products or services here, write about solutions.</font></p>
<h6>
<a href="/contactus" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79);"><strong>Contact us</strong></a>
</h6>
</div>
</div>
</div>
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/theme_chennora/static/src/img/chen-banner-2.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1110" data-original-src="/web/image/1110-55a80a07/banner-2%20%281%29.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="oe_unremovable container">
<div class="row">
<div class="carousel-content o_colored_level col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll" style="background-color: rgba(255, 0, 0, 0);">
<h2 class="display-3-fs"><font class="text-o-color-4">Slide Title</font></h2>
<p class="lead"><font class="text-o-color-4">Use this snippet to presents your content in a slideshow-like format. Don't write about products or services</font><font class="bg-o-color-4 text-o-color-4"></font><font class="text-o-color-4"> here, write about solutions.</font></p>
<h6>
<a href="/contactus" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79);"><font class="text-o-color-5"><strong>Contact us</strong></font></a>
</h6>
</div>
</div>
</div>
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/theme_chennora/static/src/img/chen-banner-3.webp&quot;);" data-name="Slide" data-mimetype="image/webp" data-original-id="1137" data-original-src="/web/image/1137-113d553b/chen-banner-3.webp" data-mimetype-before-conversion="image/webp" data-resize-width="1920">
<div class="oe_unremovable container">
<div class="row">
<div class="carousel-content o_colored_level col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll" style="background-color: rgba(255, 0, 0, 0);">
<h2 class="display-3-fs"><font class="text-o-color-4">Slide Title</font></h2>
<p class="lead"><font class="text-o-color-4">Use this snippet to presents your content in a slideshow-like format. Don't write about products or services</font><font class="bg-o-color-4 text-o-color-4"></font><font class="text-o-color-4"> here, write about solutions.</font></p>
<h6>
<a href="/contactus" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79); border-color: rgb(254, 205, 79);"><strong>Contact us</strong></a>
</h6>
</div>
</div>
</div>
</div>
</div>
<a class="carousel-control-prev o_not_editable o_we_no_overlay" role="img" aria-label="Previous" title="Previous" href="#myCarousel1769233718425" data-bs-slide="prev">
<span class="carousel-control-prev-icon"/>
<span class="visually-hidden o_default_snippet_text">Previous</span>
</a>
<a class="carousel-control-next o_not_editable o_we_no_overlay" role="img" aria-label="Next" title="Next" href="#myCarousel1769233718425" data-bs-slide="next">
<span class="carousel-control-next-icon"/>
<span class="visually-hidden o_default_snippet_text">Next</span>
</a>
</div>
</section><section class="s_references pt48 o_colored_level pb0" data-snippet="s_references" data-name="References" style="background-color: rgb(244, 241, 234); background-image: none;">
<div class="container">
<p><br/></p><div class="row">
<div class="pt16 pb16 o_colored_level col-lg-4 o_animate o_anim_flip_in_y o_animate_both_scroll o_visible" style="">
<img src="/web/image/1119-8a8e7ce7/chennora-card-1.webp" alt="" class="img img-fluid mx-auto o_we_custom_image" data-mimetype="image/webp" data-original-id="1114" data-original-src="/web/image/1114-0c5c7f25/chennora-card-1.png" data-mimetype-before-conversion="image/png" data-resize-width="592" loading="eager"/>
</div>
<div class="pt16 pb16 o_colored_level col-lg-4 o_animate o_anim_flip_in_y o_animate_both_scroll o_visible" style="animation-delay: 1s;">
<img src="/web/image/1121-9b05e3f1/chennora-card-2.webp" alt="" class="img img-fluid mx-auto o_we_custom_image" data-mimetype="image/webp" data-original-id="1115" data-original-src="/web/image/1115-309f1390/chennora-card-2.png" data-mimetype-before-conversion="image/png" data-resize-width="592" loading="eager"/>
</div>
<div class="pt16 pb16 o_colored_level col-lg-4 o_animate o_anim_flip_in_y o_animate_both_scroll o_visible" style="animation-delay: 2s;">
<img src="/web/image/1120-614abfd2/chennora-card-3.webp" alt="" class="img img-fluid mx-auto o_we_custom_image" data-mimetype="image/webp" data-original-id="1116" data-original-src="/web/image/1116-a5776052/chennora-card-3.png" data-mimetype-before-conversion="image/png" data-resize-width="590" loading="eager"/>
</div>
</div>
</div>
</section><section class="s_text_image o_colored_level pt0 pb48" data-snippet="s_image_text" data-name="Image - Text" style="background-color: rgb(244, 241, 234);">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 pt16 pb16 o_colored_level o_animate o_anim_slide_in o_anim_from_left o_animate_both_scroll o_visible" style="">
<img src="/web/image/1122-1269de16/about.webp" alt="" class="img img-fluid mx-auto o_we_custom_image" data-mimetype="image/webp" data-original-id="1117" data-original-src="/web/image/1117-0d103610/about.webp" data-mimetype-before-conversion="image/webp" data-resize-width="636" loading="eager"/>
</div>
<div class="pt16 pb16 o_colored_level col-lg-6 o_cc o_cc1 o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll o_visible" style="background-color: rgb(244, 241, 234);">
<h1 class="fadeInUp">Experience Authentic South Indian Flavors</h1><p>
</p>
<p>
Welcome to Chennora one of the best Indian restaurants in Brampton! We proudly serve authentic South Indian dishes, mouth-watering dosas, rich biryanis, and delicious curries made with traditional spices. If you're searching for "Indian restaurant Brampton" or "best dosa in Brampton," your search ends here. Visit us today and experience the vibrant flavors of India, right here in Brampton, Ontario.</p><p><img src="/web/image/1124-81227b3a/about-2.webp" alt="" class="img img-fluid o_we_custom_image" data-mimetype="image/webp" data-original-id="1123" data-original-src="/web/image/1123-7dde337d/about-2.png" data-mimetype-before-conversion="image/png" data-resize-width="580" loading="eager"/></p><p><a class="btn btn-custom text-o-color-5 flat" href="/about" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79); border-color: rgb(254, 205, 79);"><strong style="display: inline-block;">About Us</strong></a><br/></p></div>
</div>
</div>
</section>
<section class="s_banner pt96 pb96 o_colored_level" data-snippet="s_banner" data-name="Banner" style="position: relative; background-color: rgb(4, 18, 29); background-image: none;">
<div class="container">
<div class="row s_nb_column_fixed o_grid_mode" data-row-count="9">
<div class="justify-content-center o_grid_item g-height-8 o_colored_level g-col-lg-6 col-lg-6 o_animate o_anim_zoom_in o_animate_both_scroll o_anim_from_bottom" data-name="Box" style="z-index: 1; grid-area: 2 / 1 / 10 / 7;">
<h4 class="fadeInUp">
<font style="color: rgb(254, 205, 79);">Fresh &amp;amp; Flavorful</font>
</h4><h2 class="fadeInUp"><font class="text-o-color-3">Why Choose Chennora?</font></h2><p class="lead"><font class="text-o-color-3">
At Chennora, we blend traditional Indian cooking techniques with the freshest local ingredients. Rated among the top Indian restaurants in Brampton, we offer a fine dining experience perfect for families, food lovers, and anyone craving real Indian flavors. From crispy dosas to flavorful biryanis, every dish reflects our passion for Indian cuisine. Discover why we're considered one of the best Indian restaurants near Brampton Downtown.</font></p><p>
<a class="btn btn-custom text-o-color-5 flat" href="/contactus" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; border-color: rgb(254, 205, 79); background-color: rgb(254, 205, 79);"><strong>order&amp;nbsp;Now </strong><span class="fa fa-angle-right ms-2"/></a>
</p>
</div>
<div class="o_grid_item o_grid_item_image o_colored_level g-height-9 g-col-lg-5 col-lg-5 o_anim_zoom_in o_animate o_animate_both_scroll o_anim_from_bottom" style="z-index: 2; grid-area: 1 / 8 / 10 / 13;">
<img src="/web/image/1127-129df970/today-special.webp" alt="" class="img img-fluid mx-auto o_we_custom_image shadow" data-mimetype="image/webp" data-original-id="1125" data-original-src="/web/image/1125-217f82a3/today-special.webp" data-mimetype-before-conversion="image/webp" data-resize-width="541" loading="eager"/>
</div></div>
</div>
</section><section class="s_title o_colored_level pb24 pt64" data-vcss="001" data-snippet="s_title" data-name="Title" style="background-color: rgb(244, 241, 234); background-image: none;">
<div class="s_allow_columns container">
<h6 style="text-align: center;">
</h6><h6 style="text-align: center;"><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>&amp;nbsp; <font style="color: rgb(43, 177, 165);">&amp;nbsp;</font><span class="base-fs"><strong><font style="color: rgb(43, 177, 165);">POPULAR DISHES</font></strong></span><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>
</h6><h2 class="fadeInUp" style="text-align: center;"><strong>Our feature category</strong></h2><ul>
</ul>
</div>
</section><section class="s_masonry_block o_colored_level pb48" data-vcss="001" data-vxml="001" data-snippet="s_masonry_block" data-name="Masonry" style="background-color: rgb(244, 241, 234); background-image: none;" data-masonry-template="default">
<div class="container-fluid">
<div class="row o_grid_mode" data-row-count="12">
<div class="o_grid_item col-lg-6 g-col-lg-6 g-height-10 o_grid_item_image text-center o_colored_level o_animate o_anim_slide_in o_anim_from_left o_animate_both_scroll" data-name="Block" style="grid-area: 1 / 1 / 11 / 7; z-index: 1; background-image: none;">
<img src="/web/image/website.s_masonry_block_default_image_1" class="img img-fluid mx-auto" alt="" loading="eager" data-mimetype="image/jpeg" data-original-id="842" data-original-src="/website/static/src/img/snippets_demo/s_masonry_block_1.jpg" data-mimetype-before-conversion="image/jpeg"/>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc2 o_colored_level o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll" data-name="Block" style="grid-area: 1 / 7 / 6 / 10; z-index: 2; background-image: none;">
<h3><img src="/web/image/1127-129df970/today-special.webp" alt="" class="img img-fluid o_we_custom_image" data-mimetype="image/webp" data-original-id="1125" data-original-src="/web/image/1125-217f82a3/today-special.webp" data-mimetype-before-conversion="image/webp" data-resize-width="541" loading="eager"/></h3>
<p class="o_default_snippet_text">And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc3 o_colored_level o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll" data-name="Block" style="grid-area: 1 / 10 / 6 / 13; z-index: 3; background-image: none; animation-delay: 1s;">
<h3 class="o_default_snippet_text">A great title</h3>
<p class="o_default_snippet_text">And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc4 o_colored_level o_animate o_anim_slide_in o_anim_from_right o_animate_both_scroll" data-name="Block" style="grid-area: 6 / 7 / 11 / 10; z-index: 4; background-image: none;">
<h3 class="o_default_snippet_text">A great title</h3>
<p class="o_default_snippet_text">And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-3 g-col-lg-3 g-height-5 text-center o_cc o_cc2 o_colored_level o_anim_fade_in o_animate o_animate_both_scroll" data-name="Block" style="grid-area: 6 / 10 / 11 / 13; z-index: 5; background-image: none; animation-delay: 1s;">
<h3 class="o_default_snippet_text">A great title</h3>
<p>And a great subtitle</p>
</div>
<div class="o_grid_item col-lg-4 g-col-lg-4 g-height-2 o_colored_level o_animate o_anim_slide_in o_anim_from_left o_animate_both_scroll" style="z-index: 6; background-image: none; grid-area: 5 / 2 / 7 / 6;"><h3 style="text-align: center;">Write something...</h3><p style="text-align: center;">sfdsdfsfsdfsdfsfssdfsfsdfsfd</p></div><div class="o_grid_item col-lg-2 g-col-lg-2 g-height-1 o_colored_level" style="z-index: 7; background-image: none; grid-area: 12 / 6 / 13 / 8;"><a href="#" class="btn btn-custom text-o-color-5 flat" data-bs-original-title="" title="" style="border-width: 1px; border-style: solid; background-color: rgb(254, 205, 79); border-color: rgb(254, 205, 79);"><h6><strong>View More<br/></strong></h6></a></div><div class="o_grid_item g-height-2 o_colored_level g-col-lg-3 col-lg-3" style="z-index: 8; background-image: none; grid-area: 2 / 7 / 4 / 10;"><p style="text-align: center;">Write something...</p></div></div>
</div>
</section><section class="s_title o_colored_level pt64 pb0" data-vcss="001" data-snippet="s_title" data-name="Title" style="background-color: rgb(255, 255, 255); background-image: none;">
<div class="s_allow_columns container">
<h6 style="text-align: center;">
</h6><h6 style="text-align: center;"><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>&amp;nbsp; <font style="color: rgb(43, 177, 165);">&amp;nbsp;</font><span class="base-fs"><strong><font style="color: rgb(43, 177, 165);">POPULAR DISHES</font></strong></span><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>
</h6><h2 class="fadeInUp" style="text-align: center;"><strong>Our&amp;nbsp;Most Popular Deals</strong></h2><ul>
</ul>
</div>
</section><section data-snippet="s_dynamic_snippet_products" class="s_dynamic_snippet_products s_dynamic pt32 o_colored_level s_product_product_add_to_cart pb80 o_dynamic_empty" data-name="Products" style="background-color: rgb(255, 255, 255); background-image: none;" data-product-category-id="all" data-number-of-records="16" data-filter-id="1" data-template-key="website_sale.dynamic_filter_template_product_product_add_to_cart" data-carousel-interval="5000">
<div class="container o_not_editable">
<div class="css_non_editable_mode_hidden">
<div class="missing_option_warning alert alert-info rounded-0 fade show d-none d-print-none o_default_snippet_text">
Your Dynamic Snippet will be displayed here... This message is displayed because you did not provided both a filter and a template to use.<br/>
</div>
</div>
<div class="dynamic_snippet_template"/>
</div>
</section>
<section class="s_quotes_carousel_wrapper o_colored_level oe_img_bg o_bg_img_center o_bg_img_origin_border_box" data-vxml="001" data-vcss="001" data-snippet="s_quotes_carousel" data-name="Quotes" style="background-image: url(&quot;/web/image/1162-ff0e896d/1-card.webp&quot;);" data-mimetype="image/webp" data-original-id="1155" data-original-src="/web/image/1155-9fc4b127/1-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412">
<div class="s_quotes_carousel s_carousel_default carousel slide o_cc o_cc2" data-bs-interval="10000" id="myCarousel1769251166498" style="background-image: none; position: relative;">
<ol class="carousel-indicators o_we_no_overlay">
<li data-bs-target="#myCarousel1769251166498" class="active" data-bs-slide-to="0" aria-current="true"/>
<li data-bs-target="#myCarousel1769251166498" data-bs-slide-to="1"/>
<li data-bs-target="#myCarousel1769251166498" data-bs-slide-to="2"/>
</ol>
<div class="carousel-inner">
<div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box active" style="background-image: url(&quot;/web/image/1134-f906552b/testimonial-bg.webp&quot;); background-position: 50% 50%;" data-name="Slide" data-mimetype="image/webp" data-original-id="1133" data-original-src="/web/image/1133-e74db641/testimonial-bg.png" data-mimetype-before-conversion="image/png" data-resize-width="1909">
<div class="container">
<blockquote class="s_blockquote blockquote w-50 ms-auto s_blockquote_cover" data-name="Blockquote">
<i class="fa fa-1x fa-quote-left rounded float-start bg-o-color-2 s_blockquote_icon"/>
<div class="s_blockquote_content o_cc1 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/web/image/1160-20e67f9e/good-card.webp&quot;);" data-mimetype="image/webp" data-original-id="1157" data-original-src="/web/image/1157-c6ad4e01/good-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412"><div class="o_we_bg_filter bg-white-50"/>
<p><font class="text-o-color-4">Write a quote here from one of your customers. Quotes are a great way to build confidence in your products or services.</font></p>
<footer class="blockquote-footer">
<img src="/web/image/website.s_quotes_carousel_demo_image_3" class="s_blockquote_avatar img rounded-circle me-2 d-none" alt="" loading="lazy" data-mimetype="image/jpeg" data-original-id="856" data-original-src="/website/static/src/img/snippets_demo/s_team_member_3.jpg" data-mimetype-before-conversion="image/jpeg"/>
<span class="s_blockquote_author text-muted"><font class="text-o-color-4"><b>Jane DOE</b> • CEO of MyCompany</font></span>
</footer>
</div>
</blockquote>
</div>
</div><div class="carousel-item o_colored_level pt256 pb256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/web/image/1134-f906552b/testimonial-bg.webp&quot;); background-position: 50% 50%;" data-name="Slide" data-mimetype="image/webp" data-original-id="1133" data-original-src="/web/image/1133-e74db641/testimonial-bg.png" data-mimetype-before-conversion="image/png" data-resize-width="1909">
<div class="container">
<blockquote class="s_blockquote blockquote w-50 s_blockquote_cover ms-auto" data-name="Blockquote">
<i class="fa fa-1x fa-quote-left rounded float-start bg-o-color-2 s_blockquote_icon"/>
<div class="s_blockquote_content o_cc1 s_parallax_no_overflow_hidden oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/web/image/1159-895286a2/2-card.webp&quot;);" data-scroll-background-ratio="0" data-mimetype="image/webp" data-original-id="1153" data-original-src="/web/image/1153-68efdf9e/2-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412"><div class="o_we_bg_filter bg-white-50"/>
<p><font class="text-o-color-4">Write a quote here from one of your customers. Quotes are a great way to build confidence in your products or services.</font></p>
<footer class="blockquote-footer">
<img src="/web/image/website.s_quotes_carousel_demo_image_3" class="s_blockquote_avatar img rounded-circle me-2 d-none" alt="" loading="lazy" data-mimetype="image/jpeg" data-original-id="856" data-original-src="/website/static/src/img/snippets_demo/s_team_member_3.jpg" data-mimetype-before-conversion="image/jpeg"/>
<span class="s_blockquote_author text-muted"><font class="text-o-color-4"><b>Jane DOE</b> • CEO of MyCompany</font></span>
</footer>
</div>
</blockquote>
</div>
</div>
<div class="carousel-item o_colored_level pb256 pt256 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-image: url(&quot;/web/image/1134-f906552b/testimonial-bg.webp&quot;); background-position: 50% 50%;" data-name="Slide" data-mimetype="image/webp" data-original-id="1133" data-original-src="/web/image/1133-e74db641/testimonial-bg.png" data-mimetype-before-conversion="image/png" data-resize-width="1909">
<div class="container">
<blockquote class="s_blockquote blockquote w-50 s_blockquote_cover ms-auto" data-name="Blockquote">
<i class="fa fa-1x fa-quote-left rounded float-start bg-o-color-2 s_blockquote_icon"/>
<div class="s_blockquote_content o_cc1 oe_img_bg o_bg_img_center o_bg_img_origin_border_box" style="background-color: rgba(255, 255, 255, 0); background-image: url(&quot;/web/image/1122-1269de16/about.webp&quot;);" data-mimetype="image/webp" data-original-id="1117" data-original-src="/web/image/1117-0d103610/about.webp" data-mimetype-before-conversion="image/webp" data-resize-width="636"><div class="o_we_bg_filter bg-white-50"/>
<p><font class="text-o-color-3">Write a quote here from one of your customers. Quotes are a great way to build confidence in your products or services.</font></p>
<footer class="blockquote-footer">
<img src="/web/image/website.s_quotes_carousel_demo_image_4" class="s_blockquote_avatar img rounded-circle me-2 d-none" alt="" loading="lazy" data-mimetype="image/jpeg" data-original-id="857" data-original-src="/website/static/src/img/snippets_demo/s_team_member_2.jpg" data-mimetype-before-conversion="image/jpeg"/>
<span class="s_blockquote_author text-muted"><font class="text-o-color-3"><b>John DOE</b> • CEO of MyCompany</font></span>
</footer>
</div>
</blockquote>
</div>
</div>
</div>
<div class="carousel-control-prev o_not_editable o_we_no_overlay" role="img" aria-label="Previous" title="Previous" data-bs-target="#myCarousel1769251166498" data-bs-slide="prev">
<span class="carousel-control-prev-icon"/>
<span class="visually-hidden o_default_snippet_text">Previous</span>
</div>
<div class="carousel-control-next o_not_editable o_we_no_overlay" role="img" aria-label="Next" title="Next" data-bs-target="#myCarousel1769251166498" data-bs-slide="next">
<span class="carousel-control-next-icon"/>
<span class="visually-hidden o_default_snippet_text">Next</span>
</div>
</div>
</section><section class="s_title o_colored_level pb0 pt80" data-vcss="001" data-snippet="s_title" data-name="Title" style="background-color: rgb(244, 241, 234); background-image: none;">
<div class="s_allow_columns container">
<h6 style="text-align: center;">
</h6><h6 style="text-align: center;"><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>&amp;nbsp; <font style="color: rgb(43, 177, 165);">&amp;nbsp;</font><span class="base-fs"><strong><font style="color: rgb(43, 177, 165);">CHENNORA</font></strong></span><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>
</h6><h2 class="fadeInUp" style="text-align: center;"><strong>Frequently Asked Questions</strong><br/></h2><ul>
</ul>
</div>
</section><section class="s_faq_collapse o_colored_level pt0 s_faq_collapse_boxed pb88" data-snippet="s_faq_collapse" data-name="Accordion" style="background-color: rgb(244, 241, 234);">
<div class="container">
<div id="myCollapse" class="accordion" role="tablist">
<div class="card bg-white" data-name="Item" role="presentation">
<a href="#" role="tab" data-bs-toggle="collapse" aria-expanded="true" class="card-header" data-bs-target="#myCollapseTab220070_1" aria-controls="myCollapseTab220070_1">
<strong>Why Chennora is the best Indian restaurant in Brampton?</strong>
</a>
<div class="collapse show" data-bs-parent="#myCollapse" role="tabpanel" id="myCollapseTab220070_1">
<div class="card-body">
<p class="card-text">
Chennora is ranked among the best Indian restaurants in Brampton, offering authentic South Indian flavors with a modern twist.
</p>
</div>
</div>
</div>
<div class="card bg-white" data-name="Item" role="presentation">
<a href="#" role="tab" data-bs-toggle="collapse" aria-expanded="false" class="card-header collapsed" data-bs-target="#myCollapseTab220070_2" aria-controls="myCollapseTab220070_2">
<strong>Does Chennora offer South Indian food in Brampton?</strong>
</a>
<div data-bs-parent="#myCollapse" role="tabpanel" id="myCollapseTab220070_2" class="collapse">
<div class="card-body">
<p class="card-text">
Yes! Chennora specializes in South Indian delicacies like dosas, idlis, and biryanis, served fresh daily.
</p>
</div>
</div>
</div>
<div class="card bg-white" data-name="Item" role="presentation">
<a href="#" role="tab" data-bs-toggle="collapse" aria-expanded="false" class="card-header collapsed" data-bs-target="#myCollapseTab220070_3" aria-controls="myCollapseTab220070_3">
<strong>What are the best Indian restaurants in Brampton?</strong>
</a>
<div data-bs-parent="#myCollapse" role="tabpanel" id="myCollapseTab220070_3" class="collapse">
<div class="card-body">
<p class="card-text">
Chennora is rated among the best Indian restaurants in Brampton, offering authentic South Indian flavors, traditional curries, biryanis, and a warm dining atmosphere. Whether you are looking for fine dining or a casual meal, we are a top choice in Brampton.
</p>
</div>
</div>
</div>
</div>
</div>
</section><section class="s_title o_colored_level pb0 pt80" data-vcss="001" data-snippet="s_title" data-name="Title" style="background-color: rgb(4, 18, 29);">
<div class="s_allow_columns container">
<h6 style="text-align: center;">
</h6><h6 style="text-align: center;"><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>&amp;nbsp; <font style="color: rgb(43, 177, 165);">&amp;nbsp;</font><span class="base-fs"><strong><font style="color: rgb(43, 177, 165);">LATEST BLOG</font></strong></span><img src="https://chennora.com/assets/img/icon/titleIcon.svg" style="transform: translateX(35%) translateY(-15%) scaleX(1.23) scaleY(1.04);" loading="lazy"/>
</h6><h2 class="fadeInUp" style="text-align: center;"><strong><font class="text-o-color-4">Latest News &amp;amp; Articals</font></strong><br/></h2><ul>
</ul>
</div>
</section><section class="s_three_columns pt32 pb32 o_colored_level o_cc o_cc2" data-vcss="001" data-snippet="s_three_columns" data-name="Columns" style="background-color: rgb(4, 18, 29); background-image: none;">
<div class="container">
<div class="row d-flex align-items-stretch">
<div class="col-lg-4 s_col_no_bgcolor pt16 pb16">
<div class="card text-bg-white h-100">
<img src="/web/image/1159-895286a2/2-card.webp" alt="" class="card-img-top img img-fluid o_we_custom_image" data-mimetype="image/webp" data-original-id="1153" data-original-src="/web/image/1153-68efdf9e/2-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412" loading="lazy"/>
<div class="card-body">
<h3 class="card-title o_default_snippet_text">Feature One</h3>
<p class="card-text o_default_snippet_text">Adapt these three columns to fit your design need. To duplicate, delete or move columns, select the column and use the top icons to perform your action.</p>
</div>
</div>
</div>
<div class="col-lg-4 s_col_no_bgcolor pt16 pb16">
<div class="card text-bg-white h-100">
<img src="/web/image/1162-ff0e896d/1-card.webp" alt="" class="card-img-top img img-fluid o_we_custom_image" data-mimetype="image/webp" data-original-id="1155" data-original-src="/web/image/1155-9fc4b127/1-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412" loading="lazy"/>
<div class="card-body">
<h3 class="card-title o_default_snippet_text">Feature Two</h3>
<p class="card-text o_default_snippet_text">To add a fourth column, reduce the size of these three columns using the right icon of each block. Then, duplicate one of the columns to create a new one as a copy.</p>
</div>
</div>
</div>
<div class="col-lg-4 s_col_no_bgcolor pt16 pb16">
<div class="card text-bg-white h-100">
<img src="/web/image/1160-20e67f9e/good-card.webp" alt="" class="card-img-top img img-fluid o_we_custom_image" data-mimetype="image/webp" data-original-id="1157" data-original-src="/web/image/1157-c6ad4e01/good-card.webp" data-mimetype-before-conversion="image/webp" data-resize-width="412" loading="lazy"/>
<div class="card-body">
<h3 class="card-title o_default_snippet_text">Feature Three</h3>
<p class="card-text o_default_snippet_text">Delete the above image or replace it with a picture that illustrates your message. Click on the picture to change its <em class="o_default_snippet_text">rounded corner</em> style.</p>
</div>
</div>
</div>
</div>
</div>
</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">
<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>
</t>
</t>
</div>
</xpath>
</template>
<!-- ====================================================== -->
<!-- 2. ABOUT US PAGE (Inherits and Replaces Default About) -->
<!-- ====================================================== -->
<template id="custom_aboutus" inherit_id="website.aboutus" name="Chennora About Us">
<xpath expr="//div[@id='wrap']" position="replace">
<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">
<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="container">
<h1>About us</h1>
</div>
</section>
</div>
<div class="oe_structure"/>
</div>
</t>
</t>
</div>
</xpath>
</template>
<!-- ====================================================== -->
<!-- 3. CONTACT US PAGE -->
<!-- ====================================================== -->
<template id="custom_contactus" inherit_id="website.contactus" name="Chennora Contact Us">
<xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure">
<t t-name="base.contact">
<address t-ignore="true" class="o_portal_address mb-0" itemscope="itemscope" itemtype="http://schema.org/Organization">
<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">
--<span class="text-muted" t-esc="name"/>--
</div>
<t t-if="object.country_id.name_position != 'after'">
<t t-call="base.contact_name"/>
</t>
<div class="gap-2" itemprop="address" itemscope="itemscope" itemtype="http://schema.org/PostalAddress">
<div t-if="address and 'address' in fields" t-attf-class="d-flex align-items-baseline gap-1">
<i t-if="not options.get('no_marker')" class="fa fa-map-marker fa-fw" role="img" aria-label="Address" title="Address"/>
<span class="d-block w-100 lh-sm" itemprop="streetAddress" t-esc="address"/>
</div>
<div t-if="city and 'city' in fields" t-attf-class="d-flex align-items-baseline gap-1">
<i t-if="not options.get('no_marker')" class="fa fa-map-marker fa-fw" role="img" aria-label="Address" title="Address"/>
<span>
<div>
<span itemprop="addressLocality" t-esc="city"/>,
<span itemprop="addressCountry" t-esc="country_id"/>
</div>
</span>
</div>
<div class="d-flex align-items-center gap-1" t-if="phone and 'phone' in fields">
<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"/>
</div>
<div class="d-flex align-items-center gap-1" t-if="mobile and 'mobile' in fields">
<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>
<!-- Prevent issue with iOS Safari parsing of schema data without telephone itemprops -->
<div t-if="not (phone and 'phone' in fields) and not (mobile and 'mobile' in fields)" itemprop="telephone"/>
<div class="d-flex align-items-center gap-1" t-if="website and 'website' in fields">
<i t-if="not options.get('no_marker')" class="fa fa-globe fa-fw" role="img" aria-label="Website" title="Website"/>
<a t-att-href="website and '%s%s' % ('http://' if '://' not in website else '',website)"><span itemprop="website" t-esc="website"/></a>
</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 t-if="vat and 'vat' in fields"><span t-esc="vat_label"/>: <span itemprop="vatID" t-esc="vat"/></div>
<t t-if="object.country_id and object.country_id.name_position == 'after'">
<t t-call="base.contact_name"/>
</t>
</address>
</t>
</div>
</xpath>
</template>
<!-- ====================================================== -->
<!-- 4. SHOP PAGE -->
<!-- ====================================================== -->
<!--
<template id="custom_shop" inherit_id="website_sale.products" name="Chennora Shop">
<xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure">
<section class="s_text_block pt80 pb80">
<div class="container">
<h1>Shop Page</h1>
<p>Paste your shop page code here.</p>
</div>
</section>
</div>
</xpath>
</template>
-->
</data>
</odoo>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!--
Custom Snippets (Building Blocks)
Define any custom drag-and-drop blocks here (Sliders, Feature Grids, etc).
-->
<!-- Example Snippet Definition -->
<!--
<template id="s_custom_banner" name="Custom Banner">
<section class="s_custom_banner">
<div class="container">
<h2>My Custom Banner</h2>
</div>
</section>
</template>
-->
<!-- Register the Snippet in the Sidebar -->
<!--
<template id="snippets_registration" inherit_id="website.snippets" name="Register Custom Snippets">
<xpath expr="//div[@id='snippet_structure']" position="inside">
<t t-snippet="theme_chennora.s_custom_banner" t-thumbnail="/theme_chennora/static/src/img/s_banner_thumb.jpg"/>
</xpath>
</template>
-->
</data>
</odoo>