跳转到主要内容

支持每个网站不同的主题

项目描述

License: LGPL-3

网站多主题

允许网站管理员为每个网站设置不同的主题。

“主题”可能不仅是一个主题模块,还可以是一组主题,甚至是来自任何模块(例如,来自“网站”模块的视图 website.custom_footer)的特定视图。这也意味着,“主题”不仅是一种样式,还包括内容。

它添加了控件,使管理多个网站更容易

  • 下拉列表以切换到不同的网站。

  • 在页面属性对话框中通过复选框更改相关网站的页面。

  • 将字段 website_ids 添加到 website.page 树中。

工作原理

核心思想如下

  • 找到由 主题模块 创建的视图,并将其标记为 多视图 (website.theme.asset),除了通过XML手动指定的一个外。负责这一点的函数是 _convert_assets

  • 多视图active 设置为 False。请参阅方法 _find_and_deactivate_views

  • 多主题 (新模型中的记录 website.theme) 应用到特定网站。请参阅方法 _multi_theme_activate

    • 使用技术视图 website.assets_frontendwebsite.layout 进行一些魔法。

      • templates/patterns.xml 复制 patterns

      • layout_pattern 中,将 {theme_view} 占位符替换为 assets_pattern 的副本。

      • 相应的复制 pattern 将用作复制 multi-views 中的 inherit_id 字段的新值,这些 multi-views 原先扩展了 web.assets_frontendwebsite.assets_frontendwebsite.layout

    • 复制 multi-theme 及其 dependencies(其他 multi-themes)。在副本中,当可能时,将 inherit_id 字段更改为其他复制的视图或复制的 patterns

安装

为了使此模块正常工作,您需要

  • 安装任何官方支持的主题

    • theme_bootswatch

  • 安装任何非官方支持的主题(自行承担风险)

    • theme_anelusia

    • theme_artists

    • theme_avantgarde

    • theme_beauty

    • theme_bewise

    • theme_bistro

    • theme_bookstore

    • theme_clean

    • theme_enark

    • theme_graphene

    • theme_kea

    • theme_loftspace

    • theme_mongolia

    • theme_nano

    • theme_notes

    • theme_odoo_experts

    • theme_orchid

    • theme_treehouse

    • theme_vehicle

    • theme_yes

    • theme_zap

在安装此模块后,上述列表中的主题将成为多站点。如果安装了“website_multi_theme”之后,请手动更新此模块,否则它将不会通知此类更改。

配置

要配置此模块,您需要

  1. 转到 网站管理 > 配置 > 设置 并选择或创建一个 网站

  2. 点击 高级 > 多站点主题 > 重新加载

  3. 高级 > 多站点主题 中,选择一个可用的主题。

  4. 通过编辑按钮(fa-external-link)将 默认主题 添加到所选主题的 子主题 中,以使多页脚工作。

保存后,任何未选择 多站点主题 的网站将使用默认的纯 Bootstrap 主题,而那些已经选择了一个主题的网站将获得该主题。

当然,您的 Odoo 实例必须可以通过所有提供的主机名访问,否则没有人会看到效果。但这最可能是通过您的 DNS 提供商和/或代理配置的,因此这不属于此插件的问题。

如果您想测试这种行为,请考虑 localhost0.0.0.0 是不同的主机名。

用法

要使用此模块,您需要

  1. 遵循配置步骤。

  2. 进入您修改过的任何网站。

Try me on Runbot

开发常见问题解答

如何开发一个适用于多站点的主题?

检查 demo/themes.xml。它包含一个用作模板的演示主题。此演示主题将主按钮变为绿色,因此您可以轻松测试它是否被应用。

如何将单站点主题转换为多站点主题?

检查 data/themes_bootswatch.xml。您必须这样做。您可以考虑直接在此插件中添加支持,因为它如果未安装单站点主题插件(它作为软依赖项)则不会做任何事情。

如何获取多站点特定的视图更新?

此插件默认为保守模式,这意味着在生产数据库中,如果视图已创建,则不会更新视图(除了从 templates/patterns.xml 复制的视图)。

要强制您的网站获取已更改的基础主题的所有视图的最新视图,您应禁用网站多主题(以便引擎删除所有视图),然后再次启用它(从头开始重新创建它们)。

在演示或开发实例中不会发生这种情况,在这些实例中,视图架构始终更新。

如何在runbot上测试?

  • 打开[[ 网站 ]] >> 配置 >> 设置

  • 网站字段从网站 localhost更改为网站 0.0.0.0

  • 点击fa-external-link图标以编辑网站

  • 网站域名字段中复制粘贴构建域名,并在第一个点之后添加一些内容,例如

    Original domain: 3308093-10-0-28910f.runbot2.odoo-community.org
         New domain: 3308093-10-0-28910f.second-website.runbot2.odoo-community.org
  • 点击[保存]以保存网站更改

  • 现在,您可以使用未更改的构建域名用于名为网站 localhost的网站,以及更新后的域名用于名为网站 0.0.0.0的网站

已知问题/路线图

  • 不保证支持私有主题。

  • 没有界面可以删除网站。请通过Odoo外壳程序执行此操作。

  • 主题选择器如果可能的话应该包括某种缩略图。

  • 如果您在安装此插件后安装了任何受支持的插件,您必须在网站配置向导中按下重新加载以使其注意到更改。

  • 如果您与该插件一起安装了任何不受支持的插件,它可能会成为所有受支持插件的基座,这可能会导致奇怪的情况和错误。

致谢

贡献者

维护者

Odoo Community Association

此模块由OCA维护。

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。

要为此模块做出贡献,请访问https://odoo-community.org

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程

构建分发

odoo11_addon_website_multi_theme-11.0.1.6.1-py2.py3-none-any.whl (270.8 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者