• Блог
  • Фейковые данные для макетов

В новой версии 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).

Надеюсь, данные доработки пригодятся при создании макетов сайтов.

0   2490

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.