IT Kniga
Интернет-магазин компьютерной литературы

Программирование

Выбор координатора Drupal.ru

Drupal.ru - Втр, 21/11/2017 - 09:34

Привет!
Вот и прошло три запланированных месяца со дня объявления Плана развития Drupal.ru. Три обещанных месяца, в течении которых, главной задачей было внедрение новой версии сайта, но мы сделали больше! У всех появилась возможность развернуть сайт Drupal.ru на своём компьютере, пощупать и, при желании, внести улучшения, и именно так поступило множество разработчиков. Командой более 10 человек мы закрыли старые баги, создали новый функционал, организовали стабильную работу и основу для развития сайта. На данный момент портал соответствует всем законодательным нормам и находится на самообеспечении, благодаря вашим пожертвованиям. Неплохо для трёх Опенсурсных спринтов!
Спасибо! Спасибо Всем!

Я обещал занимать роль координатора развития сайта не более трёх месяцев, по истечении которых провести открытое голосование и выбор следующего руководителя, сроком на 6 месяцев, соответственно Уставу Drupal.ru. И теперь пришло время передать эту роль человеку, который будет продолжать развитие проекта и сообщества.
Для нас эти выборы будут экспериментом, который позволит прочувствовать вовлечённость русскоязычного сообщества Drupal и понять сколько нас.

Выборы будут проводиться открыто и в несколько этапов. Каждый из вас сможет следить за ситуацией, голосовать и выбирать своего фаворита.

  1. Первый этап будет заключаться в знакомстве. Мы встретимся на онлайн конференции, где каждый расскажет немного о себе.
  2. Вторым этапом, мы снова встретимся и поговорим о планах развития каждого и участника.
  3. Третьим, мы подведём итоги голосования, которое будет длиться на протяжении всех этапов.
Но сначала...

Сначала нужно выяснить, кто хочет быть координатором сообщества Drupal.Ru. Для этого пишите своё имя и ник на сайте drupal.ru на почту info@drupal.ru. Но прежде, рекомендую ознакомиться с Уставом, в котором описаны требования для координатора и его обязанности, и текущей командой, которая занимается направлениями в данный момент.

Старт первого этапа в воскресенье, 26.11.2017

Ключевые слова: drupal.ru Тип материала: Есть вопрос Версия Drupal: Drupal 7.* Форумы: Сайт и проект Drupal.ru 5 Thanks

Drupal 8 -> Знакомимся с консолью (Drupal Console)

Drupal.ru - Чт, 09/11/2017 - 11:34
Что такое Drupal консоль?

Это интерфейс командной строки(CLI), предназначенный для генерации стандартного кода, взаимодействия и отладки Drupal.
Изначально проект задумывался как утилита скаффолда, но потом консоль выросла в полноценную CLI утилиту.
Drupal консоль делает использование Symfony консоли и других сторонних компонентов, которые позволяют автоматически генерировать большую часть кода необходимую для модуля Drupal 8. В дополнению к этому консоль позволяет взаимодействовать с Вашим Drupal проектом.

Почему мне стоит ознакомиться с этим?

Drupal 8 намного более технически развит чем его предшественники и освоить сложность некоторых задач могло бы обескуражить кого угодно. Drupal консоль - это набор утилит, позволяющий сильно упростить жизнь разработчика. Написание модуля для Drupal 8 требует больше шаблонного кода и много чего нужно знать, чтобы просто начать создавать новый модуль. Эти задачи могут быть рутинными и скучными, и поэтому приводить к увеличению потенциальных ошибок. К счастью, большое количество нового кода может быть автоматически сгенерировано, используя Drupal консоль, без возможных рисков и копи-паста ошибок и траты кучи ценного времени.

Как Drupal консоль помогает?
  • Генерация кода и файлов необходимых для модуля Drupal 8.
  • Исследовать и отлаживать систему.
  • Взаимодействовать с инсталляцией Drupal.
  • Изучать Drupal 8 (для этого используется ключ --learning)
Где мне найти проект? Главная страница проекта

http://drupalconsole.com

Репозиторий Github

https://github.com/hechoendrupal/drupal-console

Документация

https://docs.drupalconsole.com/

Чат поддержки

https://gitter.im/hechoendrupal/DrupalConsole

Больше информации на странице поддержки Drupal.org

https://drupal.org/project/console

Получение проекта

Вам нужно установить 2 вещи, чтобы DrupalConsole заработала:

  1. DrupalConsole Launcher
  2. DrupalConsole itself
Зачем мне Launcher?

Это глобальное приложение, позволяющее Вам запустить команду drupal из любой поддиректории Вашего проекта. Без этого Вам прийдется запускать команду только из корневой директории сайта.

Установка DrupalConsole для каждого из Ваших проектов

Начиная с Drupal 8 RC DrupalConsole должна устанавливаться для каждого сайта.

Использование проекта

Drupal консоль предоставляет два типа команд:

  1. Глобальные команды лаунчера: эти команды могут запускаться за пределами корневой директории Drupal 8.
  2. Команды имеющие отношение к конкретному сайту: эти команды должны быть выполнены внутри корневой директории Drupal 8.
Выполнение команд Drupal консоли вне корневой директории сайта

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

drupal --root=/var/www/drupal8.dev cr all

Стоит отметить, что возможны предупреждения, если запускать Drupal консоль не из корневой директории сайта.

Как копировать конфигурационные файлы?

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

drupal init [--override]

Первым вопросом, который вы увидите после запуска этой команды будет Select destination to copy configuration(выберите путь назначения для копирования конфигурации) и набор опций будет меняться в зависимости от директории где Вы запустили эту команду:

Запуская эту команду не из корневой директории сайта Вы увидите:

Select destination to copy configuration:
  [0] /etc/console/
  [1] /Users/username/.console/
 >

Запуская эту команду из корневой директории сайта.

 Select destination to copy configuration:
  [0] /etc/console/
  [1] /Users/username/.console/
  [2] /path/to/drupal8.dev
 >

Остальная часть опций не зависит от директории в которой была запущена команда.

Как скачивать, установить и обслуживать Drupal 8?

Наиболее простым способом потестировать Drupal 8 на вашей машине является следующая команда:
drupal quick:start

Обратите внимание, что перед этим нужно выполнить drupal init чтобы скопировать ~/.console/chain/quick-start.yml в Вашу локальную систему.

Команда  chain поможет автоматизировать запуск команды, давая возможность задать внешний YAML файл, содержащий описание, опции и аргументы нескольких команд и запустить этот список команд в соответствии с последовательностью их описания в файле.

Содержимое предоставляемого файла ~/.console/chain/quick-start.yml следующее:

# How to use
# quick:start --directory="/path/to/drupal-project/"
# quick:start --directory="/path/to/drupal-project/" --profile="minimal"
# quick:start --repository="acquia/lightning-project:^8.1" --directory="/path/to/drupal-project/" --profile="lightning"
command:
  name: quick:start
  description: 'Download, install and serve a new Drupal project'
vars:
  repository:
    - drupal-composer/drupal-project:8.x-dev
    - acquia/lightning-project
    - acquia/reservoir-project
  profile: standard
commands:
  # Create Drupal project using DrupalComposer
  - command: exec
    arguments:
      bin: composer create-project %{{repository}} %{{directory}} --prefer-dist --no-progress --no-interaction
  # Install Drupal
  - command: exec
    arguments:
      bin: drupal site:install %{{profile}} --root=%{{directory}} --db-type="sqlite" --no-interaction
  # Start PHP built-in server
  - command: exec
    arguments:
      bin: drupal server --root=%{{directory}}ß

Данная конфигурация запустит несколько команд, которые скачают и установят Drupal используя SQLite, и в конце запустят встроенный PHP сервер. Теперь Вам необходимо только открыть в браузере следующий URL 127.0.0.1:8088.

Вы можете продублировать или сделать изменения в YAML файле для загрузки модулей: module:download, установки модулей: module:install, импорта конфигураций: config:import и восстановления Вашей базы данных database:restore или любую другую команду, которая предоставляется Drupal консолью, или пользовательскую команду предоставляемую Вашим собственным модулем.

Как использовать Drupal консоль в мултисайтовой установке?

Drupal Console предоставляет поддержку мульти-сайтовых установок. Для отладки мульти-сайтов используется команда debug:multisite и опция --uri для взаимодействия с мульти-сайтовыми установками.

Как вывести все известные сайты при использовании мультисайта?

Drupal консоль использует файл sites/sites.php для определения мультисайтовой конфигурации. Для примера смотрите файл sites/example.site.php

drupal debug:multisite

+---------------------+--------------------------------+
| Site                | Directory                      |
+---------------------+--------------------------------+
| drupal8.dev         | /var/www/drupal8.dev/default   |
| drupal8.multi.dev   | /var/www/drupal8.dev/multi.dev |
+---------------------+--------------------------------+

 Sites are written using the format: <port>.<domain>.<path>

Как запускать команды при мультисайтинге? drupal --uri=http://drupal8.multi.dev cr all
drupal --uri=drupal8.multi.dev cr all Использование псевдонимов сайтов(alias)

Drupal консоль позволяет Вам запускать команды на Вашем локальном сервере, но фактически Вы запускаете их на локальном, удаленном или виртуальном (VM, Docker) Drupal сайте используя псевдонимы.

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

Для определения удаленного сайта используется type: ssh. В этом случае команда ssh будет использоваться для запуска команд на удаленном сервере.

Псевдонимы сайтов можно получить используя следующие пути:

  • Глобально: ~/.console/sites/
  • Для каждого сайта: /path/to/site/console/sites/
Допустимые опции для псевдонимов сайтов

root: корневая директория Drupal проекта.
host: Доменное имя удаленной системы, не является объязательным для локальных сайтов.
port: Порт, который используется при соединении по ssh протоколу. По умолчанию используется порт 22.
user: Имя пользователя для соединения по ssh.
options: Массив допустимых опций Drupal консоли.
arguments: Массив аргументов Drupal консоли.
extra-options: Используется только если необходимы дополнительные опции, например, метод аутенификации и/или альтернативный идентификационный файл.
type: Тип сайта с которым будет происходить взаимодействие. Допустимые опции local, ssh, container. Опция local используется по умолчанию.

Настройка локального рабочего окружения

Использование псевдонимов сайтов требует определенной локальной настройки.

Глобальная конфигурация

Глобальная конфигурация может быть предоставлена копией этого файла ~/.console/config.yml. Эта информация сгруппирована по ключу  remote

application:
  ...
  remote:
    user: drupal
    port: 22
    options:
    arguments:
    type: ssh Конфигурация специфического сайта

Конфигурация псевдонима сайта может быть предоставлена добавлением YAML файла /path/to/site/console/sites/sample.yml или ~/.console/sites/sample.yml

local:
  root: /var/www/drupal8.dev
 type: local
dev:
  root: /var/www/html/drupal
  host: 140.211.10.62
  user: drupal
  type: ssh
prod:
  root: /var/www/html/docroot
  host: live.drupal.org
  user: drupal
  type: ssh Отладка сайтов

Все известные псевдонимы сайтов могут быть получены с помощью команды debug:site

drupal debug:site

+--------------------+-----------------+------------------------+
| Site               | Host            | Root                   |
+--------------------+-----------------+------------------------+
| sample.local       | local           | /var/www/drupal8.dev   |
| sample.dev         | 140.211.10.62   | /var/www/html/drupal   |
| sample.prod        | live.drupal.org | /var/www/html/docroot  |
+--------------------+-----------------+------------------------+

Детали конфигурации могут быть получены указанием имени сайта в качестве аргумента команды debug:site

drupal debug:site sample.dev

user: drupal
port: 22
options:
arguments:
root: /var/www/html/drupal
host: 140.211.10.62
type: ssh

Как вы можете заметить, глобальная конфигурация и конфигурация специфического сайта обычно объединяются во время отладки сайта. Вы можете переопределять любое значение глобальной конфигурации добавлением ключей для определенного сайта.

Как использовать Drupal консоль для удаленной версии сайта?

Псевдонимы сайтов могут быть указаны с помощью параметра --target и имени сайта с которым Вы хотите взаимодействовать.

drupal --target=sample.dev cr all

Также псевдонимы сайта можно указать используя устаревший @ идентификатор:
drupal @sample.dev cr all

Подключение к виртуальному рабочему окружению

Вы можете подсоединиться к виртуальной машине или Докеру передавая значения для ключей extra-options и  type .

Пример для DrupalVM dev:
  root: /var/www/drupalvm/drupal
  host: 192.168.88.88
  user: vagrant
  extra-options: '-o PasswordAuthentication=no -i ~/.vagrant.d/insecure_private_key'
  type: ssh Пример для Drupal4Docker dev:
  root: /var/www/html
  extra-options: docker-compose exec --user=82 php
  type: container

Когда используется type: container, то необходимо указать значения для  host и  user .

Что дальше?

Это было описание основных возможностей Drupal консоли, достаточно мощного и удобного инструмента. За более подробной информацией советую обратиться к официальной документации, которую можно найти здесь: https://hechoendrupal.gitbooks.io/drupal-console/content/en/index.html.

P.S.: Взято отсюда http://stillfinder.net/ru/blog/drupal-8-znakomimsya-s-konsolyu-console

Модули и темы: console Ключевые слова: drupal console Тип материала: Предлагаю решение Версия Drupal: Drupal 8.* Форумы: Программирование 6 Thanks

Релиз drupal.ru 6 Ноября 2017

Drupal.ru - Вс, 05/11/2017 - 22:20


Дело движется хорошо! Завершён следующий релиз 6-ое Ноября 2017, в котором ребята проделали невероятную работу! В этот раз мы увидим ещё больше улучшений:

* DevOps задачи, которые находятся в процессе реализации.



Вот, так список! С каждым разом, разработчиков становится всё больше. Каждый реализовывает то, что хочет и заслуживает отдельной благодарности! Конечно, вчитываться в эти задачи не хочется, а по ссылкам бегать лень. Оно и понятно. Поэтому разберём некоторые улучшения.

Что нового?

Появился дополнительный пункт меню, который позволяет создать "Запись в блог", "Событие" или "Компанию" из любого места на сайте. Здесь стоит сказать, что всё верхнее меню было координально переработано и упрощено, несмотря на то, что внешний вид его почти не изменился.
Новый блок с полезными ссылками позволит быстро взглянуть на правила сайта или отправить сообщение администрации сайта.
А жалобы и их решения больше не будут отвлекать на себя внимание, занимая в 10 раз больше места, чем сам комментарий. Теперь такая информация будет скрыта, но доступна, благодаря новым, стильным popover'ам.

Также, теперь будет легко определить уровень вложенности комментария и понять на какой комментарий это ответ.

Не смотря на то, что следующие задачи всё ещё в процессе выполнения, они уже опробованы на сервере разработки:

  • Добавление SSL-сертификата и включение https протокола
  • Включение http2

Сайт становится защищённей и быстрей! Вжух!
На самом деле, здесь каждая задача может быть описана, но мы остановимся на последней: все владельцы компаний теперь могут размещать рекламу о своей компании на сайте, в разделе Компании. При проверке, ко всем компаниям будет применяться только одно правило: предоставление услуг связанных с CMS Drupal: разработка, поддержка, хостинг, тренинги, проведение мероприятий. Не смотря на то, что публикация информации бесплатная, мы всё же встроили форму для пожертвования, для тех кто хочет поддержать проект. Таким образом, мы сможем продолжать улучшать площадку и информацию о Вашей компании увидит большее количество людей.

В разработке участвовали Кроме того, на благо сайта трудились

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

Традиционно-великая благодарность каждому, кто участвует в разработке, находит баги и создаёт задачи, поддерживает финансово, делится мыслями в чатах, голосует и так или иначе участвует в разработке сайта!

Ключевые слова: drupal.ru релиз проекта Форумы: Сайт и проект Drupal.ru 7 Thanks

Обновление Drupal (новая версия Drupal 8.4.2)

Drupal.ru - Пт, 03/11/2017 - 16:28


Примечания к выпуску:

Обновления с безопасностью отсутствуют.

Выпущена готовая к использованию версия Drupal 8.4.2

В этом релизе Drupal'а изменена, включенная в ядро, версия библиотеки ckeditor (с 4.7.3 до 4.7.2), в противном случае библиотека идентична Drupal 8.4.1

Если вы еще не обновили свой проект до версии ядра 8.4.0, то прочитайте об Drupal 8.4.0 перед обновлением.

Подробнее об этой версии Drupal

Ключевые слова: Drupal 8.4.2 Версия Drupal: Drupal 8.* Форумы: Безопасность 0 Thanks

Обновление Drupal (новая версия Drupal 8.4.1)

Drupal.ru - Чт, 02/11/2017 - 07:59



Примечания к выпуску:

Обновления с безопасностью отсутствуют.

Выпущена готовая к использованию версия Drupal 8.4.1

Если вы еще не обновили свой проект до версии ядра 8.4.0, то прочитайте об Drupal 8.4.0 перед обновлением.

Ниже перечислены исправления, добавленные в Drupal 8.4.1 (в дополнение к десяткам других исправлений в Drupal 8.4.0):

Подробнее об этой версии Drupal

Ключевые слова: Drupal 8.4.1 Версия Drupal: Drupal 8.* Форумы: Безопасность 2 Thanks

Расширение промо-страницы why.drupal.ru

Drupal.ru - Чт, 26/10/2017 - 10:04
Вводная

В России несколько удивительная ситуация (мы про Битрикс преимущественно). В том плане, что проприетарные CMS, которые далеки от концепта "приятный читаемый и безопасный код", вкладываясь в маркетинг могут у широкой аудитории создавать мнение "Друпал и другие CMS использовать нельзя, они небезопасны, а Битрикс можно ". К сожалению эта позиция стала уже, видимо, "маркетинговой политикой партии", т.к. битрикс-продавцы замечены с этим аргументом в разных городах в разное время. Что иногда вызывает проблемы с продажей Drupal'а.

Что хотим

Сделать раздел с информацией о том почему Drupal безопасен, как работает служба безопасности друпала, почему Битрикс и др. говорят такие вещи, которые не соответствуют действительности.

Кому это нужно

Всем кто продает Drupal. Собственно запрос на эту страницу поступил от Анатолия Полицина, одного из спонсоров самой промо-страницы (еще раз спасибо! https://drupal.dru.io/thanks ). Ну и всех донатеров на странице благодарностей обязательно разместим.

Как помочь?

Деньгами и/или временем.

Если собственные ресурсы времени на создание сейчас нет возможности выделить, а ждать пока найдется время или человек со временем не хочется - тут хорошо работает краудфандинг. Сильно повышает шанс что через месяц-два решение будет (вспомним тот же https://www.drupal.org/association/d8accelerate ).

http://yasobe.ru/na/drupalpromo - страница для сбора средств. https://github.com/dru-io/promo/issues - тут можно помочь кодом/контентом/дизайном.

Ключевые слова: drupal promotion Тип материала: Предлагаю решение Форумы: Решение проблем 2 Thanks

Ошибки Drush в Drupal 8 и как их лечить

Drupal.ru - Втр, 24/10/2017 - 16:05

Если вы работаете с Drupal и видите ошибки при выполнении Drush команд похожие на эту:

PHP Fatal error:  Declaration of Drush\Command\DrushInputAdapter::hasParameterOption() must be compatible with Symfony\Component\Console\Input\InputInterface::hasParameterOption($values, $onlyParams = false) in /Applications/DevDesktop/tools/vendor/drush/drush/lib/Drush/Command/DrushInputAdapter.php on line 27

Fatal error: Declaration of Drush\Command\DrushInputAdapter::hasParameterOption() must be compatible with Symfony\Component\Console\Input\InputInterface::hasParameterOption($values, $onlyParams = false) in /Applications/DevDesktop/tools/vendor/drush/drush/lib/Drush/Command/DrushInputAdapter.php on line 27
Drush command terminated abnormally due to an unrecoverable error.   [error]
Error: Declaration of
Drush\Command\DrushInputAdapter::hasParameterOption() must be
compatible with
Symfony\Component\Console\Input\InputInterface::hasParameterOption($values,
$onlyParams = false) in
/Applications/DevDesktop/tools/vendor/drush/drush/lib/Drush/Command/DrushInputAdapter.php,
line 27

Причиной является то, что в Drupal minor релизе (8.4.х) компоненты Symfony были обновлены до версии 3.2.
Это вызывает конфликт, который исправляется обновлением Drush до версии 9. Для этого нужно выполнить следующую команду:

composer require drush/drush:9.*

Оригинал здесь

Ключевые слова: drupal 8 Тип материала: Предлагаю решение Версия Drupal: Drupal 8.* Drupal 7.* Форумы: Решение проблем 2 Thanks

Drupal 8 -> Блоки и конфигурация

Drupal.ru - Втр, 24/10/2017 - 16:04

Block API в Drupal 8 была изменена таким образом, что сейчас блоки являются плагинами(plugins) и сущностями(entities) одновременно. Блоки в Drupal 8 совмещают в себе две разных API структуры: Block Plugin API, которое является автономным повторно используемым API, и Block Entity API, которое представляет собой конкретный вариант использования блока и управление его видимости. Это означает, что блоки теперь являются объектами с полями и работают с новой системой плагинов введенной в Drupal 8. То есть теперь Вы можете создавать новые сущности, добавлять в них поля, и отображать их по разному.

Это изменение позволяет разработчикам использовать тот же самый блок в разных регионах, что было невозможно без дополнительных модулей до Drupal 8. По сути, это позволяет Вам создать много экземпляров того же блока. Также, Вы можете делать это когда Вы добавляете блок используя админ интерфейс.

Далее в этой статье мы будем использовать модуль block_example из проекта Examples.

Блоки в Drupal 8

Вместо использования до 4-х разных хуков, чтобы определить блок (как это делалось в Drupal 7), система плагинов позволяет сделать следующее:

  • Использовать один файл для каждого блока.
  • Если у Вас есть новый блок, то Вы можете скопировать и вставить содержимое файла в новый файл и обновить метаданные и реализацию, и Вы получите новый блок.
  • Вместо работы с 4-я разными функциями в четырех разных местах, в одном или двух файлах, Вам нужен только один файл для каждого блока.
  • Вся необходимая логика находиться под рукой.
  • Метаданные объявляются в том же месте.
  • Вам не прийдется переходить в какой-либо файл и объявлять путь к Вашему классу, так-как есть автозагрузка.
  • Все содержится и инкапсулируется в одном файле.
Создание простого блока

В проекте Examples Вы найдете модуль block_example, который содержит три примера для разных типов блоков в директории src/Plugin/Block. Мы попробуем протестировать самый простой пример в котором создается пустой блок. Новый блок называется ExampleEmptyBlock, и его реализация находится в файле ExampleEmptyBlock.php.

Классы и аннотации

Все файлы классов должны начинаться с объявления пространства имен(namespace) класса. После создания пространства имен для класса мы расширим класс ядра Drupal BlockBase для создания класса ExampleEmptyBlock. С этим мы можем использовать Drupal аннотацию, которая появилась с версии Drupal 8.

Общие PHP аннотации - это закомментированный текст, который позволяет автоматически находить мета-данные и информацию, относящуюся к файлу класса. Пример описанный выше содержит аннотации специально для блока Example: empty block, размещенные во втором комментарии. Используя аннотации, мы сообщаем Drupal-у, что мы хотим зарегистрировать новый тип блока (@Block), с id example_empty и административным названием Example: empty block, что пройдет через систему переводов перед использованием в системе.

Аннотация {@inheritdoc} может быть использована в классе, когда вы переопределяете его функцию. Эта аннотация сообщает системе, что необходимо использовать документации класса-родителя.

Обратите внимание, что Drupal не сможет найти блок до тех пор, пока не будет правильной аннотации.

Это расширяет класс BlockBase в наш ExampleEmptyBlock, внутри которого мы реализуем метод build(). Это один из наиболее важных методов, так-как он возвращает массив готовый для рендера и вывода блока.

Очистите все кэши, перейдите на страницу конфигурации /admin/structure/block и кликните на Place Block для выбора Вашего нового блока.

Добавляем форму конфигурации к блоку

Теперь мы знаем как создать новый тип блока для повторного использования на странице конфигурации блоков, теперь самое время изучить как использовать API для создания формы конфигурации блока. Эта новая настрой позволит Вам использовать пользовательский интерфейс для того, чтобы задать строку, которая будет выводиться в теле блока.

Дополнительные настойки конфигурации обрабатываются следующим образом:

  • Используя метод blockForm(), в котором Вы можете добавить элементы к получаемому массиву $form.
  • Используя метод blockSubmit() где вы сможете сохранить данные введенные пользователем.
  • Используя метод defaultConfiguration(), который задает значения конфигурации по умолчанию, отображаемые пользователю в момент первого открытия конфигурации.
Создание блока для формы

В этом примере мы будем использовать модуль block_example из проекта Examples. Код конфигурируемого блока размещается в файле block_example/src/Plugin/Block/ExampleConfigurableTextBlock.php.

Давайте рассмотрим новые возможности и функции:

  • Избегайте глобальных функций
    В Drupal 8 каждая часть кода содержит в себе все что может нам понадобиться. Это означает, что большинство функций содержатся в классах вместо глобальной видимости, то есть функции l() или t(), которые повсеместно использовались в Drupal 7 больше не рекомендованы. Их функциональность предоставляется классами через систему, называемую внедрение зависимости(dependency injection), которую мы обсудим в отдельной статье.
  • Расширение базовых классов
    Большинство компонентов, таких как блоки и контроллеры, используют шаблон в котором мы расширяем базовый класс. Базовый класс содержит большинство необходимого функционала, как например функцию t(). По этой причине, когда это возможно, полезно расширять базовый класс.

    В нашем примере мы создаем блок, который расширяет существующий класс BlockBase, что позволяет использовать метод класса $this->t(), делающий то же самое, что и функция t() в Drupal 7. Это дает нам возможность получить доступ к функции t() через вызов метода $this->t()

  • Трейты
    По сути трейт выполняет ту же роль, что и include, которая часто использовалась в Drupal 7. Он предоставляет дополнительные методы, которые могут быть включены в любой класс. Включая StringTranslationTrait в BlockBase, мы можем использовать любые методы трейта StringTranslationTrait как будто они являются частью BlockBase.

При написании статьи использовались следующие материалы:

Тип материала: Предлагаю решение Версия Drupal: Drupal 8.* Drupal 7.* Форумы: Программирование 3 Thanks

Drupal 8 в 2 шага

Drupal.ru - Втр, 24/10/2017 - 15:59

Drupal 8 - это последняя стабильная версия Drupal, современная, которая использует PHP 5.4+, REST совместимая, объектно-ориентированная. Концепция осталась прежней, но подход изменился. Drupal 8 использует возможности объектно-ориентированного программирования(ООП) для большинства подсистем, благодаря фреймворку Symfony 3.

Как мне объявить модуль?

В Drupal 8 для объявления модуля нужен только файл YAML (.info.yml):

name: D8 Test Module
description: D8 Test Module
type: module
core: 8.x
package: Custom

В Drupal 8 файл .module больше не является обязательным, таким образом, только файл .info.yml необходим для того, чтобы можно было включить модуль.

Как мне создать страницу

Создайте контроллер, который наследуется/расширяет ControllerBase класс и возвращает вывод страницы:
/modules/d8_example_module/src/Controller/D8ExampleModuleController.php

<?php
namespace Drupal\d8_example_module\Controller;

use 

Drupal\Core\Controller\ControllerBase;

class 

D8ExampleModuleController extends ControllerBase {

  public function 

test_page($from, $to) {
    $message = $this->t('%from to %to', [
      '%from' => $from,
      '%to' => $to,
    ]);

    return [

'#markup' => $message];
  }
}
?>

После того как это сделано, совместно с файлом .routing.yml мы можем задать путь, контроллер, заголовок и права доступа:

/modules/d8_example_module/d8_example_module.routing.yml

d8_example_module.test_page:
  path: '/test-page/{from}/{to}'
  defaults:
    _controller: 'Drupal\d8_example_module\Controller\D8ExampleModuleController::test_page'
    _title: 'Test Page!'
  requirements:
    _permission: 'access content' Как мне сделать контент темизируемым?

У нас до сих пор доступна функция hook_theme():

/modules/d8_example_module/d8_example_module.module

<?php
/**
 * Implements hook_theme().
 */
function d8_example_module_theme() {
  $theme['d8_example_module_page_theme'] = [
    'variables' => ['from' => NULL, 'to' => NULL],
    'template' => 'd8-theme-page',
  ];

  return 

$theme;
}
?>

Для темизации Drupal 8 использует Twig - система шаблонизации используемая в основном проектами на PHP. Для того, чтобы узнать больше про Twig ознакомьтесь с Twig in Drupal 8. Одной из полезных особенностей Twig является подсистема перевода строк:

/modules/d8_example_module/template/d8-theme-page.html.twig

<section>
  {% trans %}
    <strong>{{ from }}</strong> to <em>{{ to }}</em>
  {% endtrans %}
</section>

А потом связываем тему оформления со страницей:

/modules/d8_example_module/src/Controller/D8ExampleModuleController.php

<?php
namespace Drupal\d8_example_module\Controller;

use 

Drupal\Core\Controller\ControllerBase;

class 

D8ExampleModuleController extends ControllerBase {

  public function 

test_page($from, $to) {
    return [
      '#theme' => 'd8_example_module_page_theme',
      '#from' => $from,
      '#to' => $to,
    ];
  }
}
?> Как мне объявить переменную?

В Drupal 8 есть полностью новая система поддержки конфигураций, которая сохраняет конфигурации в YAML (.yml) файлах. Для дополнительной информации смотрите Managing configuration in Drupal 8.

Мы зададим переменные в config/install/*.settings.yml:

/modules/d8_example_module/config/install/d8_example_module.settings.yml

default_count: 3

Переменные будут сохранены в базе данных во время инсталляции модуля. Мы задаем схему для переменных в config/schema/*.settings.yml:

/modules/d8_example_module/config/schema/d8_example_module.settings.yml

d8_example_module.settings:
  type: mapping
  label: 'D8 Example Module settings'
  mapping:
    default_count:
      type: integer
      label: 'Default count' Как мне создать форму?

Для создания формы мы расширим базовый класс ConfigFormBase:

/modules/d8_example_module/src/Form/TestForm.php

<?php
namespace Drupal\d8_example_module\Form;

use 

Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

class 

TestForm extends ConfigFormBase {
  public function getFormId() {
    return 'test_form';
  }

  public function 

buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->config('d8_example_module.settings');

    

$form['default_count'] = [
      '#type' => 'number',
      '#title' => $this->t('Default count'),
      '#default_value' => $config->get('default_count'),
    ];
    return parent::buildForm($form, $form_state);
  }

  public function 

submitForm(array &$form, FormStateInterface $form_state) {
    $config = $this->config('d8_example_module.settings');
    $config->set('default_count', $form_state->getValue('default_count'));
    $config->save();
    parent::submitForm($form, $form_state);
  }
}
?>

Далее, используя файл .routing.yml мы можем задать путь, форму, заголовок и права доступа:

/modules/d8_example_module/d8_example_module.routing.yml

d8_example_module.test_form:
  path: /admin/config/system/test-form
  defaults:
    _form: 'Drupal\d8_example_module\Form\TestForm'
    _title: 'Test Form'
  requirements:
    _permission: 'configure_form'

Мы будем использовать друго YAML файл (.permissions.yml) для объявления прав доступа:

/modules/d8_example_module/d8_example_module.permissions.yml

'configure_form':
  title: 'Access to Test Form'
  description: 'Set the Default Count variable'

Также, мы используем еще один YAML файл (.links.menu.yml) для того, чтобы задать ссылки меню:

/modules/d8_example_module/d8_example_module.links.menu.yml

d8_example_module.test_form:
  title: 'Test Form'
  description: 'Set the Default Count variable'
  route_name: d8_example_module.test_form
  parent: system.admin_config_system Как мне создать блок?

Для создания блока мы расширим класс ConfigFormBase:

/modules/d8_example_module/src/Plugin/Block/TestBlock.php

<?php
namespace Drupal\d8_example_module\Plugin\Block;

use 

Drupal\Core\Block\BlockBase;

/**
 * Test Block.
 *
 * @Block(
 *   id = "test_block",
 *   admin_label = @Translation("Test Block"),
 *   category = @Translation("System")
 * )
 */
class TestBlock extends BlockBase {

  public function 

build() {
    return [
      '#markup' => $this->t('Block content...'),
    ];
  }
}
?>

После этого блок будет доступен для изменения конфигурации в CMS(/admin/structure/block). Далее следует пример более сложного блока:

<?php
namespace Drupal\d8_example_module\Plugin\Block;

use 

Drupal\Core\Block\BlockBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Test Block.
 *
 * @Block(
 *   id = "test_block",
 *   admin_label = @Translation("Test Block"),
 *   category = @Translation("System")
 * )
 */
class TestBlock extends BlockBase {

  public function 

defaultConfiguration() {
    return ['enabled' => 1];
  }

  public function 

blockForm($form, FormStateInterface $form_state) {
    $form['enabled'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Configuration enabled'),
      '#default_value' => $this->configuration['enabled'],
    ];

    return 

$form;
  }

  public function 

blockSubmit($form, FormStateInterface $form_state) {
    $this->configuration['enabled'] = (bool)$form_state->getValue('enabled');
  }

  public function 

build() {
    if ($this->configuration['enabled']) {
      $message = $this->t('Configuration enabled');
    }
    else {
      $message = $this->t('Configuration disabled');
    }
    return [
      '#markup' => $message,
    ];
  }
}
?> Структура модуля

Структура модуля должна выглядеть как в примере d8_example_module:

d8_example_module/
 |
 |- config/
   |
   |- install/
     |
     |- d8_example_module.setting.yaml
     |
     |- schema/
       |
       |- d8_example_module.settings.yaml
 |
 |- src/
   |
   |- Controller/
     |
     |- D8ExampleModuleController.php
   |
   |- Form/
     |
     |- TestForm.php
   |
   |- Plugin/
     |
     |- Block/
       |
       |- TestBlock.php
 |
 |- templates/
   |
   |- d8-theme-page.html.twig
 |
 |- d8_example_module.info.yml
 |
 |- d8_example_module.links.menu.yml
 |
 |- d8_example_module.module
 |
 |- d8_example_module.permissions.yml
 |
 |- d8_example_module.routing.yml Материалы Ключевые слова: drupal 8 Тип материала: Предлагаю решение Версия Drupal: Drupal 8.* Drupal 7.* Форумы: Программирование 4 Thanks

Drupal-школа - двенадцатое занятие: продвижение сайта на Drupal

Drupal.ru - Вс, 15/10/2017 - 14:28

Разбираем основы продвижения сайтов, в частности сайта на Drupal 8.

Версия Drupal: Drupal 8.* Форумы: DrupalSib 2 Thanks

Обновление Drupal (новая версия Drupal 8.4.0)

Drupal.ru - Сб, 07/10/2017 - 20:16

Оригинал (опубликован Gábor Hojtsy 4 октября 2017 года): Drupal 8.4.0 is now available

Что нового в Drupal 8.4.0?

Новая версия является важной вехой стабильности для Drupal 8. Она добавляет неявные улучшения, для обеспечения стабильных выпусков контриб модулей для макетов, мультимедиа и календаря. Многие другие экспериментальные модули включенные в ядро, также стали стабильными в этом выпуске, включая модули для строчного отображения ошибок формы и управления рабочими процессами.

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

Загрузить Drupal 8.4.0

Важная информация: Если вы используете Drush для управления Drupal, обязательно обновите Drush до версии 8.1.12 или выше перед обновлением Drupal. Обновление до Drupal 8.4.0 с помощью Drush 8.1.11 или более ранней версии завершится с ошибками. (Всегда тщательно проверяйте минорные версии обновлений до применения на рабочей версии сайта.)

Inline Form Errors

Модуль Inline Form Errors предоставляет сводку любых ошибок проверки в верхней части формы и помещает отдельные сообщения об ошибках рядом с самими элементами формы. Это помогает пользователям понять, какие записи нужно исправлять, и как это сделать. Inline Form Errors был представлен в качестве экспериментального модуля в Drupal 8.0.0, но теперь он стабилен и достаточно отшлифован для использования.

Datetime Range

Модуль Datetime Range предоставляет тип поля, который позволяет конечным датам поддерживать дополнительные модули, такие как Calendar. Этот стабильный выпуск обратно совместим с экспериментальной версией Drupal 8.3.x и использует целостный API с другими полями Datetime. Будущие выпуски могут улучшить поддержку Views, юзабилити, проверку поля Datetime Range и поддержку REST.

Layout Discovery API

Модуль Layout Discovery предоставляет API для модулей или тем для регистрации макетов, а также пять общих макетов. Предоставление этого API в ядре позволяет быть совместимыми друг с другом модулям работы с макетами в ядре и сторонним модулям, таким как Panels и Display Suite. Этот стабильный выпуск обратно совместим с экспериментальной версией 8.3.x и вводит поддержку атрибутов для отдельных регионов.

Media API

Новый модуль ядра Media предоставляет API для многократного использования сущностей медиаданных и ссылок. Он основан на контриб модуле Media Entity.

Поскольку существует обширная экосистема контриб модулей Drupal, построенная на Media Entity, главным приоритетом для данного выпуска является обеспечение стабильного API ядра и модели данных для более плавного обновления этих модулей. Разработчики и профессиональные создатели сайтов теперь могут добавить Media как зависимость. Ведется работа по предоставлению способа обновления данных Media Entity для существующих сайтов и портирования существующих модулей на усовершенствованный API ядра.

Обратите внимание, что модуль Media в ядре помечен скрытым и не виден на странице «Расширения» (модуль администрирования). (Включение модуля, который зависит от основного модуля Media, автоматически включит Media.) Модуль будет отображаться для разработчиков сайтов, когда проблемы связанные с пользовательским опытом будут устранены в будущей версии.

Аналогично, API REST и нормализация для Media не являются окончательными, и поддержка отдельных приложений будет улучшена в будущей версии.

Улучшения в управлении контентом и администрировании сайта

Выпадающая кнопка «Сохранить и опубликовать / Сохранить неопубликованным» была заменена на чекбокс «Опубликовано» и отдельную кнопку «Сохранить». Выпадающая кнопка «Сохранить ...» была частью нового дизайна в Drupal 8, но пользователи сочли его запутанным, поэтому мы восстановили дизайн, который больше похож на интерфейс пользователя для Drupal 7 и более ранних версий.

Страницы администрирования «Комментарии» на «/admin/content/comment» и отчет «Последние записи журнала», формируемый dblog теперь являются настраиваемыми представлениями. Это позволяет разработчикам сайтов легко настраивать, заменять или клонировать данные представления.

Обновленные миграции

Этот релиз добавляет поддержку дат и связанных нод для миграций с Drupal 6 на Drupal 8. Ядро предоставляет миграции для большинства данных в Drupal 6 и может использоваться для переноса сайтов с Drupal 6 на Drupal 8, миграции Drupal 6-8 находятся в состоянии близком к бета стабильности. Остаются некоторые пробелы, в частности, некоторые данные интернационализации. Миграция с Drupal 7 на Drupal 8 является неполной, но подходит для разработчиков, которые хотели бы помочь улучшить миграции и может использоваться для тестирования обновления простых сайтов на Drupal 7. Наиболее важные миграции доступны.

Модерация и рабочие процессы

Модуль Workflows теперь также стабильный, однако он представляет только фреймворк для управления рабочими процессами и не является полезным непосредственно. Экспериментальный модуль Content Moderation позволяет применить рабочие процессы к контенту и в настоящее время находится в состоянии бета стабильности. Рабочие процессы управления контентом теперь можно применять к любому типу сущностей, которые поддерживают ревизии, также многочисленные проблемы и критические ошибки исправлены в этом выпуске.

Возможности платформы для веб-сервисов

Drupal 8.4 продолжает расширять в Drupal поддержку веб-сервисов, ориентированных для автономных сайтов и приложений, включая 15% повышение производительности для аутентифицированных REST запросов, расширенную REST функциональность и улучшения для разработчиков.

Более подробная информация о каждом разделе изложена в заметках к релизу 8.4.0.

Что это означает для меня? Владельцы сайтов на Drupal 8

Обновите Drupal до версии 8.4.0, чтобы продолжать получать исправления ошибок и безопасности. Следующий bugfix релиз (8.4.1) запланирован на 1 ноября 2017 года.

Обновление вашего сайта с 8.3.7 до 8.4.0 через update.php точно такое же, как и обновление с 8.3.6 до 8.3.7. Если вы используете Drush, обязательно обновите Drush до версии 8.1.12 или выше перед тем как использовать его для обновления Drupal с версии 8.3.7 до 8.4.0. Drupal 8.4.0 также включает мажорные обновления для нескольких зависимостей, включая Symfony, jQuery и jQuery UI. Модулям, темам и переводам может понадобиться обновление для этих и прочих изменений в данной минорной версии, поэтому, перед обновлением рабочего сайта тщательно протестируйте обновление.

Владельцы сайтов на Drupal 7

Drupal 7 все еще полностью поддерживается и будет продолжать получать исправления ошибок и безопасности на протяжении всех минорных релизов Drupal 8.

Наиболее важные миграции с Drupal 7 до 8 теперь доступны, но система миграций до сих пор не завершена, особенно для многоязычных сайтов, поэтому, при попытке переноса, могут проявиться ошибки или отсутствующе миграции. Тем не менее, поскольку ваш сайт Drupal 7 может продолжать работать во время тестирования миграции на новый Drupal 8 сайт, вы можете помочь нам стабилизировать процесс миграции с Drupal 7 до Drupal 8! Тестирование и отчеты об ошибках с ваших реальных Drupal 7 сайтов помогут нам быстрее стабилизировать эту функциональность для всех. (Ищите известные проблемы).

Владельцы сайтов на Drupal 6

Drupal 6 больше не поддерживается. Создайте сайт на Drupal 8 и попытайтесь перенести данные в него как можно скорее. Ваш сайт Drupal 6 может по-прежнему работать во время тестирования переноса данных с Drupal 6 в ваш новый сайт на Drupal 8. Ядро теперь предоставляет миграции для большинства данных Drupal 6, но, в частности, миграции многоязычных функций не являются завершенными. Если вы нашли не описанную в известных проблемах ошибку в экспериментальном наборе модулей миграции, ваш подробный отчёт с шагами для воспроизведения будет большой помощью!

Контрибьюторы переводов, модулей и тем оформления

Минорные релизы, такие как Drupal 8.4.0, включают обратно совместимые дополнения API для разработчиков, а также новые функции. Читайте заметки о выпуске 8.4.0 для получения более подробной информации об усовершенствованиях для разработчиков в этом выпуске.

Так как минорные релизы обратно совместимы, модули, темы и переводы, которые поддерживали Drupal 8.3.x и ранее, будут также совместимы с 8.4.x. Однако новая версия включают в себя некоторые изменения в строках, пользовательском интерфейсе и внутренних API (а также более значительные изменения в экспериментальных модулях). Это означает, что могут потребоваться небольшие обновления для ваших переводов, модулей и тем оформления. Смотрите объявление о релиз-кандидате 8.4.0 для получения дополнительной справочной информации.

Ключевые слова: release Версия Drupal: Drupal 8.* Форумы: Безопасность 8 Thanks

Релиз drupal.ru 2 Октября 2017

Drupal.ru - Вс, 01/10/2017 - 22:06


Завершён второй релиз "2-ое октября 2017" с новой структурой и были внесены следующие изменения:

В разработке участвовали

В этот раз было проделано много работы в сфере DevOps:

Кроме того:

  • Поднят отдельный сервер для разработки и тестирования нового функционала.
  • Поднят TeamSpeak сервер
  • Плановые работы по улучшению производительности и защиты серверов
  • Начата работа по улучшению работы почты
  • Настроен мониторинг серверов
  • Настроено бэкпирование базы и файлов
Благодарности

А также большое спасибо каждому, кто участвует в разработке, находит баги и создаёт задачи, поддерживает финансово, делится мыслями в чатах, голосует и так или иначе участвует в разработке сайта!

Ключевые слова: release project release drupal.ru Форумы: Сайт и проект Drupal.ru 13 Thanks

Drupal-школа - одиннадцатое занятие: подключение Google Analytics, выбор эффектов для стилей изображений

Drupal.ru - Пт, 29/09/2017 - 15:07

Подключаем к сайту на Drupal 8 Google для вебмастеров (Google Search Console) и Google Analytics. Настраиваем стили изображений, применяя различные эффекты.

Ключевые слова: друпалшкола Версия Drupal: Drupal 8.* Drupal 7.* Форумы: DrupalSib 0 Thanks

Ликбез #1: GitHub - инструкция к применению

Drupal.ru - Ср, 27/09/2017 - 15:07

Дисклеймер

Все персонажи вымышлены, события случайны. И вообще такого не может быть, потому как твои сайты в интернетах работают исключительно при помощи БВ[1] и от тебя ничего не зависит.

Не стоит повторять что-либо из нижеописанного без присутствия взрослых.

Предостережение:

Если весь твой скилл заключается в накликивании сайта из админки, если ты предпочитаешь colorpicker в настройке темы обыкновенной правке файлов стилей, а для установки кнопки “наверх” ты лезешь на орг, чтобы скачать соответствующий модуль, если всё это для тебя является нормой и потолком твоего развития, то можешь смело закрывать вкладку - дальше много букв, которые не принесут никакой пользы, а только вытеснят из кратковременной памяти что-то более ценное. Все остальные могут заказывать пиццу и усаживаться поудобнее.

1. Введение

Итак. Что же такое GitHub.com? Это сервис, который предоставляет удобный веб интерфейс для хранения, версионирования и управления версиями исходного кода ваших проектов. Для чего всё это нужно? - спросите вы. Давайте представим, что когда-то давно папин друг дядя Мага попросил вас сделать сайт для его Шаурмешной в Бирюлёво. И недавно он приходит в гости и говорит: “Здравствуй, дарагой. Целую твои мысли. На том чудо-сайте, что сотворила твоя ясная голова и искусные руки образовалась неведомая шайтан-хрень, которая не даёт покоя достопочтенным гостям моего-чуда сайта. Не мог бы ты, о лучезарный, ради Аллаха изгнать демона из святой обители?” Вы соглашаетесь, разворачиваете у себя сайт, находите место, на которое собственно сайт и ругался и даже не помните, что данный кусок кода писали вы сами и, возможно, даже помните, что так было сделано специально, но для чего? Давайте об этом и о многом другом поговорим более подробно.

2. Мир Git вашему дому коду.

Почему именно git? По большому счёту не важно какую систему версионирования вы будете использовать, будь то гит, свн или миркуриал. Я работал со всеми из них и больше предпочитаю гит. Различия и плюсы/минусы рассказывать считаю излишним. В контексте данного топика это не принципиально. Представьте, что вы построили дом с подземным гаражом, выложили стены, поставили крышу. Всё ок. Потом покупаете машину, а гараж для неё мал. Что делать? Разбирать весь дом, увеличивать гараж и собирать по новой как-то не комильфо. Вот бы был инструмент, который позволял бы легко увеличить гараж без переколбашивания всего остального. Так вот с системой версионирования это сделать проще простого. Как и многое другое.

Для минимального старта достаточно понимать как работает ветвление, зачем эти ветки нужны и минимальный набор команд:

  • init - создание репозитория
  • remote add - добавление удалённого репозитория
  • clone - копирование удалённого репозитория
  • add - добавление файлов для фиксации изменений
  • commit - фиксация изменений (может сопровождаться комментарием, чтоб не вводили в ступор ситуации из “Введение”)
  • push - отправка изменений в удалённый репозиторий
  • pull - получение изменений из удалённого репозитория
  • merge - слияние веток
  • checkout - создание/переключение локальных веток

Как правило, используется от 2-3х веток. Это master - та стабильная версия вашего когда, которая в данный момент работает на продакшене, devel - активная ветка, в которой ведётся основная разработка, staging или release - предпродакшн версия, для тестирования и отладки, в неё как правило допускаются коммиты с мелкими хотфиксами багов, выявленных во время тестирования и отладки. Релизных веток может быть сколько угодно, они обычно именуются и вешаются теги версий. Дабы не засорять репозиторий после слияния с мастер веткой они удаляются.
Потратьте вечер на знакомство с вашей будущей системой версионирования. Это сыграет немаловажную роль в вашей карьере программиста не зависимо от выбранного ЯП[2]
З.Ы. Код drupal.ru использует Git в качестве системы контроля версий

3. GitHub - утроба open source

GitHub.com позволяет располагать у себя исходный код ваших проектов, а так же даёт доступ к исходным кодам миллионов других открытых репозиториев. Тут можно создавать команды для совместной работы над какими либо проектами, хранить различные сниппеты и заметки, вести документацию для ваших проектов и конечно же развивать open source сообщество.

3.1 Ваш профиль

В первую очередь он служит вашей визитной карточкой для большинства работодателей, так ка показывает вашу активность, ваши репозитории, а так же коссвенно указывает на ваши интересы в сфере IT[3]. Как его прокачать и сделать привлекательным для потенциальных работодателей мы поговорим немного позже. А пока можете попрактиковаться в создании своих репозиториев или перенести к себе(форкнуть) понравившиеся чужие.

3.2 Аутентификация

GitHub.com для работы с вашими репозиториями предлагает на выбор 2 протокола - http и ssh. При использовании ssh сервис поддерживает аутентификацию по ssh ключам. Идентифицировать пользователя по ключу будет так же полезно и при подключении к вашим серверам по ssh. Подробнее о создании и использовании ssh-ключей можно найти в той же документации по git.

Ссылка

Там же внизу есть ссылка на документацию из самого github.com

3.3 Работа с репозиториями

Для ведения/управления вашего проекта на github доступны многие удобные инструменты. Это и wiki, где вы можете хранить внутреннюю документацию по проекту, список задач(issue), где собираются проблемы, связанные с ошибками, предложения по улучшению, и остальная информация, связанная с развитием проекта, pull requests - система предложения о внесении изменений в ветки репозитория с возможностью комментирования участков кода с удобным UI[4]. некоторые инструменты рассмотрим подробнее.

3.3.1 Issues

При использовании сторонних open source библиотек на своих проектах вы наверняка сталкивались с какими нибудь ошибками в коде этих самых библиотек, приходилось рыть интернеты в поисках заплаток, патчей или даже отказываться от библиотеки в пользу другой. Так вот, любой open source проект находится на каком-нибудь открытом сервисе, типа github или даже на нём самом. В описанной выше ситуации нужно посетить страницу данного проекта и убедиться, что он активно поддерживается(по временным меткам коммитов, по активности в issues) Если на проект забили, то у вас в принципе 2 варианта - найти для себя новую библиотеку, либо форкнуть(перенести себе) эту и развивать самостоятельно. Но представим, что проект активно развивается, вы заходите в issues и видите, что вашей проблемы нет в списке. В таком случае вы создаёте новую задачу, где описываете свои проблемы, связанные с использованием данной библиотеки. Это обратит внимание разработчиков на проблему, возможно они даже объединят с другой открытой задачей вашу (визуально это видно внутри самого issue). Так же внутри issue можно вести диалог с разработчиками при помощи комментариев.
Это намного удобней и продуктивней, чем постить на профильных форумах “ПАМАГИТИ”. Точно так же другие пользователи смогут создавать issue к вашим проектам, либо вы сами можете так делать(своего рода ToDo/менеджер задач для развития вашего проекта)

3.3.2 Pull Requests(PR)

Возвращаемся к ситуции выше. Вот вы нашли баг, написали issue, разработчики приняли в разработку. Вы сделали хорошо. А можно лучше? Ну конечно можно. Как правило ваша задача далеко не единственная в списке и написание, принятие и внедрение исправлений займёт какое-то время. Как же быть в таком случае? Можно помочь разработчикам и самостоятельно исправить докучающий баг. Так как никто не даст вам право бесконтрольно вносить свои изменения в основной код продукта, для этого существуют PRs, в которых Вы можете предлагать свои варианты решения проблем/улучшения. Для этого достаточно форкнуть себе репозиторий, внести изменения, закоммитить и создать PR в ветку основного репозитория с измениями из вашей ветки. (PR это предложение на слияние отдельных веток между собой, не нужно путать с целыми репозиториями) Разработчики могут принять/отклонить/прокомментировать с указанием на конкретные участки кода ваш PR. Если ваш PR не отклонили, то есть все шансы, что ваш код станет частью проекта, но сверлить дырку для ордена пока рановато. Если по вашему PR имеются комментарии, вы должны принять их во внимание и исправить те участки кода, к которым они относятся в своей ветке. Пока PR открыт, все ваши исправления после ревью попадают в него. Интерфейс PR довольно удобный, визуально можно видеть весь лог действий по PR: комментарии, коммиты… После исправления кода по комментам в интерфейсе они схлопываются, чтобы не отвлекать. И вот наступает тот момент, когда все пожелания/наставления учтены и разработчики принимают ваш PR. Ваш код становится частью проекта, все счастливы. Вы всё сделали отлично.
Так же при закрытии PR в свои проекты, если коммит или сам PR содержит ссылку на открытые/ую issue, при закрытии PR такие issue автоматически закрываются, что делает управление ещё удобное, так как нет необходимости вручную ходить и прокликивать.

3.4 Выводы

Для чего все эти сложности? На самом деле понимание, как всё работает приходит уже через пару дней работы с интерфейсом. Полный дзен наступает после первого успешного PR. Да, с виду кажется сложным и непонятным, но поверьте, на данный момент это лучшее устройство системы коммуникаций между разработчиками всего мира, которое существует на данный момент. Если придумаете лучше, то вы уже знаете что делать: issue->PR )))

4 Что дальше?

Сейчас компании, которые ищут сотрудников в области IT[3:1] обращают внимание на ваши профили в соответствующих сетях: github, drupal.org… где можно посмотреть вашу активность и примеры написанного кода. Это значительно сокращает время возможного собеседования, избавление от скучных и тупых тестовых заданий. Что нужно, чтоб на вас обратили внимание? Всё правильно - прокачивать свой профиль. Каким образом? Да всё тем же, issue, PR, свои какие-нить open source проекты… Вся ваша активность будет отображена в профиле.
Самый простой способ прокачки это открывать любые популярные интересные вам репозитории, читать issue и делать PR))) Тем самым вы помогаете всему сообществу, ну и себе конечно же)))
Чистого кода всем и профессионального роста.

Сноски:
  1. БВ - Божественное Вмешательство(примечание автора) ↩︎
  2. ЯП - Язык программирования ↩︎
  3. IT - Информационные технологии ↩︎ ↩︎
  4. UI - User Interface(пользовательский интерфейс) ↩︎
Тип материала: Предлагаю решение Версия Drupal: Drupal 7.* Форумы: Решение проблем 14 Thanks

Модуль-интеграция библиотеки jQuery-viewport-checker

Drupal.ru - Втр, 19/09/2017 - 18:50

Работая с библиотекой анимаций animate.css я понял, что хочу, чтобы анимации воспроизводились не при загрузке страницы, а когда пользователь прокручивает страницу до соответствующего элемента. Для этих целей совместно с animate.css используют библиотеку jQuery-viewport-checker. И если для animate.css есть соответствующий модуль интеграции, то для jQuery-viewport-checker его нет.

В чем смысл модуля? В том, что используется интеграция с Libraries API и что библиотеку можно включать-выключать модулем, а не правками кода.

Скачать модуль можно с официальной страницы проекта

Поучаствовать в разработке можно на GitHub

Внести пожертвование на развитие модуля можно тут

Тип материала: Предлагаю решение Версия Drupal: Drupal 7.* Форумы: Программирование 21 Thanks

Drupal-школа - десятое занятие: вставка видео и галерея изображений на Drupal 8

Drupal.ru - Вс, 17/09/2017 - 15:28

Настраиваем автоматическую генерацию путей материалов с помощью модуля Pathauto на Drupal 8. Работаем со стилями изображений, которые выводятся в полях материалов и представлениях.

Ключевые слова: друпалшкола Версия Drupal: Drupal 8.* Форумы: DrupalSib 1 Thanks

Первый всеобщий митинг русскоязычного сообщества Drupal

Drupal.ru - Ср, 13/09/2017 - 10:24


В следующую пятницу, 22го сентября в 19.00 мск мы устраиваем первый всеобщий открытый митинг русскоязычного сообщества, куда приглашаем всех участников со всех сайтов, блогов и сообществ имеющих отношение к Drupal. В ходе общения мы будем знакомиться, решать текущие проблемы и закрывать старые вопросы.

Вопрос о времени решаем в голосовании здесь
Вопрос о месте встречи (программе) решаем ниже в комментариях. Изначально проведение предполагается в Hangouts.

22 Сен 16:00 в 16:00 Вебинар 0 Спасибо

Интервью с участниками DrupalCamp Краснодар 2016

Drupal.ru - Пт, 08/09/2017 - 13:16

Вот и подошли к концу видео с DrupalCamp 2016 Краснодар и осталось нам посмотреть интервью с участниками, организаторами и спонсорами этого крутого мероприятия, так что смотрим, комментируем и ставим лайки!

Станислав Ревва о DrupalCamp 2016 Краснодар

Сергей Синица о том, остались ли организаторы Campа довольны тем, что у них получилось)

Отличия кэмпов со стороны заядлого Drupaler'а Николая Шаповалова в его интервью

Роман Агабеков о пользе от таких мероприятий для руководителей IT компаний

Мнение руководителя веб-студии Максима Хорошко о данном мероприятии. Отлично, работаем дальше)

Интервью организатора DrupalCamp White Night в Санкт-Петербурге Константина Комелина и выясняем различия Camp'ов

Интервью с Алексеем Синицей, который проводил хакатон на Camp'е и слушаем его мнение о проведённом мастер классе и мероприятии в целом

Интервью Дмитрия Дроздика, чтобы узнать, почему и зачем он взялся за разработку сайта для нашего мероприятия)

И еще интервью с Аланом Бондарчуком с DrupalCamp Краснодар 2016 в котором он делится своими впечатлениями о Краснодарском Campе.

И напоследок интервью с Александром Воиновым о DrupalCamp 2016 Краснодар

Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Ключевые слова: DrupalCamp DrupalYug Версия Drupal: Drupal 8.* Drupal 7.* Форумы: Drupal Юг 0 Thanks

Drupal-школа - девятое занятие: шаблоны адресов материалов на Drupal 8, стили изображений

Drupal.ru - Чт, 07/09/2017 - 03:16

Настраиваем автоматическую генерацию путей материалов с помощью модуля Pathauto на Drupal 8. Работаем со стилями изображений, которые выводятся в полях материалов и представлениях.

Содержание: установка и настройка модуля Pathauto; настройка шаблонов адресов типа материалов; создание представления, выводящее нужный список материалов; что такое стили изображений на Drupal; настройка нужного стиля изображения.

--
Drupal-школа - проект посвященный обучению школьников (13 гимназия, г. Новосибирск) веб-разработке на основе CMS Drupal 8. Поддерживается администрацией школы, сибирским сообществом друпаллеров DrupalSib и группой компаний i20.

Ключевые слова: друпалшкола Версия Drupal: Drupal 8.* Форумы: DrupalSib 0 Thanks

Окружение для веб разработки с Docker за 20 минут (Алан Бондарчук)[DrupalCamp Краснодар 2016]

Drupal.ru - Ср, 06/09/2017 - 05:47

Алан Бондарчук в своем докладе с Drupal Camp Краснодар 2016 показывает как легко и быстро поднять локальное окружение для веб-разработки с Docker и при необходимости подкрутить его под свои нужды.
Также в докладе есть информация о том, как подключить memcache, solr и другие инструменты и избавиться от модуля Devel.
Наш канал на YouTube -> https://www.youtube.com/user/drupalyug
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/docker-20

>> Все презентации с конференции "DrupalCamp Краснодар 2016"

Ключевые слова: DrupalCamp DrupalYug Версия Drupal: Drupal 8.* Drupal 7.* Форумы: Drupal Юг 1 Thanks
RSS-материал