Фейковые данные для макетов сайтов
В новой версии modHelpers добавлена возможность формирования случайных данных для наполнения сайта. Для этого я добавил функцию faker(). Она подключает известную библиотеку Faker. Документация достаточно понятная, но основные возможности я всё же покажу.
Примеры
Напомню, что вызывать функции библиотеки modHelpers можно как в php скриптах, так и в чанках, шаблонах, ресурсах при условии, что установлен шаблонизатор Fenom. Некоторые функции не будут работать через Fenom, так как пересекаются по названиям с его модификаторами. Но большинство функций работает.
Вывести случайную картинку через Fenom
// Картинка с размерами 640х480 (по-умолчанию) <img src="{faker('imageUrl')}"> // Можно указать собственные размеры <img src="{faker(['imageUrl'=>[30,30]])}"> // или с использованием функции img {img(faker(['imageUrl'=>[20,30]]),['alt'=>'Случайная картинка', 'title'=>'Случайная картинка'])}
В php скрипте
return img(faker()->imageUrl(100,100));
Т.е. в любом месте в шаблоне можно разместить нужные данные. Например, текст на 700 символов. Или несколько абзацев.
<p>{faker(['text'=>[700]])}</p> <p>{faker(['text'=>[500]])}</p> <p>{faker(['text'=>[1000]])}</p>
А можно сформировать список пользователей (через сниппет).
// Создаем пустую коллекцию, добавляем 10 элементов и в цикле формируем вывод // Можно для вывода использовать чанк ($modx->getChunk) return collection()->elements(10)->each(function($item, $idx, $modx){ return "<div>$idx. " .faker('name') .', '. faker('email') . ', '. faker('phoneNumber') . '</div>'; }); // Вместо collection()->elements(10) можно использовать короткий вариант collection(10)
Получаем вот такой список
1. Матвеева Эмилия Фёдоровна, valerian.aksenov@list.ru, (495) 403-2774 2. Воронов Андрей Дмитриевич, xteterin@filippov.org, (812) 986-74-88 3. Кузьма Андреевич Игнатов, valentin.bykov@narod.ru, 8-800-472-3814 4. Маслова Антонина Владимировна, alena.bogdanov@ya.ru, 8-800-237-6446 5. Сорокин Валерий Алексеевич, semen.fedoseev@mikailov.com, (35222) 35-9277 6. Жанна Андреевна Субботина, ukazakov@davydov.net, (812) 423-67-83 7. Дорофеев Вячеслав Борисович, rada07@samsonov.ru, +7 (922) 001-4983 8. Сава Андреевич Суханов, stepan37@gmail.com, (495) 267-2829 9. Алексей Александрович Марков, ananii47@inbox.ru, +7 (922) 082-1232 10. Маргарита Ивановна Русакова, kulakov.irina@bragin.com, 8-800-947-4810
Таким же способом можно формировать список новостей или любой другой список.
Например, вывод новостей с пагинацией с использованием pdoPage. Создаём сниппет с таким кодом
// Указываем общее количество - 30 записей. // Так как по-умолчанию выводятся 10 записей, то страниц будет 3 pls(['page.total'=>30]); // И выводим на каждой странице 10 новостей return collection(10)->each(function($item, $idx, $modx){ // Для более сложного оформления лучше использовать чанк return "<div>". faker()->date('d.m.Y') . img(faker()->imageUrl(100,100)) . ' '. faker()->text(700) . '</div>'; });
Теперь на странице вызываем pdoPage
[[!pdoPage? &element=`mySnippet` // указываем созданный сниппет ]] [[!+page.nav]]
И получаем 3 страницы новостей. Вообще функций у класса Faker много — текст, имена, адреса, компании, банки, телефоны, email, даты, время и т.д.
Вторым параметром функции faker можно передать локаль. Если её не передать, то она определяется автоматом из настройки cultureKey. Из исходной библиотеки я удалил большинство языков. Оставил только основные локали (de_DE, en_US, it_IT, es_ES, fr_FR, nl_NL, ru_RU, uk_UA). Иначе пакет получался слишком тяжелый.
Остальные доработки
Добавлена функция для генерации тега img. В класс менеджера коллекции добавлены 3 метода
- whereExists
- whereNotExists
- elements
Последний используется для указания количества элементов при создании пустой коллекции — collection()->elements(5)
.
Надеюсь, данные доработки пригодятся при создании макетов сайтов.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()