Odoo 建立特定布局的頁面

2021-08-04 07:54:26 字數 2449 閱讀 7316

想象一下,我們要為特殊功能的頁面建立乙個特定的布局。在這些頁面上,我們需要在頂部新增乙個功能列表,並使用**片段(snippets)讓客戶可以盡可能地設定其他的頁面布局。

在你的view資料夾中,建立乙個

pages.xml

檔案並新增預設

odoo

標記。在「

data

」建立乙個「template」標籤,將page屬性設定為true,並將**新增裡面去。

<?xml version="1.0" encoding="utf-8" ?>

網頁標題將是模板的id。在我們使用services(從website.services)

我們成功地建立了乙個新的頁面布局,但我們還沒有告訴系統如何使用它。要做到這一點,我們可以用qweb。把html**到

標籤裡,如下:

使用我們將使用自己的**擴充套件odoo的預設頁面布局。

我們使用了兩段

**,乙個的id為

wrap

,另乙個是用了container類。這就提供了乙個最小的布局。

下一步是新增乙個空的區域來讓使用者可以填寫。只需在div#wrap元素之前新增乙個oe_structure類的div。

<?xml version="1.0" encoding="utf-8" ?>

提示

你可以建立任意多的**片斷區域並放到你願意放的頁面中。

我們的頁面就快好了。現在我們要做的是在我們的__openerp__.py新增

pages.xml

檔案。

'data': [

'views/layout.xml',

'views/pages.xml'

],

更新你的主題。

好了,我們的服務頁面已經準備好,你可以通過瀏覽**/網頁/服務

/訪問它。

你會注意到**片段(snippets)可以在服務列表中拖放。

再回到pages.xml檔案中,在頁面模板後,複製

/貼上以下**。

services

/page/services

99

此**將在主選單中新增乙個鏈結。

sequence屬性定義了在頂部選單中的鏈結的位置。在我們的示例中,我們將值設定為99,以便將其放置到最後乙個。如果你想把它放在乙個特定的位置,你必須根據實際需要來更改它的值。

你可以看到檢查website模組data.xml檔案,home

鏈結設定為10和contact us是

60。例如,如果你想把你的鏈結放在中間,那麼序列值可以設定為40。

odoo預設使用了

bootstrap

。這意味著,你可以使用所有

bootstrap

的引導樣式和布局功能。

當然了,如果你想採用獨特的設計,bootstrap是不夠的。以下步驟將指導您如何將自定義的樣式(

style

)新增到主題中。最終的效果不會很漂亮,但會讓你了解完整的過程。

我們先建立乙個空檔案,名為style.less,放在乙個名為less的靜態資料夾下。下面的規則將影響服務頁面的樣式。複製並貼上它,然後儲存檔案。

.services 

}

樣式檔案已經準備好了,但是主題裡還沒有包含它。

回到view資料夾中並建立乙個assets.xml檔案。新增odoo預設的

xml標記並複製貼上以下**。記得要把theme資料夾替換成自己的主題名稱。

我們剛剛建立了乙個模板,less檔案。你可以看到,模板有乙個特殊的屬性稱為inherit_id。這個屬性告訴

odoo

我們的模板會使用自己的樣式。

在這種情況下,我們指的是assets_frontend模板,位於website模組。assets_frontend指定了website builder要使用的assets位置列表,我們的目標是先把它加進去。

這可以通過使用xpath表示式expr="link[last()]"和position="after"來實現,意思是「把我的style

的檔案放在包含assets清單的的最後」。

把它放在最後乙個,我們確保我們的檔案將被載入在最後,並採取優先權。

最後新增assets.xml到__openerp__.py檔案。

更新你的主題。

我們的less檔案現在包含在我們的主題中,它將自動編譯,壓縮和合併odoo的assets中。

odoo 建立嚮導wizard頁面

幾個小點 1 wizard wizards無所謂 2 臨時模型無需安全規則 因為它們是用於輔助執行的一次性記錄。那麼也就不需要新增security ir.model.access.csv許可權控制列表檔案 首先,from import wizard並在wizards下建立 aa.py 和 aa vi...

odoo 動態建立欄位的方法

動態建立字段並非乙個常見的的需求,但某些情況下,我們確實又需要動態地建立字段。odoo 中建立欄位的方法有兩種,一種是通過python檔案class中進行定義,另一種是在介面上手工建立,odoo通過state欄位對這兩種型別的字段進行區分。通過介面建立的字段必須以x 開頭。筆者曾經試圖通過pytho...

建立特定使用者的程序

用於建立特定使用者的程序,比如在服務程序中建立基於當前使用者的程序等等 bool gettokenbyname handle htoken,lptstr lpname handle hprocesssnap null bool bret false processentry32 pe32 pe32....