Ctrl + ↑ Позднее

УАУ! YouTube сменил логотип!

Красный значок «Play» теперь плотно ассоциируется с YouTube и ребята с Калифорнии могут спокойно выносить его в логотип.
Еще более удивительно как теперь favicon и title главной страницы вырисовывают логотип

2017   YouTube

Как показать следующую и предыдущую новость в битриксе?

Этот довольно часто встречающийся кейс пока никак не реализован в самом битриксе, поэтому пишу этот пост больше для себя, чтобы решение этой проблемы где-то было под рукой.
Обычно такая потребность возникает на странице какого-то конкретного поста, для того чтобы после него вывести следующий и предыдущий за ним пост. Поэтому код ниже написан для комплексного компонента «news», вставлять его надо в файле detail.php. Как всегда не претендую на оптимальность, но мою потребность он легко закрывает)

<?
	$rs=CIBlockElement::GetList(array("active_from" => "desc"), array("ACTIVE"=>"Y", "IBLOCK_ID"=>$arParams["IBLOCK_ID"]), false, array("nElementID"=>$ElementID, "nPageSize"=>1), array("ID", "NAME", "DETAIL_PAGE_URL"));
	while($ar=$rs->GetNext()) $page[] = $ar;
?>
<div>
	<?if (count($page) == 2 && $ElementID == $page[0][ID]):?>
		<div class="_next">
			<a href="<?=$page[1]["DETAIL_PAGE_URL"]?>">
				<?=$page[1]["NAME"]?>
			</a>
		</div>
	<?elseif (count($page) == 3):?>
		<div class="_prev">
			<a href="<?=$page[0]["DETAIL_PAGE_URL"]?>">
				<?=$page[0]["NAME"]?>
			</a>
		</div>
		<div class="ps-_next">
			<a href="<?=$page[2]["DETAIL_PAGE_URL"]?>">
				<?=$page[2]["NAME"]?>
			</a>
		</div>
	<?elseif (count($page) == 2 && $ElementID == $page[1][ID]):?>
		<div class="_prev">
			<a href="<?=$page[0]["DETAIL_PAGE_URL"]?>">
				<?=$page[0]["NAME"]?>
			</a>
		</div>
	<?endif;?>
</div>

Музыка по пятницам. Fedde Le Grand.

Знакомство с этим исполнителем у многих начинается со следующих композиций:

Я не был исключением, добавив к этому стандартному набору еще парочку достойных треков, таких как:

И Уверенно добавил Fedde Le Grand в свой список для прослушивания.

Для того чтобы точно понять что Fedde — это то, что вам нужно для пятницы, послушайте вот этот микс с прошлогодний ультры, это было мощно!

p.s. Для тех кого зацепит советую подписать на Fedde, кажду неделю он выпускает свое шоу «Darklight Sessions», вот прямая ссылка на все выпуски на ютубе: https://www.youtube.com/playlist?list=PL59074498E42FD0A6

Realtimeboard — как инструмент для идеального брейншторминга

Совсем недавно коллеги познакомили меня с новым инструментом командой работы над проектом — RealtimeBoard. Российский проект позволяющий использовать бесконечные виртуальные доски, на которых можно работать с любым визуальным контентом (прикреплять картинки, рисовать схемы и графики, создавать коллажи и пр.). Делать это можно индивидуально или с командой.

Подозреваю что таких инструментов командной работы в интернете довольно большее количество, если кто-то знает еще, действительно качественные и полезные ресурсы, напишите пожалуйста об этом в комментариях.

2017   realtimeboard

Музыка по пятницам. Matisse & Sadko (Да, они из России)

Абсолютно кайфовые братья Пархоменко — Matisse & Sadko.
Можно сказать что с этими ребятами у меня и началось знакомство с house музыкой.
Братья делают действительно качественный саунд. Ну а от осознания того, что эти люди родом из Питера, Еще больше радуешься и гордишься за них! Сами братья известны своим сотрудничеством с крупными электронными мировыми лейблами, среди которых Spinnin’ Records, Warner Musiс, Atlantic Records и других.

В общем послушайте, не пожалеете:

p.s. на своем канале ребята делают симпатичные влоги со своих туров
https://www.youtube.com/channel/UCo3k9omEUs5QuZn63ajcyPg

text-align: justify или как заставить не читать ваш текст

На написание данного поста меня натолкнул один банк Ак Барс Банк , а точнее объявление в одном из его отдельный. Выглядело все это вот так:

Вот такой текст выглядит так, как будто его руками растянули как гармошку. Издалека даже похоже на таблицу для проверки зрения. При его прочтения начинаешь себя чувствовать ребенком, который растянутые слова читает по слогам.

Использование инструмента «выравнивание по ширине» автоматом нарекает ваш текст на читабельность. Используют его офис-менеджеры просто потому, что так внешне блоки с текстом кажутся «ровными», хотя для текста это необязательно.
Использование text-align: justify(выключки текста по ширине) при вёрстке статьи допускается при вдумчивой расстановки переносов и дополнительной «ручной» обработки текста. Во всех остальных случаях про выравнивание по ширине необходимо забыть!!!

catalog.section.list для вывода дерева разделов и элементов

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

  • секция 1
    — элемент1.1
    — элемент1.2
    — элемент1.3
  • секция 2
    — элемент2.1
    — элемент2.2
    — элемент2.3
    ...

Хотя для меня он был бы крайне полезен. В таких случаях для себя я использую следующий подход.
На страницу вытаскиваю стандартный компонент catalog.section.list с default-ом шаблоном.

  1. Вычищаю все лишнее с файлов template.php и result_modifier.php.
  2. В result_modifier делаю с помощью CIBlockElement::GetList запрос на получение всех элементов в данном инфоблоке и структурирую их в массив с ключом равным секции элемента.
  3. Прохожусь циклом по $arResult[«SECTIONS»] и добавляю в каждый элемент массива массив который я получил в шаге 2.
  4. В итоге у меня получается массив с секциями внутри каждого из элементов массива будет подмассив со всеми элементами массива.

Содержание файла result_modifier будет примерно вот таким:

$arSelect = Array("ID", "NAME", "IBLOCK_SECTION_ID");
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_ID"], "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement())
{
	$arFields = $ob->GetFields();
	$arSec[$arFields["IBLOCK_SECTION_ID"]][] = $arFields;
}
foreach ($arResult['SECTIONS'] as $key => $arSection){
	$arResult['SECTIONS'][$key]["ELEMENTS"] = $arSec[$arSection["ID"]];
}

p.s. совершенно неточно что данный подход идеальный и вы можете придумать свой)

Музыка по пятницам. Duke Dumont.

Сегодня абсолютно летний, пятничный, британский диджей и музыкальный продюсер — Адам Димент, более известный под псевдонимом Дюк Дюмо́н.
Выкладываю его божественный микс с Tomorrowland Belgium 2017:

Кому зайдет, вот еще пару его работ, которые мне нравятся:

p.s. Еще один бонус:

Библиотека по мотивам Bootstrap

Для тех кому наскучило юзать классический Bootstrap случайно нашел стартовый набор для вёрстки Shoelace.
Там есть все от кнопок до сетки, все очень похоже на старый добрый бутсрап, но вроде как весит легче.
Хотя пару лет назад открыл для себя «америку» и узнал что можно использовать не весь бутсрап допустим, а только его сетку и так все весить начинает гораздо меньше.
В итоге если кому надоела классика please welcome — shoelace.style.

Мультиязычный сайт на битриксе

За все время разработки мультиязычных сайтов я видел кучу подходов для организации хранения контента для разных языков.
Попробую изложить самый оптимальный способ которым я пользуюсь.

Разберем классическую ситуацию с сайтом на двух языках: английском и русском.
В системе будет два типа контента:

  1. Что лежит в инфоблоках — динамический контент.
  2. Статический. Он будет лежать в языковых файлах.

Ключевым моментом в разработке будет создание двух сайтов, каждый из которых будет работать для одного языка вот тут:
http://ВАШ_САЙТ/bitrix/admin/site_admin.php?lang=ru
Важно в поле язык ввести нужно значение языка:

Теперь для статического контента все просто, нужно грамотно использовать папку «lang» и уметь пользоваться функцией «GetMessage()».
Для динамики использую следующий лайхак, в инфоблоке создаю для контента две секции, каждой из которых проставляю символьный код соответсвующий языкам на сайте. Получается что-то типо вот такого:

На самом же сайте просто вывожу контент из нужный папке в инфоблоке с помощью константы LANGUAGE_ID.

2017   bitrix
Ctrl + ↓ Ранее