Hello everyone, it is possible to add 2 filters to the web portal similar to modulo(portal) --> portal_searchbar -> searchbar_filters. Do you know how I can add so that I filter through both filters?
V14
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Kế toán
- Tồn kho
- PoS
- Project
- MRP
Câu hỏi này đã bị gắn cờ
Yes, in Odoo 14 , it's absolutely possible to add multiple filters (like a dropdown for status + date range or category) to the Portal view using portal_searchbar . You'll just need to extend the controller and the template logic properly.
Extend Controller
Inherit and override the web.controllers.portal method serving your portal page:
from odoo import http
from odoo.http import request
from odoo.addons.portal.controllers.portal import CustomerPortal
class CustomPortal(CustomerPortal):
@http.route(['/my/records'], type='http', auth="user", website=True)
def portal_my_records(self, **kwargs):
# Extract filters
filter_state = kwargs.get('filter_state', 'all')
filter_type = kwargs.get('filter_type', 'all')
domain = []
if filter_state != 'all':
domain += [('state', '=', filter_state)]
if filter_type != 'all':
domain += [('type', '=', filter_type)]
records = request.env['your.model'].sudo().search(domain)
values = {
'records': records,
'filter_state': filter_state,
'filter_type': filter_type,
'searchbar_filters_state': {
'all': 'All Status',
'draft': 'Draft',
'done': 'Done',
},
'searchbar_filters_type': {
'all': 'All Types',
'internal': 'Internal',
'external': 'External',
}
}
return request.render("your_module.portal_my_records_template", values)
Modify Portal Template:
In your portal_my_records_template.xml:
<t t-call="portal.portal_layout">
<div class="o_portal_searchbar_form">
<form method="get">
<select name="filter_state">
<t t-foreach="searchbar_filters_state.items()" t-as="filter">
<option t-att-value="filter[0]" t-att-selected="filter[0] == filter_state and 'selected' or None">
<t t-esc="filter[1]"/>
</option>
</t>
</select>
<select name="filter_type">
<t t-foreach="searchbar_filters_type.items()" t-as="filter">
<option t-att-value="filter[0]" t-att-selected="filter[0] == filter_type and 'selected' or None">
<t t-esc="filter[1]"/>
</option>
</t>
</select>
<button type="submit">Filter</button>
</form>
</div>
<!-- Your table showing the filtered records -->
</t>
i hope it is use full
Hi,
Refer to the following blog that explains how we can add the filter in the Odoo customer portal.
* https://www.cybrosys.com/blog/how-to-add-a-filter-option-in-odoo-18-website-portal
Hope it helps
Bạn có hứng thú với cuộc thảo luận không? Đừng chỉ đọc, hãy tham gia nhé!
Tạo tài khoản ngay hôm nay để tận hưởng các tính năng độc đáo và tham gia cộng đồng tuyệt vời của chúng tôi!
Đăng kýBài viết liên quan | Trả lời | Lượt xem | Hoạt động | |
---|---|---|---|---|
|
1
thg 5 24
|
2607 | ||
|
2
thg 2 24
|
2137 | ||
|
0
thg 4 23
|
1498 | ||
|
6
thg 2 23
|
18270 | ||
|
1
thg 11 22
|
4666 |