UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: wolfman от 25 Января 2012, 16:19:26

Название: Календарь событий с макросом %news calendar()%
Отправлено: wolfman от 25 Января 2012, 16:19:26
Возникла необходимость приспособить одну категорию новостей под события и вывести календарь событий.
Для этой задачи в принципе подходит неописанный пока макрос - %news calendar()%

В суппорте юми никаких советов и рекомендаций не дают вообще, типа макрос не описан и т.п.

У макроса  %news calendar()% были замечены небольшие глюки в работе, не получается исправить самостоятельно.

Может быть кто-то сможет помочь решить эти проблемы (бесплатно или платно..)?

1) Если в календаре на определенную дату есть больше 1 новости - ссылка с календаря работает корректно, а если одна новость, то ссылка работает не правильно.

2) Почему-то не работают стрелки переключения месяцев предыдущий/следующий..
Судя по всему этот функционал заложен, но почему не работает - не понял.

3) Еще очень интересно, можно ли каким-то образом ограничить отображение в календаре новостей, только определенной категории, а не всех новостей сайта? Допустим есть 2 категории (раздела) новостей и нужно вывести в календаре новости, только из одной категории, как это сделать?

PS: А может есть вариант создания календаря событий другим способом, более просто и менее глючно? Такой вариант тоже интересен.

Заранее огромное спасибо!
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: Vladimir от 25 Января 2012, 17:40:03
По опыту, это очень хороший календарь. Я им доволен, как слон. Там надо всего чуть-чуть шлифануть напильником. Этот календарь работает:
__www.mariinsky.ru/playbill/playbill/
__nispb.peterlinkweb.ru/
__malafeev16.ru/private/calendar/

Как видите, вполне рабочий макрос.

Этот календарь калька с http://www.cascade.org.uk/software/php/calendar/, несколько модифицированная под идеологию ЮМИ. По указанной ссылке можно посмотреть способы применения.

Вам нужно переписать методы getCalendarLink, getDateLink и, возможно, скомпенсировать getMonthHTML под свои потребности.
Это решит все ваши озвученные вопросы.
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: wolfman от 25 Января 2012, 18:09:43
Да, судя по примерам макрос действительно хороший, не понятно почему разработчики юми на него забили и не поддерживают его.

Первую проблему решил, вторую кажется тоже.

А как вот исключить из этого календаря новости из других лент?
В него ведь попадают все новости, а как отображать в календаре только одну конкретную категорию новостей?

Можете написать подробнее, признаюсь честно - в программировании не силен.

PS: еще интересно, как можно выделить отдельным css стилем текущий день?
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: Vladimir от 25 Января 2012, 21:23:25
Логика там такая. При выводе конкретного дня вызывается метод getDateLink, который сканирует ленту(-ы) новостей на указанную дату. Конечно, это аццкая технология, которая генерирует немерянное количество запросов, но уж так он сделан.
Значит, нужно изменить штатную выборку, которая берет все новости по принадлежности к типу иерархии, дополнить ее неким фильтром. Это может быть фильтр по типу данных, если у вас вторая лента имеет свой тип, или фильтр по иерархии, ведь вы точно знаете id искомой ленты.
Все доступные методы фильтрации  http://api.umi-cms.ru/selections.umiSelection.html
Замечу только, что в addHierarchyFilter можно передавать не только elementId, но и массив id в виде addHierarchyFilter(array($id1,$id2....));
И хорошо бы еще жестко задать выборку именно элементов иерархии командой forceHierarchyTable(true);

Т.о., вам нужно добавить 1-2 строчки
$sel->addHierarchyFilter($elementId, $depth);
$sel->forceHierarchyTable(true);
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: Vladimir от 25 Января 2012, 21:31:30
Ага. второй вопрос не заметил. Календарь штатно выделяет текущий день классом calendarToday, остается лишь задать ему стили в css
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: wolfman от 26 Января 2012, 07:59:58
Как все просто оказалось с выбором ленты, спасибо огромнейшее за подсказки!
И за класс calendarToday - тоже, действительно он был и я там его и искал, только но на пару строк ниже.. Спасибо еще раз!
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: korogan от 03 Апреля 2012, 15:56:23
Скажите пожалуйста а где его фалы лежат?
Где внешний вид настроить?
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: admin от 04 Апреля 2012, 00:29:00
html самого календаря в файле /classes/modules/news/__calendar.php (если память не подводит). Внешний вид либо через css допиливать(что более удобный вариант), либо html менять в самом коде
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: korogan от 04 Апреля 2012, 10:36:07
Поставил макрос %news calendar()% в код шаблона.
Когда я залогинен календарь отображается.
Когда нет, календарь на сайт не выводится.

 
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: admin от 04 Апреля 2012, 10:59:45
надо создать файл /classes/modules/news/permissions.custom.php и в нем прописать следующее
<?php
$permissions = Array(
'view' => Array('calendar'),
);
?>

дело в том, что по умолчанию право работать с этой функцией есть только у админа, для остальных надо её разрешать, что мы только что и сделали создав кастомный файл прав
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: korogan от 01 Июля 2012, 15:19:50
_http://www.iriot.ru
Проблемы с календарем, подскажите пожалуйста

1. Если на число одна новость то при нажатии к примеру 20 число, открывается сама новость, а если более одной новости то вообще не открывается.

2. Как сделать так что бы при нажатии на дату выходил список новостей на конкретную дату.

3. Если 2 пункт сделать можно, где шаблон для вывода полученной информации.

и еще момент, как указать макросу что бы он искал только в нескольких определенных лентах?

Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: admin от 03 Июля 2012, 09:38:21
на основе чего у вас календарь? тут уже несколько модификаций предлагали выше и по-моему еще где-то была тема обсуждения по календарю на данном форуме

По большинству, все что вы хотите это кастомизация, то есть надо лезь в код и править его под ваши задачи
Название: Re:Календарь событий с макросом %news calendar()%
Отправлено: korogan от 03 Июля 2012, 12:40:05
Календарь на основе стандартного макраса %news calendar()% 

Выше пишут:
Как все просто оказалось с выбором ленты, спасибо огромнейшее за подсказки!

Не особо понятно что именно и куда нужно добавить.