Odoo 中使用控制器来开发前端模块。后端模块链接到控制器。我们可以通过使用覆盖属性对基类进行修改来修改编程逻辑或向现有程序添加新逻辑。
要将控制器添加到模块,第一步,您必须为控制器创建一个单独的目录。在此目录中,应将一个 init 文件和包含控制器方法的所有 python 文件添加到 init 文件中。然后,将此目录添加到模块的 init 文件中。
要覆盖控制器,我们必须首先构造一个定义现有函数的子类。然后,我们必须从这个控制器中选择一个要覆盖的函数。
例如,我们可以选择一个 Carousel 函数并覆盖它。
def _get_products_recently_viewed(self):
"""Returns list of recently viewed products according to current user."""
max_number_of_product_for_carousel = 12
visitor = request.env[
'website.visitor']._get_visitor_from_request()
if visitor:
excluded_products = request.website.sale_get_order().mapped(
'order_line.product_id.id')
products = request.env['website.track'].sudo().read_group(
[('visitor_id', '=', visitor.id),
('product_id', '!=', False),
('product_id.website_published', '=', True),