Как на главной выводить последнюю полную новость. DLE
galina2601 12-08-2014, 16:49 6 844 Уроки по CMS / Уроки по DLEНедавно возникла одна небольшая проблемка. Рассказываю.
Есть сайт, вернее небольшой блог. Как у всех блогов на CMS DLE, на главной странице выводится список всех кратких новостей, добавляемых на сайт.
Но справа у сайта имеется еще две колонки, в которые выводятся краткие новости, но уже с разбивкой по темам. Плюс в отдельном окне выводятся самые читаемые новости. В итоге получается, что на главной странице одновременно может находится несколько анонсов на одну и ту же тему. Что весьма некрасиво.
Поэтому мне поставили задачу, вместо вот этого общего списка новостей на главной странице выводить одну единственную последнюю новость, причем в полном формате.
Вначале мне показалось, что дело выеденного яйца не стоит.
Захожу в Админпанель и открываю пункт Настройка системы.
Прямо в общих настройках скрипта (1 вкладка) нахожу вот такой пункт. (Картинка кликабельна)
Для тех, кто не видит на картинку, дублирую:
Информация выводимая по умолчанию на главной странице:
Выберите тип контента, который будет выводится на главной странице сайта по умолчанию. В случае если вы выбираете показ статической страницы, вам необходимо в админпанели создать статическую страницу с именем: main
Среди пунктов есть три возможности:
1. Создать статическую страницу с именем main.tpl и выводить ее.
2. Выводить новости при помощи тега {content}
3. Выводить новости при помощи тега {custom}
ВНИМАНИЕ! Если у вас старая версия cms DLE, где нет этого пункта, все равно читайте дальше, ниже я объясню, что нужно будет сделать дополнительно.
Анализирую.
Первый пункт - не то. Будет выводиться статическая страница, причем все время одна и та же.
Второй пункт - тег {content} как раз и выводит список коротких новостей, от которых надо избавиться.
Третий пункт - тег {custom} выводит короткие новости из заданных категорий. Но в нем есть отличная возможность - задавать количество выводимых новостей, плюс выбирать свой шаблон для этого вывода.
Значит, выбираю вот этот третий пункт.
Открываю шаблоны сайта (Админпанель - Шаблоны сайта). Нахожу шаблон main.tpl и в нем нахожу строчки вывода информации {info}{content}.
Снизу добавляю тег {custom}
Вот пример.
Мне надо выводить на главной одну новость из всех категорий. Пишу:
{custom category="2,3,4,5,6,7,8" template="shortstory2" aviable="main" from="0" limit="1" cache="no"}
То есть в атрибуте category=" " перечисляю все существующие категории, в атрибуте template="" указываю новый шаблон и в limit="1" ставлю 1 для вывода 1 новости.
Новый шаблон короткой новости shortstory2 создается простым копированием исходного шаблона shortstory.
Если у вас старая версия и вы не выбрали третий пункт, делайте так:
[not-aviable=main]
{info}
{content}
[/not-aviable]
[aviable=main]
{custom category="2,3,4,5,6,7,8" template="shortstory2" aviable="main" from="0" limit="1" cache="no"}
[/aviable]
То есть теги {info}{content} запрещаем к показу на главной, а тег {custom} разрешаем к показу на главной.
Вот, практически и все.
Однако, тег {custom} выводит только короткую новость. Чтобы выводилась полная новость, при ее создании нужно всю ее поместить в верхнее окошко, где обычно размещается анонс.
Теперь на главной все в порядке. Однако при выборе какой-то категории, на страничке новостей этой категории, будут выводиться тоже не анонсы, а полные версии.
Выход - ограничить высоту выводимой новости в описании стилей.
Именно для этого понадобился второй шаблон короткой новости shortstory.
Shortstory2 трогать не надо. А в shortstory нужно найти блок, который отвечает за стили. То есть тот <div> внутри которого размещается тег {short-story}
У меня на сайте это выглядело так:
<div class="main-news-text">
{short-story}
</div>
Нужно изменить имя класса. Скажем так main-news-text2.
Сейчас осталось найти в файле стилей (обычно style.css) описание класса main-news-text, скопировать его, изменить имя на новое и добавить две строчки.
К примеру у меня в сайте получилось такое описание блоков:
.main-news-text {
font-size: 13pt;
text-align: justify;
padding: 10px;
color: #000;
}
.main-news-text2 {
font-size: 13pt;
text-align: justify;
padding: 10px;
color: #000;
height:120px;
overflow: hidden;
}
Вот сейчас точно все.