12.08.2014

Как на главной выводить последнюю полную новость. 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;

}

Вот сейчас точно все.

Можете зайти на сайт, для которого все это делалось. 5 ПУДОВ