Umbraco 4.7 - узлы, созданные на корневом уровне сайта, сохраняются в таблице umbracoNode с level = 2 - PullRequest
0 голосов
/ 06 декабря 2011

Вот упрощенная версия моего дерева контента.

- Content
    - Articles
        - Article 1
    - About Us

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

- Content
    - Articles
        - Article 1
        - Article 2
    - About Us
    - Terms

И Article 2, и Terms сохраняются в таблице umbracoNode с "level", установленным на 2. Это не правильный уровень для Terms;его уровень должен быть 1.

Это приводит к сбою публикации, в частности по адресу umbraco.cms.presentation.editContent.Publish:

if (_document.Level == 1 
    || new cms.businesslogic.web.Document(_document.Parent.Id).Published)
{
    // Code that publishes the node
}

То, что происходит, так как уровень НЕ равен 1оценивает 2-ю часть условного.После создания экземпляра Document с идентификатором родителя текущего узла (-1) он проверяет наличие записей cmsContentVersion с этим идентификатором.Тем не менее, это корневой узел, и ничего не существует в cmsContentVersion для корня, поэтому он идет kaboom.

Несколько вещей, которые могут или не могут представлять интерес:

  • Мыв процессе обновления с v3.6 -> v4.7
  • Правый щелчок по узлу и публикация работ
  • Ссылка на документ после щелчка правой кнопкой мыши и публикации - просто #, что тоже неверно.Я не уверен, если это связано или нет.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 декабря 2011

Исправление на самом деле оказалось довольно простым, надеюсь, это избавит кого-то от головной боли.

Мне просто пришлось обновить level до 0 для корневого примечания (это было 1 до его обновления).

UPDATE umbracoNode 
SET [level] = 0 
WHERE id = -1

Я предполагаю, что это был какой-то артефакт версии 3, который по какой-то причине ранее не рассматривался при обновлении.

...