我们如何在同一个 war 中跨 Liferay 主题共享设置值

How can we share settings values across Liferay themes in same war

我们在 it.We 中有一个带有 2 个主题包的单主题应用程序需要将一个主题的设置共享到另一个主题。

<theme id="visual" name="visual-theme" >
        <settings>
            <setting key="service-unavailable" configurable="true" type="checkbox" value="false"></setting>
        </settings>
    </theme>

    <theme id="visual-home" name="visual-theme-home" >
        <settings>
            <setting key="h1-title-value" configurable="true" type="textarea" value="" ></setting>
            <setting key="service-unavailable" configurable="true" type="checkbox" value="false"></setting>
            <setting key="service-unavailable-message" configurable="true" type="textarea" value="Unavailable service"></setting>
        </settings>
    </theme>

我们需要 service-unavailable-message 设置作为默认值对 visual-theme 可用,这样当从 visual-theme-home 设置时,它也应该对其他主题可用。

设置是针对每个主题的,而不是针对每个 Web 应用程序的,因此主题 A 的某些区域的设置对主题 A 的任何内容都没有影响。您必须使用另一种技术来实现此目的。

当您使用主题设置时,您可以为每个站点或每个页面设置这些值。在后一种情况下,这会引入另一个歧义。

所以你有一个选择是

<theme id="visual" name="visual-theme" >
  <settings>
    <setting key="service-unavailable" configurable="true" type="checkbox" value="false"></setting>
    <setting key="service-unavailable-message" configurable="true" type="textarea" value="Unavailable service"></setting>
  </settings>
</theme>

<theme id="visual-home" name="visual-theme-home" >
  <settings>
    <setting key="h1-title-value" configurable="true" type="textarea" value="" ></setting>
    <setting key="service-unavailable" configurable="true" type="checkbox" value="false"></setting>
    <setting key="service-unavailable-message" configurable="true" type="textarea" value="Unavailable service"></setting>
  </settings>
</theme>

...并在您需要的任何地方复制消息。

另一种选择是将 service-unavailable-message 移动到另一个地方(作为更通用的配置值,或从某些服务中查找。只是不作为主题设置。

您没有提到您使用的是哪个版本的 Liferay。如果有机会使用 Liferay 7.0,请查看 themelets,您可以将主题中重用的代码放入 themelet 中并从您的主题中访问它。