В продолжении статьи Дни рождения пользователей - SharePoint 2013 (Part 1) я сегодня расскажу, как вывести дату
рождения в веб-часть.
1. Выведение дня рождения в веб часть
Для того чтобы отобразились дни рождения, нам нужно изменить
шаблон отображения. Сейчас должен быть шаблон «Элемент Люди» и нам нужно на
основании него создать свой.
Что мы делаем, это подключаем сайт как внешний диск. Для этого открываем "Мой компьютер ", нажимает "Подключить сетевой диск"
выбираем букву диска и указываем адрес сайта http://site/_catalogs/masterpage/
в итоге получается такой внешний диск (при подключении диска возможно потребуется ввести учетные данные)
переходим с каталог с шаблонами Z:\Display Templates\Search (у вас может быть другая буква диска)
находим и копируем к себе на компьютер файл "Item_Person.html"
На локальном компьютере я переименовал файл в "Item_Person_BirthDay.html" и открыл его редактором (использую Notepad ++)
Первое что отредактируем, это название шаблона
<title>Элемент "Люди"</title> на <title>Элемент "Дни рождения"</title>
далее нужно что бы веб-чать запрашивала свойство "BirthDay", для этого добавляем 'BirthDay':'BirthDay' в перечень других запрашиваемых свойств.
добавляем проверку, что свойство "BirthDay" не пусто
var has_birth = !$isNull(ctx.CurrentItem.BirthDay);
далее необходимо добавить блок, который будет отображать день рождения, для этого нужно вставить после блока "NameField" следующий код:
<!--#_
if(has_birth == true) {
_#-->
<div id="BirthDay">
<!--#_
var tempBirthDay = (ctx.CurrentItem.BirthDay).toLocaleDateString()
var encodedBirthDay = tempBirthDay
var displayBirthDay = Srch.U.getSingleHHXMLNodeValue(hhProps, "birthday");
if ($isEmptyString(displayBirthDay)) { displayBirthDay = encodedBirthDay }
_#-->
<div id="BirthDayValue" class="ms-srch-ellipsis" title="_#= encodedBirthDay =#_"> _#= displayBirthDay =#_ </div>
</div>
<!--#_
}
_#-->
должно быть так:
копируем вновь созданный файл "Item_Person_BirthDay.html" в каталог с шаблонами
как вы могли заметить рядом со всеми шаблонами есть файлы js, так вот, после копирования нашего фала"Item_Person_BirthDay.html", SharePoint сам создает файл js.
Открываем страницу с нашей веб-частью в режиме редактирования, переходим в свойства веб-части и меняем шаблон на "Элемент Дни рождения"
Сохраняем страницу и смотрим
уже не плохо, но согласитесь, так оставлять нельзя.
я использовал следующий код
<!--#_
if(has_birth == true) {
_#-->
<div id="BirthDay">
<!--#_
var tempBirthDay = (ctx.CurrentItem.BirthDay).format("dd.MM")
var encodedBirthDay = $htmlEncode('День рождения: ' + (tempBirthDay));
var displayBirthDay = Srch.U.getSingleHHXMLNodeValue(hhProps, "birthday");
if ($isEmptyString(displayBirthDay)) { displayBirthDay = encodedBirthDay }
_#-->
<div id="BirthDayValue" class="ms-srch-ellipsis" title="_#= encodedBirthDay =#_"> _#= displayBirthDay =#_ </div>
</div>
<!--#_
}
_#-->
результат такой
У меня английский SharePoint и при использовании полного месяца (ctx.CurrentItem.BirthDay).format("dd MMMM")
получалось вот так
Может у кого русский ShrePoint может там будет отображать нормально, я не знаю.
в следующей статье я расскажу, как как сортировать результаты и как заменить текст при отсутствии результатов.
ОБНОВЛЕНИЕ:
переработал способ получения даты рождения
<!--#_
if(has_birth == true) {
_#-->
<div id="BirthDay">
<!--#_
var tempMonth = ((ctx.CurrentItem.BirthDay).getMonth()+1)
var tempDay = (ctx.CurrentItem.BirthDay).getDate()
if (tempMonth == "1") { var newMonth = " января" }
else if (tempMonth == "2") { var newMonth = " февраля" }
else if (tempMonth == "3") { var newMonth = " марта" }
else if (tempMonth == "4") { var newMonth = " апреля" }
else if (tempMonth == "5") { var newMonth = " мая" }
else if (tempMonth == "6") { var newMonth = " июня" }
else if (tempMonth == "7") { var newMonth = " июля" }
else if (tempMonth == "8") { var newMonth = " августа" }
else if (tempMonth == "9") { var newMonth = " сентября" }
else if (tempMonth == "10") { var newMonth = " октября" }
else if (tempMonth == "11") { var newMonth = " ноября" }
else if (tempMonth == "12") { var newMonth = " декабря" }
else { var newMonth = "Не известно - " + (tempDay) + (tempMonth) };
var encodedBirthDay = $htmlEncode('День рождения: ' + tempDay + newMonth );
var displayBirthDay = Srch.U.getSingleHHXMLNodeValue(hhProps, "birthday");
if ($isEmptyString(displayBirthDay)) { displayBirthDay = encodedBirthDay }
_#-->
<div id="BirthDayValue" class="ms-srch-ellipsis" title="_#= encodedBirthDay =#_"> _#= displayBirthDay =#_ </div>
</div>
<!--#_
}
_#-->
в итоге:
Дни рождения пользователей - SharePoint 2013 (Part 3)
Ошибка поиска по дате или как менять языковые параметры.
Ошибка поиска по дате или как менять языковые параметры.
Комментариев нет:
Отправить комментарий