Episerver CMS 10 - PullRequest
       13

Episerver CMS 10

0 голосов
/ 20 ноября 2018

В настоящее время я использую Episerver CMS 10. У меня есть 2 типа страницы следующим образом: 1. Стандартный тип страницы.2. Наследовать стандартный тип страницы

В типе «Стандартная страница» у меня есть свойство Keyword, которое имеет значения в содержимом episerver.Я создал ключевое слово свойства в Inherit standard Page и унаследовал значения стандартной страницы, как показано ниже:

[Display (GroupName = GroupNames.MetaData, Order = 1)]

    [Editable(false, AllowInitialValue = true)]
    public virtual string Keyword
    {
        get
        {
            if (myMaster != null)
            {
             return myMaster.GetPropertyValue(p =>p.MetaData.Keywords);

            }


            return string.Empty;
        }
        set
        {
            this.SetPropertyValue(p => p.Keyword, value);
        }
    }

, нотак как значения ключевого слова не были видны в Inheritstandardpagetype, я создал модуль IInitialization

   public void Initialize(InitializationEngine context)
    {
        //Add initialization logic, this method is called once after CMS has been initialized
        var contentEvents = ServiceLocator.Current.GetInstance<IContentEvents>();
        contentEvents.CreatedContent += InheritedMetadataValues;
        //InheritEvents.UpdatedInheritor += InheritEvents_UpdatedInheritor;
    }

    private void InheritedMetadataValues(object sender, ContentEventArgs e)
    {
        PopulateMetadata(e);
    }
    private void PopulateMetadata(ContentEventArgs e)
    {
        var inheritedPage = e.Content as InheritStandardPageType;
        if (inheritedPage != null)
        {
            var srvcLoc = ServiceLocator.Current.GetInstance<IContentRepository>();
            var contentReference = new ContentReference();
            contentReference = inheritedPage.MyMasterReference;

            //var contentClone = inheritedPage.CreateWritableClone() as InheritStandardPageType;
            MasterStandardPageType myMaster = ServiceLocator.Current.GetInstance<IContentRepository>().Get<MasterStandardPageType>(inheritedPage.MyMasterReference);
            //inheritedPage.Keyword = myMaster.MetaData.Keywords;

            //MasterStandardPageType myMaster => contentReference != null ? ServiceLocator.Current.GetInstance<IContentRepository>().Get<MasterStandardPageType>(MyMasterReference) : null;
            inheritedPage.Keyword = myMaster.MetaData.Keywords;
            inheritedPage.Desciption = myMaster.MetaData.Description;
            inheritedPage.Author = myMaster.MetaData.Author;
            /*ontentClone.GlobalMetaData = myMaster.MetaData;*/
            srvcLoc.Save(inheritedPage, SaveAction.ForceCurrentVersion, EPiServer.Security.AccessLevel.NoAccess);
            }
        }


    public void Uninitialize(InitializationEngine context)
    {
        var contentEvents = ServiceLocator.Current.GetInstance<IContentEvents>();
        contentEvents.SavedContent -= InheritedMetadataValues;
    }

Но проблема, с которой я сталкиваюсь, заключается в том, что мы добавляем какое-либо ключевое слово на стандартной странице и публикуем его снова, тогда только дочерняя страницаобновляется, а также обновляется статус дочерней страницы.Я хотел, чтобы дочерняя страница обновлялась автоматически, если ключевое слово главной страницы имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...