如何在 Odoo 16 中修改现有网页

news2024/11/13 11:46:18

在 Odoo 中,网页是指在 Odoo 网站上可访问的特定页面或 URL。Odoo 中的网页是通过内置网站模块创建和管理的,该模块允许您设计和自定义网页的内容、布局和功能。

Odoo 中的网页是您网站的构建块,可用于呈现信息、展示产品或服务、通过表单收集用户数据等。它们提供访问者与您的网站互动的界面。

Odoo 中可以创建的一些常见网页类型包括:

1. 主页

2. 产品页面

3. 关于我们

4. 联系我们

5. 博客页面

6. 登陆页面

7.常见问题解答页面

这些只是可以在Odoo16中创建的网页类型的几个示例。使用网站模块,您可以灵活地根据您的特定需求创建和自定义网页,并结合各种设计元素、多媒体内容、表格和交互功能。

最简单的方法是使用各种可用的块工具从前端编辑页面。然后,您可以轻松拖放结构、内部内容和功能动态内容块(包括表单、地图、产品和轮播),并从代码片段中添加它们。此外,您还可以使用提供的 HTML、JS 和 CSS 编辑器工具对其进行更改。通过修改代码创建后端的另一种方法是添加继承模板的自定义代码。让我们看一个电子商务公司修改后的主页的示例。

让我们尝试将电子商务网站最受欢迎的商品放到主页上,以便购物网站的用户可以浏览这些商品以及任何当前的每周特价或特价商品。虽然 Odoo 中的主页默认显示为空白,但我们可以根据需要添加特殊功能和片段。让我们使用在线商店中最畅销的商品示例来检查一下。

如何修改 odoo-16-1-cybrosys 中的现有网页

我们将在网站主页上显示最畅销的产品,如下一部分所示,通过在后端代码中、在创建所有功能的控制器函数中呈现它们。

from odoo import fields
from odoo import http
from odoo.http import request
from datetime import datetime
import datetime
from odoo.addons.website.controllers.main import Home
class WebsiteSort(Home):
   @http.route(auth='public')
   def index(self, **kw):
       products = request.env['product.template'].sudo().search([])
       for each in products:
           each.sales_count = 0
           each.views = 0
           each.top_selling = False
       date = fields.Datetime.now()
       date_before = date - datetime.timedelta(days=7)
       orders = request.env['sale.order'].sudo().search([('date_order', '<=', date),
                                                         ('date_order', '>=', date_before),
                                                         ('state', 'in', ('sale', 'done'))])
       for order in orders:
           order_line = order.order_line
           for product in order_line:
               product.product_id.sales_count = product.product_id.sales_count + 1
           products = request.env['website.track'].sudo().search(
               [('visit_datetime', '<=', date),
                ('visit_datetime', '>=', date_before)])
           super(WebsiteSort, self).index()
           website_product_ids = request.env['product.template'].sudo().search(
               [('sales_count', '!=', 0)],
               order='sales_count desc', limit=4)
           website_product_ids.top_selling = True
           return request.render('website.homepage', {'website_product_ids': website_product_ids})

然后我们可以在主页上显示最畅销的产品;我们应该继承 website.homepage 模板并在购物车视图中添加最畅销的产品,如下所定义。

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
   <template id="homepage_inherit_product_display"
             inherit_id="website.homepage" name="Products" active="True">
       <data inherit_id="website.homepage">
           <xpath expr="//div[@id='wrap']" position="inside">
               <input type="hidden" name="csrf_token"
                      t-att-value="request.csrf_token()"/>
               <div class="container mt32 mb64">
                   <section>
                       <div class="product_details">
                           <center>
                               <h3>MOST SELLING PRODUCTS</h3>
                           </center>
                       </div>
                       <br/>
                       <div class="oe_product_cart_new row" style="overflow: hidden;">
                           <t t-foreach="website_product_ids" t-as="website_product_id">
                               <div class="col-md-3 col-sm-3 col-xs-12" style="padding:6px 6px 6px 6px;">
                                   <form action="/shop/cart/update" method="post" class="card oe_product_cart"
                                         itemscope="itemscope"
                                         itemtype="http://schema.org/Product" data-publish="on">
                                       <br/>
                                       <center>
                                           <div style="width:100%; height:155px;overflow: hidden;">
                                               <a t-attf-href="/shop/product/#{ slug(website_product_id) }">
                                                   <img t-attf-src="/web/image?model=product.template&amp;field=image_1920&amp;id=#{website_product_id.id}"
                                                        class="img img-fluid"
                                                        style="padding: 0px; margin: 0px; width:auto; height:100%;"/>
                                               </a>
                                           </div>
                                       </center>
                                       <br/>
                                       <div class="card-body p-0 text-center o_wsale_product_information">
                                           <div class="p-2 o_wsale_product_information_text">
                                               <h6 class="o_wsale_products_item_title">
                                                   <a data-oe-model="product.template"
                                                      data-oe-id="website_product_id.id"
                                                      data-oe-field="website_product_id.name"
                                                      data-oe-type="char" data-oe-expression="product.name"
                                                      itemprop="name"
                                                      data-oe-field-xpath="/t[1]/form[1]/div[2]/div[1]/h6[1]/a[1]"
                                                      t-attf-href="/shop/product/#{ slug(website_product_id) }"
                                                      content="website_product_id.name">
                                                       <t t-esc="website_product_id.name"/>
                                                   </a>
                                               </h6>
                                               <h6 class="o_wsale_products_item_title">
                                                   <span t-esc="website_product_id.currency_id.symbol"
                                                         style="color:black"/>
                                                   <t t-esc="website_product_id.list_price"/>
                                               </h6>
                                           </div>
                                           <div class="o_wsale_product_btn" data-oe-model="ir.ui.view"
                                                data-oe-id="1561" data-oe-field="arch"
                                                data-oe-xpath="/t[1]/form[1]/div[2]/div[2]"/>
                                       </div>
                                       <span class="o_ribbon " style=""/>
                                   </form>
                               </div>
                           </t>
                       </div>
                   </section>
               </div>
           </xpath>
       </data>
   </template>
</odoo>

 

控制 website.homepage 模板并在满足您需求的 div id 包装内插入一个容器。我们在此实例中包含了最畅销的商品。要显示带有产品名称、图像和产品定价货币的 product_cart 视图,请在产品购物车行 div 内循环遍历满足最受欢迎产品标准的 product_id。此外,通过将这个继承的模板添加到视图和清单来更改自定义插件网站的主页,如下所示;

如何修改 odoo-16-2-cybrosys 中的现有网页

这样,我们就可以修改Odoo中现有的网页了。希望您对修改Odoo16中现有的网页有所了解。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「MyBatis」实现留言板

效果预览 界面长这样&#xff0c;每次提交之后&#xff0c;会在下面生成一条记录&#xff0c;刷新页面或者关掉后重新打开&#xff0c;这些记录仍然存在 思路 我们需要在数据库中保存一条一条的消息&#xff0c;那就需要一个类 Data public class MessageInfo {private Integ…

【笔记】Swin-Transformer 的计算量与Transformer的计算量的对比:前者通过使用新颖的窗口技巧,将后者的高阶项变为低阶,大大降低了计算量

补充1&#xff1a; 局部窗口内的自注意力&#xff08;W-MSA&#xff09;: 在 Swin Transformer 中&#xff0c;输入特征图被划分为多个小的窗口&#xff08;例如 7x7 的窗口&#xff09;。在每个窗口内&#xff0c;计算自注意力机制&#xff08;W-MSA, Window-based Multi-Head…

【新手入门必看】字符串

一、初识字符串 1、定义的几种格式 和整型数组一样&#xff1a;int data[]{1,2,3,4,5}; char str[]{h,e,l,l,o}; 之前我们学过数组名就等于地址&#xff0c;那么也可以通过指针的方式来定义char *pchar"hello"; #include <stdio.h>int main(int arg…

C++-类与对象(中上篇)

一、目标 1. 类的 6 个默认成员函数 2. 构造函数 3. 析构函数 二、对目标的介绍 1. 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生…

Spring源码-源码层面讲解bean标签添加了lookup-method和replaced-method标签之后源码执行流程,以及对象实例化的流程

bean.xml文件添加lookup-method和replaced-method标签 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sch…

怎么转换视频格式?常见的3种格式转换方法

随着手机等工具的普及&#xff0c;拍视频已经变成我们日常生活娱乐的方式。在享受拍视频带来的快乐同时&#xff0c;我们需要灵活运用格式转换来满足不同的播放设备和使用场景的需求。怎么转换视频格式&#xff1f;很多人为了视频格式转换这个问题烦恼。 视频格式转换&#xf…

ComfyUI - 在服务器中部署 AIGC 绘画的 ComfyUI 工具 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/141140498 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 ComfyU…

PhpStorm完全配置指南:打造高效PHP开发环境!

Phpstorm环境配置与应用&#xff0c;具体包括安装PhpStorm、配置PHP运行环境、Apache集成、调试和部署等步骤。下面将详细展开每个步骤的具体操作和注意事项。 PhpStorm的下载与安装 下载地址&#xff1a;访问PhpStorm的官网下载地址&#xff0c;选择合适的版本进行下载。建议选…

【零基础学习CAPL语法】——TestWaitForMessage:等待指定报文

文章目录 1.函数介绍2.实例1.函数介绍 TestWaitForMessage——等待指定报文 long TestWaitForMessage(dbMessage aMessage, dword aTimeout); long TestWaitForMessage(dword aMessageId, dword aTimeout); long TestWaitForMessage(dword aTimeout); 若在aTimeout时间内等到了…

练习题PHP5.6+变长参数 ⇒ usort回调后门 ⇒ 任意代码执行

突破长度限制 使用usort上传后门 usort — 使用用户自定义的比较函数对数组中的值进行排序 paramusort(...$GET); ...为php设置可变长参数 在url地址栏中输入[]test&1[]phpinfo();&2assert 包含了phpiinfo&#xff08;&#xff09;命令执行 结合usort使用 assert…

leetcode695.岛屿的最大面积

题目描述 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积是岛上值为 1 的单元格的数目。 计算并…

小阿轩yx-Docker 基本管理

小阿轩yx-Docker 基本管理 &#xff08;镜像制作与管理&#xff09; Docker 镜像管理 Docker 镜像除了是 Docker 的核心技术&#xff0c;也是应用发布的标准格式一个完整的 Docker 镜像可以支撑一个 Docker 容器的运行进入容器之后最常见的操作就是在容器中安装应用服务 Do…

Python绘图入门:使用Matplotlib绘制柱状图

Python绘图入门&#xff1a;使用Matplotlib绘制柱状图 柱状图是一种常见的数据可视化方式&#xff0c;能够直观地展示不同类别之间的数据差异。在Python中&#xff0c;Matplotlib是一个非常强大且灵活的绘图库&#xff0c;它不仅能绘制简单的图表&#xff0c;还能创建复杂的多…

importlib库介绍

importlib importlib 包的目的有两个。 一种是在 Python 源代码中提供 import 语句&#xff08;因此&#xff0c;通过扩展&#xff0c;import() 函数&#xff09;的实现。 这提供了 import 的实现&#xff0c;它可以移植到任何 Python 解释器。 这也提供了一种比 Python 以外…

【鸿蒙学习】使用HarmonyOS NEXT与Uniapp开发同一鸿蒙应用的区别及分析

随着鸿蒙操作系统的普及&#xff0c;开发者面临着多种开发工具的选择。本文将通过开发、部署、运行、使用四个方面&#xff0c;详细分析使用HarmonyOS NEXT与Uniapp开发同一鸿蒙应用的区别&#xff0c;为开发者提供参考。 一、引言 鸿蒙操作系统&#xff08;HarmonyOS&#xf…

拿到服务器做的事:自己写的最全的一个,方便后续使用

1、ssh密钥登录 1.1本机生成密钥 这里是windows的命令 1.2上传.pub文件到服务器端 服务器端的操作&#xff1a; 本机用记事本打开.pub文件&#xff0c;复制到服务器端 我这里是新建了一个hh文件&#xff0c;粘贴过去了 vim hh1.3密钥写入到密钥key文件中 cat hh >>…

【C语言初阶】C语言指针全攻略:解锁C语言深层奥秘的钥匙

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言操作符 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀指针 &#x1f4d2;1. 指针和指…

于博士Cadence视频教程学习笔记备忘

标签&#xff1a;PCB教程 PCB设计步骤 cadence教程 Allegro教程 以下是我学习该视频教程的笔记&#xff0c;记录下备忘&#xff0c;欢迎大家在此基础上完善&#xff0c;能回传我一份是最好了&#xff0c;先谢过。 备注&#xff1a; 1、未掌握即未进行操作 2、操作软件是15.…

【问题记录+总结】VS Code Tex Live 2024 Latex Workshop Springer模板----更新ing

目录 Summary 道阻且长 少即是多 兵马未动粮草先行 没有万能 和一劳永逸 具体问题具体分析 心态 Detail 1、关于模板[官网] 2、settings.json 3、虫和杀虫剂 4、擦 换成Tex Studio都好了。。。 Summary 道阻且长 某中意期刊&#xff0c;只有Latex。之前只简单用过…

VSCODE platformio ESP32-S3 内置 JTAG 接口断点单步调试笔记

ESP32 S3的两种JTAG调试方法 ESP32 S3的有两种JTAG调试方法&#xff0c;直接连接板子上的JTAG引脚进行调试&#xff0c;或者用ESP32-S3 内置 JTAG 接口进行调试&#xff0c;这些方法有助于开发者在开发过程中进行更深入的调试。 1、ESP32-S3 内置 JTAG 接口 使用 ESP32-S3 内…