首页 > 解决方案 > 如何在每个站点中创建 kentico 站点特定的资源字符串?

问题描述

在我的站点中,他们配置了 5 个站点。站点名称:A、B、C、D、E。

我希望能够使用每个文本字段的站点特定资源(本地化)字符串按站点自定义这两个文本。

这些资源字符串应该可以由 Kentico 上的管理员进行配置,并且应该能够由每个站点进行配置。

Kentico 中这些字符串的当前名称分别是标题和描述的“A.Checkout.EmailTitle”和“A.Checkout.EmailDescription”。

我使用下面的代码:

公共字符串GetPerSiteResourceString(字符串名称,字符串站点=“”)

    {
        if (string.IsNullOrEmpty(site))

        {
            site = SiteContext.CurrentSiteName;
        }
        var fullname = $"{site}.{name}";

        var perSiteStringInfo = ResourceStringInfoProvider.GetResourceStringInfo(fullname, LocalizationContext.CurrentCulture.CultureCode);
        if (perSiteStringInfo != null && perSiteStringInfo.StringID > 0)
        {
            return perSiteStringInfo.TranslationText;
        }
        return ResHelper.GetString(name, LocalizationContext.CurrentCulture.CultureCode);
    }

标题 = resources.GetPerSiteResourceString("Kadena.Checkout.EmailTitle"),描述 = resources.GetPerSiteResourceString("Kadena.Checkout.EmailDescription")

标签: kenticokentico-mvckentico-api

解决方案


正如我在 Kentico DevNet 上的问题中提到的那样,Kentico 并未设置为开箱即用地处理此问题。

但是,您概述的方法适用于检索数据,但无法限制谁有权编辑内容,除非您修改 Kentico UI 和/或为每个站点创建新的本地化列表页面。

如果您要创建一个新模块,然后创建只能由单个站点用户访问的新页面,您可以设置 WHERE 条件以查看键字符串的开头并将其与当前站点进行比较。


推荐阅读