dotCMS - Создание пользовательской страницы (тип содержимого страницы)
РЕДАКТИРОВАТЬ:
Моя цель:
- Создайте шаблон страницы новостей с верхним и нижним колонтитулами и телом.
- Страница новостей нуждается в форме для редактора контента, в которую можно добавить контент с двумя полями: заголовок и история.
- Каждая страница новостей требует своих собственных мета-данных SEO (ключевые слова / заголовок описания).
- Эти истории должны быть легко найдены в CMS для будущего редактирования и т. Д. И т. Д.
Каков наилучший способ сделать это?
В настоящее время у меня есть тип содержимого "Страница", в котором есть все поля формы, которые мне требуются.
Чтобы создать новую новость, я сейчас делаю:
- Перейти в браузер сайта
- Щелкните правой кнопкой мыши [myFolder]
- Нажмите "Новый" -> Страница
- Выберите мою страницу из поля выбора (это был тип контента страницы, который я создал ранее)
- Теперь я вижу свою форму, заполняю ее, сохраняю / публикую и вижу ее, но с учетом проблем, о которых я говорил ранее.
Я почти уверен, что поступаю неправильно, но как правильно?
-------------
Я изо всех сил пытаюсь создать очень простую страницу в dotCMS.
Вот что я хочу сделать:
- Создайте форму для редактора контента, чтобы иметь возможность добавлять контент на страницу(Content-Type: Page называется myForm).
- Форма содержит все поля по умолчанию (SEO-материал и т. Д., Который поставляется с типом содержимого страницы)+ два дополнительных текстовых поля, которые я создал (fieldA и fieldB)DONE
- Создайте контейнер и добавьте имена переменных скорости.СДЕЛАННЫЙ
- Окружите имена переменных скорости в некотором HTML.
<div>$fieldA</div>
а также<div>$fieldB</div>
СДЕЛАННЫЙ - Создайте новую тему с файлом template.vtl.
Так что все готово. Теперь я иду и создаю новую страницу в папке через браузер сайта, выбирая мою новую "страницу" под названием "myForm" из выпадающего меню. Я вижу свою форму и ввожу свои данные, сохраняю и публикую.
Результат. Я не вижу никаких моих данных. Просто пустая страница.
Поэтому я проверяю документы и вижу, что я пропустил.
Есть страница, объясняющая, что мне нужно добавить некоторую скорость в мой template.vtl, которая выглядит следующим образом:
#if($dotPageContent && $dotPageContent.fieldA)
<div class="row">
#dotedit($!dotPageContent.inode,$!dotPageContent.fieldA)
</div>
#end
#if($dotPageContent && $dotPageContent.fieldB)
<div class="row">
#dotedit($!dotPageContent.inode,$!dotPageContent.fieldB)
</div>
#end
( ссылка на страницу помощи dotCMS)
Хорошо, теперь, когда я снова проверяю свою страницу, данные действительно отображаются. Но есть проблема. HTML-код в моем контейнере не анализируется.
Например <div>$fieldA</div>
а также <div>$fieldB</div>
не имеет <div></div>
теги.
Так что теперь я волнуюсь, что это не способ создания страниц.
Причина, по которой я выбрал тип контента "Страница", заключалась в том, что он готов к использованию "Расширенного свойства" для страницы, такой как метаданные SEO (что, кстати, все работало нормально).
Может кто-то указать, что я, возможно, пропустил или, возможно, лучший способ сделать это?
Заранее спасибо.
2 ответа
Если бы вы могли разместить свой контейнер и код шаблона где-нибудь и добавить сюда ссылки, я бы наверняка помог вам решить проблему, но я думаю, что может произойти то, что вы путаете Тип содержимого страницы с определенными Контейнером типами содержимого.
Вот краткое объяснение, которое может помочь концептуальной дифференциации: http://screencast.com/t/PlEXKU9glGd
В видео я объясняю, что типы содержимого страницы предназначены только для свойств страницы, а не для добавления содержимого. Как вы хотите, чтобы на многих ваших страницах была другая ссылка на Facebook или какая-то другая особая собственность, привязанная к каждой странице. Чтобы разместить контент в контейнере, вы используете вторичный тип контента "Контент" и добавляете этот тип контента в поле кода контейнера. Когда страница загружается, выполнение происходит в таком порядке, устанавливаются загрузки содержимого страницы, свойства страницы и метаданные, страница вызывает шаблон, который обеспечивает макет, шаблон вызывает контейнеры, контейнеры имеют код, который форматирует содержимое, и затем контент выполняется в том порядке, в котором он размещен в контейнере издателем контента. Тип содержимого страницы не предназначен для предоставления какой-либо информации, которую фактически видит пользователь переднего плана, кроме заголовка страницы, URL-адреса страницы, а также свойств и метаданных, которые устанавливаются "без вывода сообщений" в фоновом html страницы.
Вам также может быть полезно присоединиться к форуму сообщества dotCMS: http://dotcms.com/forum/
надеюсь, это поможет
В дополнение к моему другому посту, я сделал тест с тем, что вы пытались сделать, в расширенном тестовом шаблоне, и файл template.vtl отображает содержимое страницы, если вы на самом деле редактируете свои свойства страницы и задаете, в этом случае поле A:
<!DOCTYPE html>
<html lang="en">
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
#set($dotTheme = $contents.getEmptyMap())
#set($blah1 = $dotTheme.put("path", "/application/themes/one-pager/"))
#set($dotThemeLayout = $contents.getEmptyMap())
#set($blah2 = $dotThemeLayout.put("title", "Bear Mountain"))
<head>
#if($dotPageContent && $dotPageContent.fieldA)
<div class="row">
#dotedit($!dotPageContent.inode,$!dotPageContent.fieldA)
</div>
#end
##dotParse("${dotTheme.path}html_head.vtl")
</head>
#set($utilClass = $pageTitle.toLowerCase().replace(' ', '-'))
<body data-spy="scroll" data-target=".top-nav" data-offset="100">
<div class="body-wrapper">
#dotParse("${dotTheme.path}header.vtl")
<div class="content-wrapper" id="hotel">
<div class="container">
<div class="row">
<div class="col-sm-12">
<h2>The Lodge</h2>
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-12">
<div class="wow fadeInLeft" data-wow-delay=".8s">
## Container: Default 2 (Page Content)
## This is autogenerated code that cannot be changed
#parseContainer('5eb11b21-6b13-4fb8-a823-1de20bba56c0')
</div>
</div>
<div class="col-md-6 col-sm-12">
<div class="wow fadeInRight" data-wow-delay="1.2s">
## Container: Default 3 (Page Content)
## This is autogenerated code that cannot be changed
#parseContainer('f1ba7688-453c-4c0d-a214-e5ac802b8034')
</div>
</div>
</div>
</div>
</div>
<div class="image-wrapper bg-image-1 hidden-xs" data-stellar-background-ratio="0.5"></div>
<div class="content-wrapper">
<div class="container">
<div class="row">
<div class="col-sm-12">
## Container: Default 1 (Page Content)
## This is autogenerated code that cannot be changed
#parseContainer('56bd55ea-b04b-480d-9e37-5d6f9217dcc3')
</div>
</div>
</div>
</div>
<div class="image-wrapper bg-image-2 hidden-xs" data-stellar-background-ratio="0.7"></div>
<div class="content-wrapper">
<div class="container">
<div class="row">
<div class="col-sm-12">
## Container: Default 4 (Page Content)
## This is autogenerated code that cannot be changed
#parseContainer('a6e9652b-8183-4c09-b775-26196b09a300')
</div>
</div>
</div>
</div>
</div>
#dotParse("${dotTheme.path}footer.vtl")
<a href="http://www.dotcms.com" style="display:block;position:fixed;bottom:-175px;">Powered by Dotcms - The Leading Open Source Java Content Management System</a>
</body>
</html>
Это было проверено на demo.dotcms.com: U:admin@dotcms.com / P: admin