如何在sitecore中将文化代码名称用作子网站

时间:2016-12-14 06:24:26

标签: sitecore

我正在尝试使用文化代码名称(“fr,lb,ru”)作为sitecore www.mydomain.com/ru中的子网站,网站工作正常但内容未显示

发出此消息

“当前项目没有”俄语:русский“中的版本。 要创建版本,请单击“添加新版本”或单击“版本”选项卡上的“添加”。“

我的网站配置

请帮助我使用“ru,fr,sa,lb”作为sitecore中的子网站名称。

感谢。

2 个答案:

答案 0 :(得分:1)

如果您不希望Sitecore将URL的第一部分解释为语言代码,而是解析为内容树中的项目,则可以更改以下内容:

class Invoice(models.Model):
    types = [
        ('customer', 'Customer'),
        ('supplier', 'Supplier')
    ]

    number = models.CharField(max_length=30)
    date_invoice = models.DateTimeField('Date', default=timezone.now())
    comment = models.TextField(default=get_default_invoice_comment())
    type = models.CharField(max_length=20, choices=types, default='customer')
    partner_id = models.ForeignKey(
        'Partner', default=1, on_delete=models.CASCADE)
    currency_id = models.ForeignKey(
        'Currency', default=1, on_delete=models.CASCADE)

    @property
    def tax_amount(self):
        total = 0
        for line in self.invoiceline_set.all():
            total += line.tax_amount
        return total

    @property
    def subtotal(self):
        total = 0.0
        for line in self.invoiceline_set.all():
            total += line.subtotal
        return total

    @property
    def total(self):
        return self.subtotal + self.tax_amount

    def __unicode__(self):
        return self.number

这可以防止preprocessRequest管道中的StripLanguage处理器从路径中删除语言并重写URL。

您还应该更新LinkProvider的设置并设置<setting name="Languages.AlwaysStripLanguage" value="false" />

您可以在此博客文章中阅读更多详细信息: Prevent the Sitecore ASP.NET CMS from Interpreting URL Path Prefixes as Language Names

答案 1 :(得分:0)

我认为这里的问题是LanguageResolver管道处理程序期望URL的语言部分对应于完整的语言名称。所以在你的情况下,它会期望www.mydomain.com/ru-RU。创建一个继承自Sitecore.Kernel.dll中的Sitecore的自定义LanguageResolver非常简单。

配置元素
<processor type="Sitecore.Pipelines.HttpRequest.LanguageResolver, Sitecore.Kernel"/>

您需要修补以引用您的新课程。您的新课程将覆盖Process方法。