Responsive header images with WordPress

от Гонзо
лиценз CC BY-NC-SA

Големите картинки, заемащи почти целия екран от доста време са на мода, но освен да впечатляват потребителя, те могат и доста да го изнервят докато чака да се заредят. Проблемът става съвсем явен когато потребителя разглежда сайта на екрана на телефона си, особено ако на мястото на което се намира няма 3G покритие. За решаването на този проблем на помощ идват отзивчивите картинки.

Годината е вече 2016та, най-популярните браузъри от доста време поддържат srcset, sizes и picture, така че няма причина да не ги използваме. А с новата версия 4.4 на WordPres това е още по-лесно. Не че с предишните беше трудно, просто трябваше да се инсталира разширението RIGC Responsive Images.

И така, постановката е проста, в горната част на сайта, под главата или като част от нея, искаме да поставим голяма картинка, която да заема цялата ширина на екрана. Освен това сайтът ще е с отзивчив дизайн, все пак е 2016 година вече. До тук нищо сложно, но като погледнем картинката с пропорции 16:9 на екрана на телефона в портретен режим и виждаме, че нещо е е така. Тогава сигурно бихме искали картинката също да е в портретен режим или поне да отива към квадрат, може би да увеличим основния елемент в нея. За да решат този проблем, хората от Responsive Images Comunity Group измислиха елемента picture.

Веднага ви давам пример:

<picture>
   <source media="(min-width: 45em)" srcset="large.jpg">
   <source media="(min-width: 32em)" srcset="med.jpg">
   <img src="small.jpg" alt="">
 </picture>

Браузърите, които поддържат picture, ще заредят първия елемент source, в чийто атрибут media е посочена медийна заявка, отговаряща на устройството на потребителя. Браузърите, които не поддържат picture просто ще покажат елемента img.

За да направим заглавната картинка в WordPress да използва елемента picture първо трябва да накараме WordPres да създава варианти на картинката с необходимите ни размери:

function image_sizes() {
   add_image_size( 'image-big', 1920, 1080, true );
   add_image_size( 'image-medium', 1024, 768, true );
   add_image_size( 'image-small', 480, 480, true );
 }
 add_action( 'after_setup_theme', 'image_sizes' );

След това идва интересната част. Тук предполагам, че темата вече поддържа custom-header. В предишните версии на WordPress заглавната картинка се показва обикновено с функцията header_image(). Но в най-добрия случай с тази функция ще получите img елемент с атрибути srcset и sizes, което не е това, което искаме. За да можем да използваме дефинираните от нас размери на картинки първо трябва да вземем ID на картинката и след това да използваме wp_get_attachment_image_src() за искания размер. Ако търсите начин да вземете ID на заглавната картинка в codex-а, няма да намерите (поне аз не успях), но един преглед на кода на WordPress веднага ще ви посочи get_custom_header() като решение на проблема. Накрая получаваме това:

<?php
 $header = get_custom_header();
 ?>
 <picture>
 <?php
 $src = wp_get_attachment_image_src()( $header->ID, 'image-big' )[0];
 ?>
 <source media="(min-width: 1024px)" src="<?php echo esc_attr($srcset); ?> />
 <?php
 $src = wp_get_attachment_image_src()( $header->ID, 'image-medium' )[0];
 ?>
 <source media="(min-width: 480px)" src="<?php echo esc_attr($srcset); ?> />
 <?php
 $src = wp_get_attachment_image_src()( $header->ID, 'image-small' )[0];
 ?>
 <img src="<?php echo esc_attr($src); ?>" />
 </picture>

Това е добре, но има един недостатък – една и съща картинка се сервира при доста голям диапазон от размери на екрана и съответно в доста случаи ще натовари клиента с излишен трафик и браузъра с по-тежко преоразмеряване на голяма картинка. Решението е на всеки source елемент вместо една картинка със src да подадем набор от размери чрез srcset. Тук на помощ идва функцията wp_get_attachment_image_srcset, която е нова в WordPress 4.4, в по-ранни версии може да се използва чрез разширението RICG Responsive Images. Тя връща srcset атрибут със всички дефинирани размери картинки със същата пропорция като подадения като втори параметър размер.

<?php
 $header = get_custom_header();
 ?>
 <picture>
 <?php
 $srcset_value = wp_get_attachment_image_srcset( $attachment_id, 'header-image-small' );
 $srcset = $srcset_value ? ' srcset="' . esc_attr( $srcset_value ) . '"' : '';
 ?>
 <source media="(min-width: 1024px)" <?php echo $srcset; ?> />
 <?php
 $srcset_value = wp_get_attachment_image_srcset( $attachment_id, 'wide-big' );
 $srcset = $srcset_value ? ' srcset="' . esc_attr( $srcset_value ) . '"' : '';
 ?>
 <source media="(min-width: 600px)" <?php echo $srcset; ?> />
 <?php
 $srcset_value = wp_get_attachment_image_srcset( $attachment_id, 'square-medium' );
 $srcset = $srcset_value ? ' srcset="' . esc_attr( $srcset_value ) . '"' : '';
 ?>
 <source <?php echo $srcset; ?> />
 <img src="<?php echo esc_attr(wp_get_attachment_image_src($attachment_id, 'header-image-base', false)[0]); ?>" />
 </picture>

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

Малко полезни разширения

Вече споменах RIGC Responsive Images, официалното разширение добавящо поддръжка за отзивчиви картинки в WordPress. От версия 4.4 вече е част от самия WordPress, но можете да го използвате, за да активирате лесно picturefill или заради добавянето на подобрена компресия на картинките.

Докато работите върху сайта и се опитвате да прецените какви точно пропорции на картинките ще подхождат на различните екрани и какви размери картинки да генерирате, неизбежно ще ви се наложи да променяте набора от размери, които искате WordPress да генерира. Тогава на помощ идват разни разширения, които регенерират различните размери картинки. След няколко проби аз се спрях на Image Regenerate & Select Crop.

Когато започнете да качвате картинки бързо ще забележите, че автоматичното оразмеряване не винаги работи добре и често ще имате нужда ръчно да отрежете картинка така, че да се вижда най-добре дадена част от нея. Тук на помощ идва Manual Image Crop – това разширение ви позволява ръчно да изберете как да се отреже всеки регистриран размер на картинката.

Започва строителството на пасивна къща в кв. Коматево на гр. Пловдив

от Архитектурно студио Архе
лиценз CC BY-NC-ND
Завършихме работния проект за сградата и сме готови за строителство. Строителното разрешение е в сила. Работните проекти и спецификациите на АРХЕ са изключително подробни и изчерпателни, което е важно условие за безкомпромисно строителство и контрол на качеството на ...

Омачът и сиренето от Черничево влязоха в световния каталог Ark of Taste

от Георги Станков
лиценз CC BY-NC-ND
От 2007г. досега този блог и Фейсбук групата постигнаха много. Преди всичко - изградиха истинска общност от черничевци наблизо и далеч. На второ място, направиха Черничево по-известно, отколкото е било преди. На трето място - станаха платформа за споделяне на богата и разнообразна информация, свободно достъпна за всеки, който се интересува. И резултатите говорят сами: един обикновен краеведски

Направихме първата рекламна листовка за Черничево

от Георги Станков
лиценз CC BY-NC-ND
2015-а ще остане в историята с поредната малка победа на общността ни - направихме първата рекламна листовка за Черничево. Раздадохме няколкостотин екземпляра на събора на 22-и август и хората много им се зарадваха. Ако Ви хареса, си я разпечатайте. Сгъва се на три. Страница 1: Справедливо е да споменем името на талантливия дизайнер, който изработи предпечата - Елица Христова, която

Пасивната къща работи за собственика си

от Архитектурно студио Архе
лиценз CC BY-NC-ND
В България стандартът пасивна къща трудно се установява. Вие сте пионер в тази област, защо се ориентирахте точно към този вид архитектура? Беше предизвикателство да се захвана с нещо, което в началото беше ново и непознато за мен и изглеждаше странно и плашещо. Аз бях ...

Разрешение за строеж получи сградата на Александра Аудио. Започваме организация на строителството

от Архитектурно студио Архе
лиценз CC BY-NC-ND
На 23.01.2015 беше получено разрешението за строеж на аднимистративната сграда за звукозаписни студия на Александра Аудио ЕООД. С това официално беше даден старта на подготовката за строителството на обекта. В едно с проектирането във фаза "Работен проект", Студио АРХЕ ...

Вино, бавно хранене, зашеметяващи гледки и енергийна независимост

от Архитектурно студио Архе
лиценз CC BY-NC-ND
Студио АРХЕ проектира дървена средиземноморска архитектура в най-слънчевия район на България. Съседното до гр. Мелник село Лозеница е разположено сред живописни хълмове,  пясъчни пирамиди и обширни лозя. Там ще бъде построен най-новия обект на студиото. В него ще ...

Чрез мързел към прогрес – SalixOS

от Lindeas
лиценз CC BY

Без да се спирам на по-подробно ревю, ще споделя накратко някои наблюдения от търсенето ми на “непосилната лекота” на дистрибуциите. След една серия от безуспешни тестове на често обозначаваните за най-леки дистрота – Puppy, Antix, Bodhi, LXLE, *buntu-та и поне още половин дузина в този списък, в търсене на нещо наистина “light” – попаднах на “върбата”, т.е. на SalixOS. Това се оказа базирана на Slackware дистрибуция, използваща дори неговата номерация на версиите (към момента 14.1), създадена от бивши разработчици на Zenwalk. За тези, които се изкушават от време на време да прелистват DistroWatch е ясно, че напоследък настанаха тежки времена за дистрото на французина Жан-Филип Гилмен, като проектът напредва с доста бавен ход. За сметка на това Salix набира сякаш по-голяма видимост, а зад всичко това стои основно интернационалният екип на Йоргос Влахавас, Сирил Понтвю, Пиерик Ле Брюн и Торстен Мюлфелдер.

Salixos-logo
Вероятно ще се запитате на какво може да се дължи този прогрес. Преди всичко на “ленността” е отговорът. Такъв е и девизът на дистрото – “Линукс дистрибуция за мързеливи Слакъри”! Ако не сте “die hard” фен на чистотата, Salix може да ви се понрави. Това, което най-вече очарова е изключително удобната комбинация от “ползваемост” и “лекота”. За доста стария хардуер (Dell Optiplex GX150), на който “лепнах” Salix, това беше търсеното и желано предимство .

Макар, че стандартният десктоп на дистрибуцията е XFCE, аз изпробвах нещо още “по-така”, а именно Openbox изданието. На сайта на дистрото се предлагат 32 и 64-битови версии на операционната система, а iso-файлът се побира на едно CD (625 Мб), нещо много удобно при условие, че старата машина няма dvd-плеър, и не може да буутва usb-флашки. Инсталаторът е в текстови режим, но целият процес е доста лесен дори за новак. Без излишно “ровене” в конфигурационни файлове системата се инсталира много бързо, като предлага 3 режима на инсталация – пълен, базов и основен.

salix-installПрепоръчителният режим, разбира се, е пълният, а с него хората от Salix са решили да олекотят максимално нещата след инсталацията. Те използват fbpanel в комбинация с SpaceFM за файлов мениджър. Макар с леко орязани възможности, панелът предлага всичко нужно, като отделните му модули се добавят, премахват и настройват чрез конфигурационния му файл, в домашната директория. SpaceFM обаче ми се стори доста неудобен за моя вкус и предпочетох да го заменя с PCManFM, който е сякаш малко по-подреден.

Инсталирането на пакети в Salix е лесно, особено за свикнaлите с Debian. Използваt се slapt-get и slapt-src, заедно с техните графични интерфейси Gslapt и Sourcery, чрез които се избягва умело “адът на зависимите пакети”. При инсталация по подразбиране има почти всичко нужно за основно ползване на дистрото, а разработчиците са вкарали и някои техни инструменти за допълнителни настройки – напр. за настройка на аудио картата и др. под. (вж. тук), достъпни и за “чистия” Slack. По техни данни те допринасят и значителна част код и поправки на грешки за Slackware.

tools-sourcery-main

Ако пък в Salix ви липсва някоя програма, в основното хранилище има добър набор от софтуер, като трябва да се има предвид, че дистрото следва KISS-принципа. В добавка, ако и в основното хранилище липсва нещо, под ръка е Sourcery, чрез който бързо може да се инсталира каквото ви е нужно от SlackBuild хранилищата.

Уикито и форумът на Salix са основният източник на информация за разрешаване на проблеми с ползването. Макар и да не са от ранга на Ubuntu форумите или уикито на Gentoo, от общността може да се получи бърз отговор на възникналите въпроси.

За пуристите от Църквата на субгения, които не харесат “Върбата”, но са я инсталирали вече, утешение може да бъде това, че Salix може изцяло да се обърне в чист Slack, в мрежата има описателни инструкции как бързо би могло да стане това. Като цяло това е една дистрибуция парадоксално за днешното време съчетаваща ползваемост и лекота. Разбира се, всичко е въпрос на вкус, както казват някои – така, че винаги “зад ъгъла” чака нещо по-добро…

Share

Обхождане на старините край Черничево на 20.12.2014г.: долмените в Хамбардере

от Георги Станков
лиценз CC BY-NC-ND
На 20 декември направих дълъг преход из черничевското землище, за да изследвам две местности. В резултат имаме първото заснемане на средновековните руини в местността "Стайковица" и също така знаем актуалното състояние на долмените в местността "Хамбардере" край Черничево. За долмените от Хамбардере писах преди години, така че тук споделям само видеото.  Най-известният им изследовател

Ще стане ли Черничево селото с графити на шевици?

от Георги Станков
лиценз CC BY-NC-ND
Минаха две години с много малко публикации. За верните читатели и почитатели на блога навярно ще бъде успокояващо да знаят, че през това време бях зает с активна теренна работа. Резултатите от част от нея вече започнах да публикувам - поредицата "Черничевски хроники", обхожданията на старини като Дунското гробе, организирането на първото масово посещение на Ликууто врисче на 6 май тази година,