Идеальный мир дизайнеров
Часто кажется, что дизайнеры живут в совершенно другом мире. В их мире нет ни ошибок, ни непредвиденных ситуаций, в списках всегда есть элементы, а поиск всегда что-то да находит. Если ваши дизайнеры такие - покажите им следующие скриншоты - верните их к реальности.
Поддержите меня и подпишитесь на мой телеграмм канал: t.me/cherkashindev
Newple - российская социальная сеть нового поколения
Социальная сеть нового поколения
Newple предложит готовые сервисы, собственную платёжную систему, рекламную сеть, инвестиционную площадку, краудфандинг, онлайн-кинотеатр и целый ряд других инструментов.
Разработчики российской социальной сети заявляют, что она должна заменить Facebook (запрещена в России, принадлежит Meta, которая признана экстремистской организацией) и LinkedIn на отечественном рынке социальных медиа. Пока что подробностей о Newple нет, однако разработчики соцсети утверждают, что основным принципом социального взаимодействия является открытость.
В современном мире это — самый короткий и эффективный путь для достижения результатов и для обычных пользователей и для крупного бизнеса. Базовый коммуникативный набор, обычный для развитых социальных сетей, в Newple уже присутствует, и теперь очередь за расширением существующих возможностей и продвинутыми инструментами, многие из которых для рынка социальных медиа будут уникальны. Newple — это открытая платформа с масштабной внутренней экосистемой, включающей в себя различные, ориентированные на пользовательское управление, готовые сервисы, собственную платежную систему, рекламную сеть, инвестиционную площадку, краудфандинг, онлайн-кинотеатр и целый ряд других инструментов, интересных и необходимых каждому, кто пользуется интернетом.
— Newple
В данный момент все желающие могут опробовать Веб-версию и скачать Мобильное приложение для Android. Приложение для iOS будет доступно во втором квартале 2022-го.
Рендер страницы через JavaScript
Задача
Есть API, который в ответ на запрос отдает json со списком фреймворков и их описанием. Необходимо на его основе отрендерить карточки.
Прототип
Алгоритм
- Получить список;
- Обработать список;
- Отрендерить в HTML.
1. Получить список
Для данной статьи я подготовил тестовые данные, которые можно получить по адресу:
https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...
Чтобы сделать HTTP запрос — используйте метод fetch:
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
2. Обработать список
Вот как выглядит json, который мы получаем:
{
"success": true,
"list": [
{
"title": "React",
"text": "React is an open-source...
Напишем функцию buildHTML, которая на вход будет принимать JSON, а отдавать строку, которую мы в будущем используем как HTML:
// HTTP запрос
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
// переводим ответ в json
.then(response => response.json())
// конвертируем в html
.then(buildHTML)
Определение функции:
const buildHTML = ({ list }) =>
list.map(({ title, text }) => (`
<div>
<h2>${title}</h2>
<p>${text}</p>
</div>
`)).join("");
3. Отрендерить в HTML
fetch("https://private-531a0-vadimfilimonovblog.apiary-mock.com/fra...")
.then(response => response.json())
.then(buildHTML)
.then(render); // полученный результат передает в функцию render
В файле HTML создадим пустой контейнер, куда будем вставлять карточки:
<div class="container"></div>
https://developer.mozilla.org/en-US/docs/Web/API/Element/inn... функции render сводится лишь к использованию свойства innerHTML:
const render = (html) => {
const container = document.querySelector('.container');
container.innerHTML = html;
};
Результат
Полную версию кода смотрите на codepen.
Подключение шрифтов на сайт
Пример #1 — Подключаем шрифт PT Sans через Google Fonts
- Заходим на сайт fonts.google.com и находим шрифт PT Sans;
- Нажимаем кнопку Select this font;
- Нажимаем на Family Selected;
- Во вкладке Customized выбираем начертания и Cyrillic;
- Копируем строку с подключением шрифта во вкладках EMBED → @IMPORT.
Вставляем строку с подключением в начало CSS файла:
@IMPORT url('https://fonts.googleapis.com/css?family=PT%20Sans%3A400i%2C7...);
Копируем свойство font-family:
Пример #2 — Подключаем шрифты PT Sans и PT Serif в Drupal 8 через файл темы .libraries.yml
Аналогично примеру #1 получаем URL подключения шрифтов из строки @import:
fonts.googleapis.com/css?family=PT%20Sans%3A400%2C400...
В файле темы .libraries.yml подключаем шрифты по образцу:
fonts.googleapis.com/css?family=PT%20Sans%3A400%2C400...,
Сохраняем и сбрасываем кэш.
Пример #3 — Подключаем шрифт PT Sans локально
- Заходим на сайт Google Webfonts Helper;
- В поиске находим шрифт PT Sans;
- Выбираем начертания и Cyrillic;
- Пролистываем вниз и пишем где будут находится шрифты относительно .css файла;
- Копируем CSS код и вставляем его в .css файл;
- Скачиваем архив с шрифтами, разархивируем его и размещаем шрифты в нужном месте.
Вот так выглядит скопированный CSS:
/* pt-sans-regular - cyrillic_latin */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 400;
src: url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-regular.eot'); /* IE9 Compat Modes */
src: local('PT Sans'), local('PTSans-Regular'),
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-regular.woff') format('woff'), /* Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-regular.svg#PTSans') format('svg'); /* Legacy iOS */
}
/* pt-sans-italic - cyrillic_latin */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 400;
src: url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-italic.eot'); /* IE9 Compat Modes */
src: local('PT Sans Italic'), local('PTSans-Italic'),
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-italic.woff') format('woff'), /* Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-italic.svg#PTSans') format('svg'); /* Legacy iOS */
}
/* pt-sans-700 - cyrillic_latin */
@font-face {
font-family: 'PT Sans';
font-style: normal;
font-weight: 700;
src: url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700.eot'); /* IE9 Compat Modes */
src: local('PT Sans Bold'), local('PTSans-Bold'),
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700.woff') format('woff'), /* Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700.svg#PTSans') format('svg'); /* Legacy iOS */
}
/* pt-sans-700italic - cyrillic_latin */
@font-face {
font-family: 'PT Sans';
font-style: italic;
font-weight: 700;
src: url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700italic.eot'); /* IE9 Compat Modes */
src: local('PT Sans Bold Italic'), local('PTSans-BoldItalic'),
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700italic.woff') format('woff'), /* Modern Browsers */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('../fonts/pt-sans/pt-sans-v9-cyrillic_latin-700italic.svg#PTSans') format('svg'); /* Legacy iOS */
}
А так список файлов с шрифтами:
Команда ls в терминале
Если все сделано правильно, то шрифты будут подключены локально.
Конструктор карт Яндекса
Одним из самых простых способов создать и разместить карту у себя на карте — это воспользоваться конструктором карт яндекса.
Переходим по ссылке:
https://yandex.ru/map-constructor/
Пишем название и описание. Ставим метку на карте или ищем место по адресу.
Как только все будет готово — жмем кнопку «Сохранить и продолжить».
Настраиваем параметры отображения карты. Например, растянем ее по ширине и поменяем масштаб.
Получаем код карты нажатием на одноименную кнопку.
Копируем код из поля JavaScript и вставляем к себе на сайт. Вот и все.
Если вам нужно сделать так, чтобы карта на сайте не масштабировалась при прокрутки колесика — замените в скрипте scroll=true на scroll=false
Опросник в Drupal 8
Устанавливаем модуль Poll:
composer require drupal/poll ; drush en poll -y
Переходим на страницу «Содержимое» → «Опросы»:
/admin/content/poll
Жмем кнопку «Add a poll» и добавляем новый опрос.
Пишем вопрос и варианты ответа. Меняем автора при необходимости. Проставляем все галки.
- Active — опрос включен, в нем можно проголосовать;
- Poll Duration — время, в течении которого опрос будет активен;
- Allow anonymous votes — незарегистрированные пользователи будут иметь возможность голосовать;
- Allow cancel votes — можно отменить свой выбор и проголосовать заново;
- Allow view results — можно увидеть результаты опроса и не голосовать при этом самому.
Сохраняем.
Для опросов создаются отдельные страницы. Т.к. это первое голосование на моем сайте, то оно будет иметь путь:
/poll/1
Но опросы же нужны не как отдельные страницы, а как часть контента других.
Поэтому удобнее создать параграф, в котором будет поле поле «Опрос».
Находите подраздел «Ссылка» и клацайте на «Другое…»
В подразделе «Материал» будет «Опрос»
В управлении отображением меняем формат вывода на «Готовая к выводу сущность»:
Прикрепляем этот параграф к полю типа материала, или любой другой сущности, где вам нужно выводить опрос и добавляем его через поле с автодополнением.
Получаем результат:
Я прикрепил опрос к полю параграфу типа материала «Новость».
Отложенная публикация в Drupal 8
Устанавливаем модуль Scheduler:
composer require drupal/scheduler ; drush en scheduler -y
В настройках типа материала ставим галку «Разрешить планировать публикацию для этого типа материалов».
При добавлении/редактировании материала, в сайдбаре появится поле времени отложенной публикации:
Опубликуем материал в следующем веке
Указываем время будущей публикации, сохраняем. Материал будет иметь статус «Неопубликованный» и сменит его на «Опубликованный» в указанную дату.
Новость будет опубликована в запланированное время только после запуска крона.
Запускать стандартный cron каждую минуту не потребуется. Модуль Scheduler предоставляет облегченную версию.
В настройках модуля Scheduler переходим во вкладку Lightweight cron:
/admin/config/content/scheduler/cron
Копируем первую или вторую строку:
wget -q -O /dev/null "https://tester.ru/scheduler/cron/eeweequeo7ko2auyeengo"
Добавляем эту команду в планировщик на вашем сервере:
Планировщик в ISP Manager
Запланированные задания в CPanel
Сохраняем, проверяем, используем!