Umbraco 사전 항목의 자리 표시자 교체

5708 단어 umbraco
Umbraco'sdictionary feature는 편집자가 버튼, 양식 레이블 및 웹사이트의 다른 위치에 있는 텍스트를 제어할 수 있게 하여 간단한 문장을 변경하기 위해 개발자를 참여시킬 필요가 없도록 하므로 정말 멋집니다.

오늘 우리는 사전 항목에 정의된 일부 텍스트를 좀 더 동적으로 만들어야 하는 시나리오에 부딪쳤습니다. 사전 항목을 템플릿에서 직접 텍스트로 완전히 바꾸는 대신 사전 항목의 값을 대체하는 방법을 살펴보기로 했습니다. 이렇게 하면 편집자가 표시되는 대부분의 텍스트를 계속 제어할 수 있습니다.

쉬운 수정은 가지고 있는 템플릿의 특정 사전 항목에서 반환된 문자열에 대해 일종의 대체를 수행하는 것입니다. 그러나 이는 확장성이 매우 좋지 않습니다. 따라서 두 가지 확장 방법을 사용하여 UmbracoHelperGetDictionaryValue 방법을 더욱 개선하는 방법을 살펴보았습니다.

public static string GetDictionaryValueWithReplacement(this UmbracoHelper umbraco, string key, string pattern, string replacement)
{
    return GetDictionaryValueWithReplacement(umbraco, key, string.Empty, pattern, replacement);
}

public static string GetDictionaryValueWithReplacement(this UmbracoHelper umbraco, string key, string altText, string pattern, string replacement)
{
    return Regex.Replace(umbraco.GetDictionaryValue(key, altText), pattern, replacement);
}


이를 통해 웹 사이트 어디에서나 기능을 쉽게 재사용할 수 있습니다.

이제 키Some.Dictionary.Item와 텍스트This message is super personal for you, %name%. Hope you like it.가 있는 사전 항목이 주어지면 위의 확장 메서드를 예를 들어 다음과 같은 템플릿에서 사용할 수 있습니다.

@Umbraco.GetDictionaryValueWithReplacement("Some.Dictionary.Item", "%name%", Members.GetCurrentMember().Name)


다음이 표시됩니다(적어도 내 브라우저에서는).

This message is super personal for you, Morten Hartvig. Hope you like it.


물론 둘 이상의 자리 표시자와 함께 작업하기 위해 추가 메서드를 만들 수 있습니다. 알다시피 다음과 같습니다.

public static string GetDictionaryValueWithReplacement(this UmbracoHelper umbraco, string key, IDictionary<string, string> replacements)
{
    var value = umbraco.GetDictionaryValue(key);

    foreach (var replacement in replacements)
    {
        value = Regex.Replace(value, replacement.Key, replacement.Value);
    }

    return value;
}


... 하지만 그것은 우리가 필요로 하는 범위를 넘어서므로 여러분이 그것을 가지고 놀게 할게요.

좋은 웹페이지 즐겨찾기