Забыли пароль?
Запросите новый здесь.

Автор темы: Chief
ID темы: 1882
Информация:
Тема содержит 8 сообщения, была просмотрена 10884 раз.  Имеются прикрепленные файлы.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Народное творчество
 Распечатать тему
Страница Архив новостей + боковые панели Календарь и Архив
Chief
Итак, обо всём по порядку:

1. Страница «Архив новостей».

rusfusion.ru/forum/attachments/3_what.png

С легкостью выводит новости за любой выбранный день, месяц или год.

news_archive.php?date=2013-05-04
news_archive.php?date=2013-05
news_archive.php?date=2013

За вывод новостей отвечает стандартная функция render_news(), используется стандартный запрос новостей из версии 7.02.07, добавлен лишь дополнительный диапазон выборки по времени.

Возможно некоторым покажется что очень чересчур глуповато выглядит обработчик даты (Скрытый текст: но это на самом деле лишь кубики конструктора, переставляя которые, можно за несколько минут полностью изменить все под каждый конкретный вариант использования).

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

rusfusion.ru/forum/attachments/2_calendar.png

Выкладываю самую простейшую версию календаря, поскольку за несколько лет их было сделано просто бесчисленное количество, в самых различных вариациях. Есть варианты полностью на ajax, варианты с датами в виде year=2013&month=11&day=02 и т.д. Все давно работает на различных городских новостных сайтах, ну и возможно пригодится кому-нибудь ещё.

Панель имеет несколько простых настроек. Найдёте их в небольшом конфиге в файле панели.

==========

В первую очередь, это настройка подсветки выходных, кому как нравится.

$weekend_highlight = 0;

0 = выкл
1 = воскресенья
2 = субботы и воскресенья

==========

Количество новостей в подсказке, для одного дня. Если какой-то день вдруг окажется очень богат на новости, то выведется лишь указанное количество и к списку добавится кнопка наподобие [перейти ко всем новостям за этот день]

$limit = 10;

==========

Длина, до которой обрезается заголовок новости (в подсказке)

$subject_lenght = 40;

==========

Направление всплывающих подсказок. Выбираем в зависимости от того в каком сайдбаре вы разместите календарь.

$side = "left";

Возможные варианты: up, down, left, right

==========

Данная версия календаря не отслеживает дату из строки запроса, поэтому перейдя в архив допустим на месяц назад — календарь остается на текущем месяце. Так сделано по многочисленным пожеланиям хомячков пользователей, которым так почему то удобнее. Но при необходимости легко лечится несколькими строчками кода.

3. Боковая панель архива новостей по месяцам. Выводятся только месяцы содержащие новости. Естественно с учетом уровней доступа.

rusfusion.ru/forum/attachments/1_archive.png

Имеются шесть возможных вариантов вывода, выбираем наиболее подходящий в конфиге.

$news_archive_type = 2;

Возможные варианты (в вариантах 3, 4, 5 и 6 — год является ссылкой на архив года)

1

2013-12
2013-11
2013-10
2013-09
2013-08


2

Декабрь 2013
Ноябрь 2013
Октябрь 2013
Сентябрь 2013
Август 2013


3

2013: 1 2 3 4 5

4

2013
01 02 03 04 05


5

2013
янв, фев, мар, апр, май


6

2013 > Январь, Февраль, Март, Апрель, Май

==========

Установка:

Cоздаем в админке панели из файлов news_calendar_panel.php и news_archives_panel.php, а файл news_archive.php кидаем в корень сайта.

==========

Вообщем дегустируем, пробуем, комментируем. Если серьезных замечаний не будет — добавим в базу аддонов.
Chief присоединено следующее:файл:
news_calendar_and_archive_10.zip [42.19кБ / 482 Загрузки]
Chief присоединено следующее:изображения:
1_archive.png 2_calendar.png 3_what.png

У богатых людей — большая библиотека. У бедных людей — большой телевизор.
x2 x3 x2 x1 x1
 
Zaxap
Зашибенски! Сам хотел попробовать сделать календарь новостей, но...не будуab
Зло не дремлет, а я добрый...
 
jikaka
огромное спасибо, ты еще бы в базу закинулab
 
Web
Chief
ты еще бы в базу закинул

Сначала нужно проверить и оттестить, мало ли чего.. а то я кучу специфических примочек из кода выкинул, мож чего лишнего зацепил. Зато почти построчно откомментировал код, так что даже Zaxap новички разберутся что к чему.

Оформление из календаря тоже удалил, лишь слегка подогнав под Stylo, изначально же сверстан под этот календарик, кому нравится — можно за пару минут подправить CSS.

В данной версии календаря выводятся даты предыдущего и следующих месяцев, но выборка новостей по ним не идет. То есть если есть новость за 31-е число прошлого месяца, это никак визуально не отметится, а кликнув на ячейку и перейдя в архив — вдруг окажется что были новости. Кому не нравится — могут удалить содержимое этих ячеек, оставив лишь <td class='off'></td>

Любители ajax могут совместить это дело с Ajax Calender Panel. Но нужно кой чего подправить, чтобы нормально грузились подсказки (Скрытый текст: это Захару домашнее задание).

Из панели архива можно выкинуть все неиспользуемые стили, ну или разбить на несколько разных панелей. Или же вставить горизонтальный архив в футер, как в некоторых темах для Wordpress.. Всё-таки главная фишка в файле архива, а уж как выводить на него ссылки — вопрос не столь серьёзный, можно хоть вручную в панели прописывать.

З.Ы.
У HobbyMan есть панель архива.. но она выводит новости без учета прав доступа и даты начала-окончания, при этом количество запросов просто зашкаливает.
Chief присоединено следующее:изображение:
4_calend.png

У богатых людей — большая библиотека. У бедных людей — большой телевизор.
 
Zaxap
Почему даже я? о.о
Мне как раз и так понятно, что к чему... Я 2 года назад - да, а сейчас я и так поймуad

---

У меня тут ошибки есть, заметил:


nyandex.ru/news_archive.php
Undefined index: news_in_year Строка: 174

nyandex.ru/news_archive.php
Undefined index: months2 Строка: 30

nyandex.ru/news_archive.php
Undefined index: news_in_year Строка: 145

nyandex.ru/news_archive.php
include(infusions/news_calendar_panel/locale/Russian.php): failed to open stream: No such file or directory Строка: 25
Изменил(а) Zaxap, 03.11.2013 10:50
Зло не дремлет, а я добрый...
x1
 
Chief
include(infusions/news_calendar_panel/locale/Russian.php):


Ну ты ж видимо залил только панель архива, а локаль берется из панели календаря :)

замени в файле news_archive.php

Скачать исходники  Код
if (file_exists(INFUSIONS."news_calendar_panel/locale/".$settings['locale'].".php")) {
   include INFUSIONS."news_calendar_panel/locale/".$settings['locale'].".php";
} else {
   include INFUSIONS."news_calendar_panel/locale/Russian.php";
}





на

Скачать исходники  Код
$locale['months2'] = "&nbsp;|Января|Февраля|Марта|Апреля|Мая|Июня|Июля|Августа|Сентября|Октября|Ноября|Декабря";

$locale['news_in_day'] = "Новости за %s";
$locale['news_in_month'] = "Новости за %s";
$locale['news_in_year'] = "Новости за %s год";

$locale['archive_error'] = "Ошибка";
$locale['archive_error_date'] = "Неверный формат даты";



У богатых людей — большая библиотека. У бедных людей — большой телевизор.
 
Zaxap
да я залил все содержимое...не подключал панели (не выводил их на сайт), может, в этом дело...но заливал я все))
Зло не дремлет, а я добрый...
 
Chief
Проверил на четырех разных установках, с разными версиями движка. Проблем с локалью не обнаружил.
У богатых людей — большая библиотека. У бедных людей — большой телевизор.
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Топ 5 пользователей форума
Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)   SchreiBear SchreiBear (625)