Zum Inhalt springen

"Powered by Odoo" einfach entfernen

Die "Powered by Odoo"-Signatur erscheint in allen Odoo-E-Mails und Portalansichten. Hier erfährst du, wie du sie – unabhängig von deiner Hosting-Methode – einfach und sicher entfernst.
14. Oktober 2025 durch
"Powered by Odoo" einfach entfernen
Nathanael Lee
| Noch keine Kommentare


Im Standard blendet Odoo die Signatur „Powered by Odoo“ an vielen Stellen ein: in allen E-Mails, auf den Portalseiten zu Bestellungen, Rechnungen und Lieferscheinen sowie auf Website und im E-Commerce. Das wirkt wie ein kleines Detail, hinterlässt bei Kunden und Lieferanten aber oft einen unprofessionellen Eindruck. Für einen sauberen Auftritt empfehle ich, diese Signatur überall zu entfernen.

Woher kommt das Powered by Odoo?

Ganz simpel erklärt besteht Odoo in technischer Hinsicht aus folgenden Elementen: 

  • Datenbank (PostgreSQL): Speichert alle Informationen, z. B. Kunden, Produkte, Belege.
  • Server/Backend (Python): Führt Business-Logik aus, z. B. das Berechnen von Preisen anhand von Preislisten oder das Durchführen von Lagerbuchungen.
  • Templates (XML/QWeb/HTML): Beschreibt, welche Felder, Tabellen und Buttons in Odoo zu sehen sind.
  • Frontend (JavaScript): Macht die Oberfläche im Browser interaktiv (Klicks, Suche, Filter).
  • Styles (CSS/SCSS): Legen das Aussehen fest – Farben, Schriften, Abstände.

Der entscheidende Punkt für Anpassungen am User Interface (kunden- und benutzerseitig) sind die Templates. Die Templates sind auf dem Server als XML-Dateien gespeichert und werden bei der Modul-Installation in die Datenbank geladen und dort persistent gespeichert. Das hat den Vorteil, dass wir alle Templates ohne Anpassungen vom Source-Code verändern können. Dies gilt nicht nur bei On-Premise oder Odoo.sh, sondern auch bei Odoo Online, da wir auch dort Zugriff auf die Datenbankeinträge haben.

Schritt 1: Füge ?debug=1 an die Odoo-URL an, um den Developer Mode zu aktivieren. Alternativ kannst du den Developer Mode auch über die Einstellungen aktivieren.

Debug Mode


Schritt 2: Suche auf der App-Übersicht nach "Ansichten". Wenn du die Ansichten nicht findest, hast du womöglich keine Admin Zugriffsrechte, oder bist nicht im Debug Mode.

Ansichten Suchen


Schritt 3: Erstelle einen benutzerdefinierten Filter und filtere nach Arch Blob contains "Powered by"

Ansichten Filtern nach "Powered by"

Nun hast du eine Liste aller Templates, die für das Powered by Odoo verantwortlich sind.

Alle Ansichten die "Powered by" enthalten

Wie passe ich die Odoo Templates an?

Eine Möglichkeit ist, die verantwortlichen Zeilen im XML der Templates direkt zu löschen. Für Tests ist das auch in Ordnung. Kaputtmachen kannst du dabei nichts, das Schlimmste, was passieren kann, ist eine Fehlermeldung beim Öffnen der Ansicht. Meistens gibt es aber schon beim Speichern von inkorrekten Änderungen eine Fehlermeldung, da Odoo die Ansicht direkt beim Speichern validiert.

"Powered by" direkt löschen

Das Problem beim direkten Anpassen ist, dass die Ansichten bei jedem Modul-Update wieder vom Source-Code (auf dem Server gespeichert) in die Datenbank geladen werden und somit alle Änderungen wieder verloren sind. 




Um Templates korrekt und upgradefähig anzupassen, verwenden wir vererbte Ansichten (engl. inherited Views). Dabei können durch eigenständige Templates Basis Templates angepasst werden, ohne deren Code direkt anzupassen. Dazu verwenden wir XPath, eine Abfragesprache für XML um spezifische Elemente im XML (in diesem Fall der Brand Promotion Message) ausfindig zu machen und zu bearbeiten.
Doch wie geht das genau?

Schritt 1: Erstelle unter Einstellungen / Technisch / Benutzerschnittstelle / Ansichten eine neue Ansicht. Fülle folgende Felder aus: 
 
Ansichtsbezeichnung: Ein beliebiger, aussagekräftiger Name
Vererbte Ansicht: Die Ansicht, die angepasst werden soll.
Vererbungsmodus für Ansicht: Erweiterungsübersicht


Neue Ansicht erstellen


Schritt 2: Erstelle die XPath Expression, um in der Vererbten Ansicht das gewünschte Element zu bearbeiten. In diesem Fall wollen wir folgendes Element suchen und ersetzen: 

<t t-out="final_message % (odoo_logo, _message and ('- ' + _message) or '')"/>

Der XPath-Ausdruck zum Ersetzen dieses Elements lautet wie folgt:

<xpath expr="//t[@t-out]" position="replace"//>

Zum Erstellen von XPath-Ausdrücken kann ChatGPT o. Ä. verwendet werden – sende ihm einfach die Odoo-Ansicht und sage genau, was du bearbeiten möchtest.


Schritt 3: Füge den XPath-Ausdruck in der Ansicht ein und speichere die Ansicht. 

Xpath Ausdruck

Fertig – führe nun diese Schritte für alle Ansichten aus, deren Arch Blob „Powered by“ enthält. Nachfolgend findest du alle notwendigen XPath-Ausdrücke.

Brand Promotion Message:

<xpath expr="//t[@t-out]" position="replace"//>

Login Layout:


<data>
    <xpath expr="//div[contains(@class,'border-top')]//a[contains(@href,'odoo.com') and contains(normalize-space(.),'Powered')]" position="replace"/>
    <xpath expr="//div[contains(@class,'border-top')]//a[contains(@href,'/web/database/manager')]" position="attributes">
        <attribute name="class">pe-2 me-1</attribute>
    </xpath>
</data>

Mail: mail notification layout template:

<xpath expr="//div[@t-if='show_footer'][descendant::a[contains(@href,'odoo.com')]]" position="replace">
    <div t-if="show_footer" style="color: #555555; font-size:11px;">
        <span id="mail_unfollow">
            <a href="/mail/unfollow" style="text-decoration:none; color:#555555;">Unfollow</a>
        </span>
    </div>
</xpath>

mail_notification_light:

<xpath expr="//tr[td[descendant::a[contains(@href,'odoo.com')]]]" position="replace">
    <tr>
        <td align="center" style="min-width: 590px;">
            <span id="mail_unfollow">
                <a href="/mail/unfollow" style="text-decoration:none; color:#555555;">Unfollow</a>
            </span>
        </td>
    </tr>
</xpath>

User Reset Password:

<xpath expr="//tr[td//a[contains(@href,'odoo.com') and contains(@href,'utm_medium=auth')]]" position="replace"/> 

My Portal Record Sidebar:

<xpath expr="//div[@id='sidebar_content']//div[a[contains(@href,'odoo.com') and contains(@href,'utm_medium=portal')]]" position="replace"/> 

digest_mail_main:

<data> <xpath expr="//div[@class='by_odoo' and .//a[contains(@href,'odoo.com')]]" position="replace"> <div class="by_odoo" style="margin-bottom: 15px;"> <t t-if="unsubscribe_token"> <a t-attf-href="/digest/#{object.id}/unsubscribe?token=#{unsubscribe_token}&amp;user_id=#{user.id}" target="_blank" style="text-decoration: none;"> <span style="color: #878d97;">Unsubscribe</span> </a> </t> <t t-elif="object and object._name == 'digest.digest'"> <a t-att-href="'/odoo/digest.digest/%s' % object.id" target="_blank" style="text-decoration: none;"> <span style="color: #878d97;">Unsubscribe</span> </a> </t> </div> </xpath> <xpath expr="//p[@id='powered' and contains(@class,'by_odoo')]" position="replace"/> </data>



Falls du noch Fragen hast, hinterlasse gerne einen Kommentar oder schreibe mir eine E-Mail.

Nathanael Lee


Danke für die Registrierung!


Anmelden , um einen Kommentar zu hinterlassen