Introduce new Odoo modules for custom website theming, including enhanced product details and a redesigned login page.

This commit is contained in:
Alaguraj0361 2026-02-25 16:13:54 +05:30
parent 02ac1c8116
commit 816847c2d7
16 changed files with 319 additions and 121 deletions

View File

@ -11,6 +11,7 @@
'views/web_title_template.xml',
'views/website_logo.xml',
'views/shop_template.xml',
'data/branding_data.xml',
],
'assets': {
'web.assets_backend': [

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="base_title_param" model="ir.config_parameter">
<field name="key">web.base_title</field>
<field name="value">Chennora</field>
</record>
</data>
<data>
<record id="base.main_company" model="res.company">
<field name="phone">+1(647)856-2878</field>
</record>
</data>
</odoo>

View File

@ -57,7 +57,7 @@ body.o_home_dashboard,
.o_app:hover .o_app_icon_container {
transform: translateY(-10px) rotate(2deg) !important;
background: #ffffff !important;
border: 1px solid #d6111e !important;
border-bottom: 2px solid #d6111e !important;
box-shadow:
0 20px 25px -5px rgba(214, 17, 30, 0.2),
0 10px 10px -5px rgba(23, 20, 34, 0.1) !important;
@ -65,6 +65,7 @@ body.o_home_dashboard,
.o_app_icon_container::before {
content: "";
--pos-accent-red: #d6111e;
position: absolute;
top: 0;
left: 0;
@ -119,8 +120,9 @@ body.o_home_dashboard,
backdrop-filter: blur(15px) !important;
-webkit-backdrop-filter: blur(15px);
border-radius: 50px !important;
border: 1px solid rgba(255, 255, 255, 0.15) !important;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2) !important;
border-color: #d6111e !important;
box-shadow: 0 0 0 3px rgba(214, 17, 30, 0.15) !important;
box-shadow: 0 12px 25px rgba(214, 17, 30, 0.3) !important;
}
.o_top_item {

View File

@ -4,7 +4,7 @@
height: 100vh !important;
width: 100vw !important;
overflow: hidden;
background: url('/dine360_dashboard/static/src/img/dashboard_bg.png') !important;
background: url('/dine360_theme_chennora/static/src/img/chen-banner-2.webp') !important;
background-repeat: no-repeat !important;
background-position: center center !important;
background-size: cover !important;
@ -120,21 +120,23 @@
/* Login Button with Gradient */
.oe_login_buttons .btn-primary {
background: #d6111e !important;
background: #FECD4F !important;
border: none !important;
border-radius: 12px !important;
padding: 14px !important;
font-weight: 700 !important;
font-size: 1rem !important;
color: white !important;
color: #04121D !important;
width: 100% !important;
transition: all 0.3s ease !important;
box-shadow: 0 4px 15px rgba(214, 17, 30, 0.3) !important;
box-shadow: 0 4px 15px rgba(254, 205, 79, 0.3) !important;
}
.oe_login_buttons .btn-primary:hover {
background: #04121D !important;
color: #FECD4F !important;
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(214, 17, 30, 0.4) !important;
box-shadow: 0 8px 20px rgba(254, 205, 79, 0.4) !important;
}
@ -232,7 +234,7 @@ body.o_custom_login_body .o_login_main_wrapper {
height: 100vh !important;
/* width: 100vw !important; */
overflow: hidden !important;
background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)), url('/dine360_dashboard/static/src/img/dashboard_bg.png') no-repeat center center !important;
background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)), url('/dine360_theme_chennora/static/src/img/chen-banner-2.webp') no-repeat center center !important;
background-size: cover !important;
}

View File

@ -6,13 +6,13 @@
--pos-primary: #171422;
/* Secondary Dark */
--pos-secondary: #d6111e;
/* Main Red (Dine360 Red) */
/* Main Teal */
--pos-accent-orange: #e66421;
/* Biryani Orange */
--pos-accent-gold: #cc9900;
/* Tandoor Gold */
--pos-accent-red: #d6111e;
/* Main Red */
/* Main Teal */
--pos-bg-main: #f8fafc;
/* Ultra light gray */
--pos-card-dark: #1a1d23;

View File

@ -76,7 +76,7 @@
.oe_website_sale #products_grid_before h5,
.oe_website_sale #products_grid_before .h5,
.oe_website_sale #products_grid_before h6 {
color: var(--secondary-color, #d6111e) !important;
color: var(--secondary-color, #2BB1A5) !important;
font-weight: 700 !important;
font-size: 1.1rem !important;
margin-bottom: 15px !important;
@ -113,7 +113,7 @@
.oe_website_sale #products_grid_before li:hover,
.oe_website_sale #products_grid_before .list-group-item:hover {
background: #d6111e !important;
background: #2bb1a5 !important;
transform: translateX(5px);
}
@ -125,13 +125,13 @@
/* Active Category */
.oe_website_sale #products_grid_before li.active,
.oe_website_sale #products_grid_before .list-group-item.active {
background: #d6111e !important;
box-shadow: 0 4px 12px rgba(214, 17, 30, 0.3) !important;
background: transparent !important;
box-shadow: none !important;
}
.oe_website_sale #products_grid_before li.active a,
.oe_website_sale #products_grid_before .list-group-item.active a {
color: #ffffff !important;
color: #000000 !important;
font-weight: 700 !important;
}
@ -148,9 +148,9 @@
.oe_website_sale #products_grid_before .form-control:focus,
.oe_website_sale #products_grid_before input:focus {
border-color: var(--secondary-color, #d6111e) !important;
border-color: var(--secondary-color, #2BB1A5) !important;
background: #ffffff !important;
box-shadow: 0 0 0 3px rgba(214, 17, 30, 0.15) !important;
box-shadow: 0 0 0 3px rgba(43, 177, 165, 0.15) !important;
outline: none;
}
@ -164,15 +164,15 @@
}
.oe_website_sale #products_grid_before .btn-primary {
background: #d6111e !important;
background: #2BB1A5 !important;
border: none !important;
color: #ffffff !important;
box-shadow: 0 4px 12px rgba(214, 17, 30, 0.3) !important;
box-shadow: 0 4px 12px rgba(43, 177, 165, 0.3) !important;
}
.oe_website_sale #products_grid_before .btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 15px rgba(214, 17, 30, 0.4) !important;
box-shadow: 0 8px 15px rgba(43, 177, 165, 0.4) !important;
}
/* Attribute Filters (Color, Size, etc.) */
@ -189,9 +189,9 @@
.oe_website_sale #products_grid_before .css_attribute_color:hover,
.oe_website_sale #products_grid_before .css_attribute_color.active {
border-color: var(--secondary-color, #d6111e);
border-color: var(--secondary-color, #2BB1A5);
transform: scale(1.1);
box-shadow: 0 2px 8px rgba(214, 17, 30, 0.3);
box-shadow: 0 2px 8px rgba(43, 177, 165, 0.3);
}
/* Price Range Filter */
@ -201,12 +201,12 @@
.oe_website_sale #products_grid_before .o_wsale_price_filter input[type="range"] {
width: 100%;
accent-color: var(--secondary-color, #d6111e);
accent-color: var(--secondary-color, #2BB1A5);
}
/* Collapse/Expand Buttons */
.oe_website_sale #products_grid_before .btn-link {
color: var(--secondary-color, #d6111e) !important;
color: var(--secondary-color, #2BB1A5) !important;
text-decoration: none !important;
font-weight: 600 !important;
}
@ -285,8 +285,8 @@
.oe_website_sale .o_wsale_clear_filters .btn:hover {
background: #ffffff !important;
border-color: var(--secondary-color, #d6111e) !important;
color: var(--secondary-color, #d6111e) !important;
border-color: var(--secondary-color, #2BB1A5) !important;
color: var(--secondary-color, #2BB1A5) !important;
}
.css_quantity input {

View File

@ -7,9 +7,9 @@
:root {
/* Primary Brand Colors */
--primary-color: #d6111e;
--primary-dark: #b50e19;
--primary-light: #e54d57;
--primary-lighter: #f08a91;
--primary-dark: #8B0A0E;
--primary-light: #E57373;
--primary-lighter: #FFCDD2;
/* Secondary/Accent Color */
--secondary-color: #171422;
@ -18,7 +18,7 @@
/* Gradient Combinations Removed - Using Solid Colors */
--gradient-primary: #d6111e;
--gradient-primary-hover: #b50e19;
--gradient-primary-hover: #8B0A0E;
/* Home Page Background */
--bg-gradient-main: #ffffff;
@ -26,11 +26,11 @@
/* UI Element Colors */
--btn-primary-bg: #d6111e;
--link-color: #171422;
--link-hover: #b50e19;
--link-hover: #d6111e;
/* Status Colors */
--success-color: #171422;
--warning-color: #d6111e;
--warning-color: #FECD4F;
--danger-color: #d6111e;
--info-color: #2d293d;

View File

@ -42,20 +42,20 @@ header#top .nav-link:hover,
body .o_header_standard .nav-link:hover,
header#top i:hover,
body .o_header_standard i:hover {
color: #d6111e !important;
color: #2BB1A5 !important;
}
/* Active States - Using Theme Gold */
header#top .nav-link.active,
body .o_header_standard .nav-link.active {
color: #d6111e !important;
color: #2BB1A5 !important;
}
/* Dropdown Menu overrides (ensure visibility) */
header#top .dropdown-menu,
body .o_header_standard .dropdown-menu {
background-color: #171422 !important;
border: 1px solid rgba(214, 17, 30, 0.2);
border: 1px solid rgba(43, 177, 165, 0.2);
}
header#top .dropdown-item,
@ -65,6 +65,74 @@ body .o_header_standard .dropdown-item {
header#top .dropdown-item:hover,
body .o_header_standard .dropdown-item:hover {
background-color: #d6111e !important;
background-color: #2BB1A5 !important;
color: #ffffff !important;
}
/* Header Cart & Search Icon Adjustments */
.o_wsale_my_cart,
.o_nav_item_search,
.o_nav_item_cart,
header .navbar-nav .nav-item a[href="/shop/cart"],
header .navbar-nav .nav-item a.o_navlink_background_hover {
transition: all 0.3s ease !important;
}
/* Hover background for Search and Cart icons */
.o_wsale_my_cart:hover,
.o_nav_item_search:hover,
.o_nav_item_cart:hover,
header .navbar-nav .nav-item a[href="/shop/cart"]:hover,
header .o_search_button:hover {
background-color: #FECD4F !important;
border-radius: 50px !important;
}
/* Ensure icons turn dark on yellow background hover */
.o_wsale_my_cart:hover i,
.o_nav_item_search:hover i,
.o_nav_item_cart:hover i,
header .navbar-nav .nav-item a[href="/shop/cart"]:hover i,
header .o_search_button:hover i {
color: #111 !important;
}
/* Cart Count Badge Color */
.o_wsale_my_cart .badge,
.o_wsale_my_cart .o_wsale_cart_quantity,
header .navbar-nav .nav-item .badge-pill,
header .navbar-nav .nav-item .badge {
background-color: #2BB1A5 !important;
color: #ffffff !important;
border: none !important;
}
/* Header Action Buttons */
header .btn,
header .btn-primary,
header .o_header_cta_btn,
header .btn-contact,
header a.btn[href="/contactus"],
header a.btn[href*="contact"] {
background-color: #FECD4F !important;
color: #04121D !important;
border: none !important;
border-radius: 8px !important;
padding: 10px 25px !important;
font-weight: 700 !important;
text-transform: uppercase !important;
transition: all 0.3s ease !important;
box-shadow: 0 4px 10px rgba(254, 205, 79, 0.3) !important;
text-decoration: none !important;
}
header .btn:hover,
header .btn-primary:hover,
header .o_header_cta_btn:hover,
header .btn-contact:hover,
header a.btn[href="/contactus"]:hover,
header a.btn[href*="contact"]:hover {
background-color: #FECD4F !important;
color: #FECD4F !important;
transform: translateY(-2px) !important;
}

View File

@ -3,6 +3,13 @@
<xpath expr="//title" position="replace">
<title>Chennora</title>
</xpath>
<xpath expr="//link[@rel='shortcut icon']" position="replace">
<link rel="shortcut icon" href="/dine360_theme_chennora/static/description/icon.png" type="image/x-icon"/>
</xpath>
<xpath expr="//link[@rel='icon']" position="replace">
<link rel="icon" href="/dine360_theme_chennora/static/description/icon.png" type="image/png"/>
</xpath>
<xpath expr="//body" position="inside">
<t t-if="not request.env.user._is_public()">
<a href="/" class="o_dashboard_return_btn d-print-none" title="Back to Dashboard"

View File

@ -1,13 +1,11 @@
/* 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,
$o-color-palettes: (
'chennora-palette': ('o-color-1': #FECD4F, // Yellow (Primary)
'o-color-2': #2BB1A5, // Teal (Secondary)
'o-color-3': #04121D, // Dark Accent
'o-color-4': #FFFFFF, // White
'o-color-5': #F4F1EA, // Light Sand
),
);
*/
);
// Map the newly created palette to the primary one
$o-selected-color-palette: 'chennora-palette';

View File

@ -1,8 +1,8 @@
/* Chennora Shop Page - Exact Clone of the Classic Food Theme UI */
:root {
--food-green: #006837;
--food-yellow: #fbb03b;
--food-green: #2BB1A5;
--food-yellow: #FECD4F;
--food-text: #333333;
--food-light-grey: #f1f1f1;
--food-border: #e6e6e6;
@ -77,13 +77,32 @@
opacity: 0.7;
}
&.active,
&:hover {
color: var(--food-green);
background-color: transparent !important;
img {
opacity: 1;
}
}
&.active,
&.nav-link.active {
color: #000000 !important;
background-color: transparent !important;
border: none !important;
box-shadow: none !important;
span {
color: #000000 !important;
}
img {
filter: none !important;
opacity: 1 !important;
}
}
}
}
}
@ -365,8 +384,8 @@
background: white !important;
.btn-add-to-cart-overlay {
background: var(--food-green);
color: white;
background: #FECD4F !important;
color: #000000 !important;
padding: 10px;
border-radius: 6px;
font-weight: 700;
@ -470,6 +489,12 @@
#product_detail {
padding-top: 50px;
/* Breadcrumb Color */
.breadcrumb-item a {
color: #FECD4F !important;
font-weight: 700 !important;
}
.product-details-wrapper {
.display-5 {
font-weight: 800;
@ -531,8 +556,8 @@
}
#add_to_cart {
background: var(--food-green) !important;
color: white !important;
background: #FECD4F !important;
color: #000000 !important;
border: none !important;
border-radius: 50px !important;
padding: 12px 40px !important;
@ -540,12 +565,49 @@
text-transform: uppercase !important;
letter-spacing: 1px !important;
transition: all 0.3s !important;
box-shadow: 0 10px 20px rgba(0, 104, 55, 0.2) !important;
box-shadow: 0 10px 20px rgba(254, 205, 79, 0.2) !important;
&:hover {
background: #00502a !important;
background: #e5b945 !important;
transform: translateY(-2px) !important;
}
}
}
}
/* Hide Duplicate Odoo Elements on Product Page */
#product_details {
display: flex !important;
flex-direction: column !important;
/* Hide ANY title, price, or description that is NOT inside our custom wrapper */
>h1:not(.display-5),
>.product_price,
>#product_attributes_simple,
>.text-muted:not(.chennora-premium-content *),
>div[data-name="description_sale"] {
display: none !important;
}
/* Target the Terms and Conditions block */
>hr+div,
>div:has(a[href*="terms"]),
.o_not_editable {
/* Only hide if it's not the ones we want */
}
/* Dedicated hide for Odoo's extra info */
hr+div,
a[href*="terms-and-conditions"] {
display: none !important;
}
/* Force Add to Cart to theme yellow everywhere in shop */
#add_to_cart,
.a-submit,
.btn-add-to-cart-overlay {
background: #FECD4F !important;
color: #000000 !important;
border: none !important;
}
}

View File

@ -14,10 +14,18 @@ header {
color: #2BB1A5 !important;
transform: translateY(-2px);
}
&.active,
&.active-item {
color: #2BB1A5 !important;
border-bottom: 2px solid #2BB1A5;
}
}
.nav-item.active .nav-link {
color: #FECD4F !important;
.nav-item.active .nav-link,
.nav-item .nav-link.active,
.nav-item .nav-link.active-item {
color: #2BB1A5 !important;
}
}
@ -25,16 +33,27 @@ header {
.o_header_affix_top {
a:not(.btn):not(.btn-primary) {
color: #FECD4F !important;
transition: color 0.3s ease;
transition: all 0.3s ease;
position: relative;
&:hover {
color: #2BB1A5 !important;
color: #111 !important;
background-color: #FECD4F !important;
border-radius: 50px;
}
}
.fa {
.fa,
.oi {
color: #FECD4F !important;
}
// Cart badge color
.o_wsale_cart_quantity {
background-color: #2BB1A5 !important;
color: white !important;
border: none;
}
}
// Contact Us Button - Odoo CTA Button
@ -1332,3 +1351,47 @@ footer#bottom {
}
}
}
/* Global Red Color Removal & Theme Alignment */
.text-danger {
color: #2BB1A5 !important; // Replace red text with theme teal
}
.bg-danger,
.btn-danger {
background-color: #2BB1A5 !important;
border-color: #2BB1A5 !important;
color: white !important;
}
.badge-danger {
background-color: #FECD4F !important;
color: #04121D !important;
}
// Force Shop category sidebar active item to NOT be red
#products_grid_before .nav-link.active {
background-color: #2BB1A5 !important;
color: white !important;
}
// Global Link Hover & Active Color Fix
a:hover,
a:hover *,
.btn-link:hover,
.btn-link:hover * {
color: #2BB1A5 !important;
}
.active,
.nav-link.active,
.nav-pills .nav-link.active {
color: #2BB1A5 !important;
}
// Special case for buttons or text that should be white on teal background
.nav-pills .nav-link.active,
.category-list .active,
.category-list .active span {
color: white !important;
}

View File

@ -110,7 +110,7 @@
<div class="s_col_no_resize s_col_no_bgcolor">
<label class="form-label fw-normal" for="name" style="color: #666; font-size: 15px;">
Full Name
<span class="text-danger"> *</span>
<span style="color: #2BB1A5;"> *</span>
</label>
<div>
<input type="text" class="form-control" name="name" required="1" placeholder="Full Name" style="background-color: #F8F9FA; border: 1px solid #2BB1A5 !important; border-radius: 8px; padding: 12px; color: #2BB1A5 !important; font-size: 14px;"/>
@ -123,7 +123,7 @@
<div class="s_col_no_resize s_col_no_bgcolor">
<label class="form-label fw-normal" for="email_from" style="color: #666; font-size: 15px;">
Email Address
<span class="text-danger"> *</span>
<span style="color: #2BB1A5;"> *</span>
</label>
<div>
<input type="email" class="form-control" name="email_from" required="1" placeholder="Email Address" style="background-color: #F8F9FA; border: 1px solid #2BB1A5 !important; border-radius: 8px; padding: 12px; color: #2BB1A5 !important; font-size: 14px;"/>
@ -136,7 +136,7 @@
<div class="s_col_no_resize s_col_no_bgcolor">
<label class="form-label fw-normal" for="phone" style="color: #666; font-size: 15px;">
Phone Number
<span class="text-danger"> *</span>
<span style="color: #2BB1A5;"> *</span>
</label>
<div>
<input type="tel" class="form-control" name="phone" required="1" placeholder="Phone Number" style="background-color: #F8F9FA; border: 1px solid #2BB1A5 !important; border-radius: 8px; padding: 12px; color: #2BB1A5 !important; font-size: 14px;"/>
@ -149,7 +149,7 @@
<div class="s_col_no_resize s_col_no_bgcolor">
<label class="form-label fw-normal" for="subject" style="color: #666; font-size: 15px;">
Subject
<span class="text-danger"> *</span>
<span style="color: #2BB1A5;"> *</span>
</label>
<div>
<select class="form-select" name="subject" required="1" style="background-color: #F8F9FA; border: 1px solid #2BB1A5 !important; border-radius: 8px; padding: 12px; color: #2BB1A5 !important; font-size: 14px;">
@ -169,7 +169,7 @@
<div class="s_col_no_resize s_col_no_bgcolor">
<label class="form-label fw-normal" for="description" style="color: #666; font-size: 15px;">
Message
<span class="text-danger"> *</span>
<span style="color: #2BB1A5;"> *</span>
</label>
<div>
<textarea class="form-control" name="description" required="1" placeholder="Message" rows="5" style="background-color: #FFFFFF; border: 1px solid #2BB1A5 !important; border-radius: 8px; padding: 12px; color: #2BB1A5 !important; font-size: 14px;"></textarea>

View File

@ -33,7 +33,7 @@
<t t-set="title" t-value="default_title"/>
</t>
</t>
<t t-set="x_icon" t-value="website.image_url(website, 'favicon')"/>
<t t-set="x_icon" t-value="'/dine360_theme_chennora/static/description/icon.png'"/>
</xpath>
<xpath expr="//head/meta[last()]" position="after">
<meta name="generator" content="Odoo"/>
@ -82,6 +82,21 @@
<attribute name="t-att-data-extra-items-toggle-aria-label">extra_items_toggle_aria_label</attribute>
</xpath>
</template>
<!-- Header Phone Number Replacement - Targeted View -->
<template id="chennora_header_phone" inherit_id="website.header_text_element" name="Chennora Header Phone" priority="60">
<xpath expr="//a[contains(@href, 'tel:')]" position="replace">
<a href="tel:+1(647)856-2878" class="nav-link o_nav-link_secondary p-2">
<i class="fa fa-phone me-1"></i>
<span class="o_force_ltr">+1(647)856-2878</span>
</a>
</xpath>
</template>
<template id="custom_main_layout_extra" inherit_id="website.layout" priority="51">
<xpath expr="//header/t[@t-cache]" position="attributes">
<attribute name="t-cache">None if website.is_menu_cache_disabled() else (xmlid,website,website.is_public_user())</attribute>
</xpath>

View File

@ -3,33 +3,24 @@
<data>
<!-- Product Page Layout Customization -->
<template id="chennora_product_details_layout" inherit_id="website_sale.product" name="Chennora Product Details" priority="60">
<!-- Breadcrumbs Customization
<xpath expr="//nav[hasclass('o_wsale_products_breadcrumb')]" position="replace">
<nav class="o_wsale_products_breadcrumb mb-4" aria-label="breadcrumb">
<ol class="breadcrumb bg-transparent p-0">
<li class="breadcrumb-item"><a href="/" class="text-decoration-none text-muted">Home</a></li>
<li class="breadcrumb-item"><a href="/shop" class="text-decoration-none text-muted">Shop</a></li>
<li t-if="category" class="breadcrumb-item">
<a t-att-href="keep('/shop/category/%s' % slug(category), category=0)" t-field="category.name" class="text-decoration-none text-muted"/>
</li>
<li class="breadcrumb-item active text-dark fw-bold" aria-current="page"><span t-field="product.name"/></li>
</ol>
</nav>
</xpath> -->
<!-- Product Image Area -->
<!-- 1. Style the image column -->
<xpath expr="//div[@id='product_details']/preceding-sibling::div" position="attributes">
<attribute name="class" add="col-md-6 order-md-1 mb-5 mb-md-0" separator=" "/>
<attribute name="class" add="rounded-4 shadow-sm overflow-hidden" separator=" "/>
</xpath>
<!-- Product Info Area -->
<xpath expr="//div[@id='product_details']" position="attributes">
<attribute name="class" add="col-md-6 order-md-2 ps-md-5" separator=" "/>
</xpath>
<!-- Remove default details content to replace with custom structure -->
<!-- 2. Prepend our Premium Styled content at the very top of product_details container -->
<!-- We use 'inside' and a wrapper with 'order-first' to ensure it stays at the top -->
<xpath expr="//div[@id='product_details']" position="inside">
<div class="product-details-wrapper">
<div class="product-details-wrapper chennora-premium-content" style="order: -1; position: relative; z-index: 10;">
<!-- Breadcrumbs -->
<!-- <div class="o_wsale_products_breadcrumb mb-3">
<ul class="breadcrumb bg-transparent p-0 small">
<li class="breadcrumb-item"><a href="/shop" class="text-secondary text-decoration-none">All Products</a></li>
<li class="breadcrumb-item active fw-bold" style="color: #FECD4F;"><span t-field="product.name"/></li>
</ul>
</div> -->
<h1 itemprop="name" t-field="product.name" class="display-5 fw-bold mb-3 text-dark"/>
<div class="product-meta d-flex align-items-center mb-4">
@ -50,36 +41,10 @@
</h2>
</div>
<p t-field="product.description_sale" class="text-muted mb-5 fs-6" placeholder="A short description of the product..."/>
<p t-field="product.description_sale" class="text-muted mb-4 fs-6" placeholder="A short description of the product..."/>
<hr class="my-4 text-muted opacity-25"/>
<!-- Add to Cart Block (Using Odoo's native form structure but styled) -->
<!-- We keep the original form hidden or wrap it? Better to style existing elements but for now, let's just ensure the structure is clean. -->
</div>
</xpath>
<!-- Hide original Odoo elements to avoid duplication -->
<xpath expr="//h1[@itemprop='name']" position="attributes">
<attribute name="class" add="d-none" separator=" "/>
</xpath>
<xpath expr="//div[hasclass('product_price')]" position="attributes">
<attribute name="class" add="d-none" separator=" "/>
</xpath>
<xpath expr="//div[@id='product_attributes_simple']" position="attributes">
<attribute name="class" add="d-none" separator=" "/>
</xpath>
<xpath expr="//p[hasclass('text-muted')][@t-field='product.description_sale']" position="attributes">
<attribute name="class" add="d-none" separator=" "/>
</xpath>
<!-- Style the original image -->
<xpath expr="//span[@itemprop='image']" position="attributes">
<attribute name="class" add="rounded-4 shadow-sm" separator=" "/>
</xpath>
</template>
</data>
</odoo>

BIN
shop_output.html Normal file

Binary file not shown.