Архив: Декабрь 2016

Поздравляем с наступающим Новым годом и Рождеством!

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

Источник: http://www.1c-bitrix.ru/about/life/news/4779817/

Поздравляем с наступающим Новым годом и Рождеством!

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

Источник: https://www.1c-bitrix.ru/about/life/news/4779817/

Panels – использовать или нет?

Пожалуй, нет ни одного другого модуля под drupal, о котором мнения разработчиков будут так же диаметрально различаться, как о Panels. То, что модуль гибок и функционален, не вызывает сомнений ни у кого, но вот целесообразность его использования многие ставят под вопрос. Я долгое время избегал использования панелей, чтобы не перегружать сайт лишними (как мне казалось) модулями. Старался обходиться блоками, но со временем стал замечать всё больше и больше недостатков и ограничений блочной системы Drupal. Поэтому однажды я решил поглубже разобраться в панелях и понял, что они порой дают неоспоримые преимущества перед любыми другими решениями. Итак, поехали.

Когда нужно использовать Panels

1. Если нужно выводить поле контента в другом регионе, либо вставить блок между полями.

Это можно сделать и без панелей, через views + блоки, но ведь вьюху ещё нужно создать и настроить, а в панелях прямо из коробки доступны панели со всеми отдельными полями контента. Более того, тут будет прирост по быстродействию, т.к. панели используют уже загруженный объект ноды из контекста, а вьюс возьмёт nid из url страницы и полезет за полем в базу.

2. Вывести один блок одновременно в два региона.

Панели позволяют любое содержимое вставлять в макет страницы сколько угодно раз. К слову, вовсе не обязательно выводить блок на страницу дважды, задача может стоять так, чтобы вывести блок на одних страницах в одном регионе, а на других в другом. Блочная система не позволяет этого сделать, а панели – запросто.

3. Сделать разный шаблон для разных словарей таксономии.

Если вам нужно выводить блок на страницах терминов одного словаря, а на страницах другого не нужно, то кроме панелей, это ничем не решить. Можно, конечно, сделать костыль – включить пхп-фильтр и задать в конкретных блоках пхп-условие видимости, но php-фильтр лучше не использовать никогда. И вообще, панели работают с таксономией значительно лучше, чем тот же Taxonomy Display. В частности, при использовании Taxonomy Display не работают Ajax Facets.

4. Работа с фасетами

Во-первых, при использовании панелей не нужно создавать тот странный невидимый блок для фасетов. Во-вторых, в интерфейсе фасеты идут отдельной категорией, не смешиваясь с остальными блоками. Тот, кто делал магазин хотя бы на 20-30 фасетов, должен оценить это преимущество.

5. При наличии в дизайне сайта большого количества разных шаблонов со сложной структурой колонок.

Во-первых, панели позволяют использовать гибкие лэйауты либо легко создавать свои. Есть также модуль Radix Layouts, который сожержит около 30 разных лэйаутов, совместимых с bootstrap. Во-вторых, как было сказано выше, вы можете выводить один блок в разных лэйаутах в разные регионы, что не позволяет делать блочная система. В третьих, при использовании CSS-фреймворков с сетками, вы можете легко задавать панелям нужные классы и id, чтобы выстроить их по сетке.

6. Если нужно выводить на страницу что-то дико кастомное.

Панели используют Ctools API, которое позволяет легко выводить что угодно и как угодно при довольно простом коде. Более того, подобные задачи – одни из самых любимых на собеседовании у многих работодателей, поэтому овладеть этим кун-фу будет в любом случае полезно

Когда не нужно использовать Panels

1. Когда у вас на сайте всего три одинаковые страницы и полтора блока.

2. Когда вы не поняли ничего из того, что было написано выше

Примечания

1. Чтобы не сломать головной мозг, при использовании панелей лично я рекомендую использовать в теме всего один регион, в котором будет всего один блок. В крайнем случае можно вывести ещё хэдер и футер, но в этом далеко не всегда есть необходимость.

2. Всё вышесказанное относится к Drupal 7, в восьмой версии функционал панелей сильно урезан, а функционал блоков наоборот – расширен.

И традиционная спам-ссылка на оригинал статьи в моём говноблоге: http://wellsolutions.by/article/panels-ispolzovat-ili-net

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Установка и настройка 3 Спасибо

Источник: http://www.drupal.ru/node/131309

Drupal 8 CI/CD c Docker и CircleCI

перевод (рус.) статьи Drupal 8 CI/CD with Docker via CircleCI

Автор @csandanov


В этой статье я продемонстрирую организацию работы CI для вашего Drupal8 сайта, используя Docker. Мы будем использовать CircleCI в качестве CI/CD (непрерывная интеграция/доставка) инструментария и docker4drupal для тестового окружения.
Это статья из двух частей. В первой части мы создадим наш CircleCI, развернем тестовое окружение используя docker4drupal контейнер, и запустим несколько наборов тестов из ядра.
Во второй части, мы подготовим архив для выгрузки на AWS S3. Затем мы развернем новое окружение для Drupal на базе Docker, и выгрузим туда свой архив.

Непрерывная интеграция

Изначально, добавим проект на CircleCI. Я буду использовать свой публичный репозиторий drupal (являющийся форком оф. Drupal репозитория). Как только вы добавите свой проект, CircleCI будет автоматически запускать сборку при каждом коммите.

Тестовое окружение

Добавьте следующий docker-compose.yml файл в свой репозиторий, это упрощенная версия docker4drupal:

version: "2"

services:
  mariadb:
    image: wodby/drupal-mariadb
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: 1
      MYSQL_DATABASE: drupal
      MYSQL_USER: drupal
      MYSQL_PASSWORD: drupal

  php:
    image: wodby/drupal-php:7.0
    environment:
      PHP_SITE_NAME: dev
      PHP_HOST_NAME: localhost:8000
      SIMPLETEST_BASE_URL: http://nginx
      SIMPLETEST_DB: mysql://drupal:drupal@mariadb/drupal
    volumes:
      – ./:/var/www/html

  nginx:
    image: wodby/drupal-nginx
    environment:
      NGINX_SERVER_NAME: localhost
      NGINX_UPSTREAM_NAME: php
      DRUPAL_VERSION: 8
    volumes_from:
      – php

docker-compose.yml определяет набор служб/контейнеров для тестового окружения. Кроме PHP, нам нужны MariaDB и Nginx контейнеры, так как мы будем запускать функциональные тесты, которым необходимы веб-сервер и сервер базы данных. По той-же причине, мы добавили две переменные для Simpletest в PHP контейнер.

Сборка CircleCI

Добавим следующий circle.yml файл в свой репозиторий для ручной сборки:

machine:
  pre:
    – curl -sSL https://s3.amazonaws.com/circle-downloads/install-circleci-docker.sh | bash -s — 1.10.0
  services:
    – docker
dependencies:
  pre:
    – rm /opt/circleci/php/$(phpenv global)/etc/conf.d/xdebug.ini
  override:
    – sudo pip install docker-compose
    – docker-compose up -d mariadb
    – docker-compose up -d nginx
test:
  pre:
    – composer global require "hirak/prestissimo:^0.3"
    – composer require "wikimedia/composer-merge-plugin:~1.3" –no-interaction
    – composer update -n
    – composer update -n -d ./scripts
    – sudo chown -R 82:82 .
  override:
    – docker-compose run –user 82 php vendor/bin/phpunit -c core core/tests/Drupal/Tests/Core/Password/PasswordHashingTest.php
    – docker-compose run –user 82 php vendor/bin/phpunit -c core core/tests/Drupal/KernelTests/Component/Utility/SafeMarkupKernelTest.php
    – docker-compose run –user 82 php vendor/bin/phpunit -c core core/tests/Drupal/FunctionalTests/Breadcrumb/Breadcrumb404Test.php

Давайте быстро пробежим по его секциям:

machine: установит docker 1.10 версии (дефолный 1.8 здесь не сработает) dependencies: в зависимостях мы убрали xdebug (из соображений производительности), установили docker-compose, прикрутили mariadb и nginx службы, определенные в нашем docker-compose.yml файле. test: сначала, посредством composer, мы получим зависимости Drupal и зависимости для Wodby PHP SDK в каталог ./scripts. Сменим владельца на 82, это id пользователя www-data в php/nginx контейнерах. Так-же, в секции override, мы запускаем 4-ре набора тестов (unit и функциональные) из ядра Drupal.

Запуск сборки

Теперь у нас есть все необходимое. Включим в коммит все добавленные файлы. CircleCI автоматически запустит процесс сборки:

Запустит наши тесты:

Все тесты проходят. Это значит, что мы можем перейти ко второй части, в которой развернем нашу сборку.

Непрерывная доставка

Это не универсальное руководство по доставке вашей сборки в рабочую среду. Все зависит от вашего рабочего процесса и инфраструктуры.

Кроме того, с докером возможны два варианта:

Доставка кода (архив развертки) Доставка контейнера docker с кодом

В этой статье мы рассмотрим первый вариант, доставим код в инфраструктуру, подготовленную Wodby. Мы подготовим архив развертки и выгрузим его на AWS S3. Затем, развернем наше новое окружение для Drupal на базе docker с помощью Wodby, и отправим в него наш архив с кодом.

Добавим следующие строки в circle.yml файл:

deployment:
  production:
    branch: /.*/
    commands:
      – tar -c –exclude=‘.git’ –exclude=‘.gitignore’ –exclude="./docker-runtime" . | gzip -9 | aws s3 cp – "s3://$AWS_S3_BUCKET/$AWS_S3_FILE_NAME-$CIRCLE_BUILD_NUM.tar.gz"
      – php -f ./scripts/wodby.php

В секции deployment мы создаем архив с кодом и загружаем его на AWS S3 хранилище. Мы запустим wodby.php скрипт, который будет выгружать новый экземпляр Drupal приложения на сервер, подключенный к Wodby.

Простое безопасное хранилище AWS

Мы используем AWS S3 для хранения архива развертки, так как он интегрирован с CircleCI, но вы можете использовать любое другое хранилище. Откройте консоль AWS S3 и создайте новый бакет:

Перейдите к AWS IAM сервису, и создайте нового пользователя для CircleCI. Скопируйте сгенерированные ключи (Access Key Id и Secret Access Key), они нам понадобятся позднее.

Добавьте к правам этого пользователя AmazonS3FullAccess политику:

Теперь, открыв настройки проекта CircleCI, и перейдя к AWS разрешениям, добавьте ваши ключи:

Доставка сборки посредством Wodby

Развертка вашего Drupal сайта с Wodby. По умолчанию, создается dev экземпляр. Мы будем создавать его копию, и импортировать ее в наш архив кода посредством Wodby PHP SDK. Сборка (набор контейнеров) от Wodby на 95% состоит из docker4drupal контейнеров.



Скрипты доставки

Скопируйте следующие скрипты из этого репозитория (кат. circle-ci) в свой Drupal project:

wodby.php этот скрипт развернет новый экземпляр приложения, развернутого с Wodby и импортирует сборку composer.json здесь указанна Wodby PHP SDK, как зависимость для нашего php скрипта

Этот скрипт использует Wodby PHP SDK для развертки новых экземпляров приложения на сервере, подключенном к Wodby, а после, импортирует архив развертки из AWS S3.

Настройка переменных окружения

Нам необходимо определить следующие переменные окружения и токены для наших скриптов доставки. Мы можем сделать это на странице настроек нашего CircleCI проекта:

AWS_S3_BUCKET имя вашего AWS S3 бакета, из которого выгружается архив развертки AWS_S3_FILE_NAME базовое имя архива (вы можете использовать название проекта), к которому номер сборки будет добавлен как суффикс WODBY_API_TOKEN вы можете скопировать этот токен со страницы вашего профиля Wodby WODBY_SERVER_ID на панели управления Wodby, перейдите на стр. серверов и скопируйте ID из адресной строки


WODBY_APP_ID перейдя на стр. приложений в панели управления Wodby, копируйте Application UUID на вкладках Настройки -> Информация WODBY_SOURCE_INSTANCE_ID Там-же копируйте Instance UUID. Этот экземпляр будет использован как источник базы данных и файлов для нового экземпляра.

Запуск сборки

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

Теперь, мы имеем только-что созданный экземпляр с информацией о нашей сборке:

Это наш результат. Все необходимое, вы можете найти в этом репозитории, в каталоге circle-ci

Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.* Ключевые слова:  docker deploy




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Установка и настройка 2 Спасибо

Источник: http://www.drupal.ru/node/131184

«1С-Битрикс» спасет интернет-магазины от штрафа от 30 000 рублей за каждую транзакцию

Компания «1С-Битрикс» представила новую версию платформы «1С-Битрикс: Управление сайтом» 17.0. Самыми важными новинками стали: ●    инструменты для работы интернет-магазинов по новому 54-ФЗ «О применении контрольно-кассовой техники», сервис «Перехват клиента» для увеличения числа повторных продаж, расширение возможностей онлайн-чата на сайте, комплекс нововведений для Enterprise-проектов.

Источник: http://www.1c-bitrix.ru/about/life/news/4629541/

«1С-Битрикс» спасет интернет-магазины от штрафа от 30 000 рублей за каждую транзакцию

Компания «1С-Битрикс» представила новую версию платформы «1С-Битрикс: Управление сайтом» 17.0. Самыми важными новинками стали: ●    инструменты для работы интернет-магазинов по новому 54-ФЗ «О применении контрольно-кассовой техники», сервис «Перехват клиента» для увеличения числа повторных продаж, расширение возможностей онлайн-чата на сайте, комплекс нововведений для Enterprise-проектов.

Источник: https://www.1c-bitrix.ru/about/life/news/4629541/

Недостаточная фильтрация данных

Проблема: Недостаточная фильтрация данных.

Ошибка в версии: 11.1 и ниже

Степень опасности: Высокая

Для исправления откройте файл: /engine/classes/parse.class.php и найдите: if( preg_match( "/[?&;%<\[\]]/", $url ) ) { if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]"; else return "[img]" . $url . "[/img]"; }

замените на if( preg_match( "/[?&;%<\[\]]/", $url ) ) { return $matches[0]; }

Источник: https://dle-news.ru/bags/v11/1706-nedostatochnaya-filtraciya-dannyh.html

Недостаточная фильтрация данных

Проблема: Недостаточная фильтрация данных.

Ошибка в версии: 11.1 и ниже

Степень опасности: Высокая

Для исправления откройте файл: /engine/classes/parse.class.php и найдите: if( preg_match( "/[?&;%<\[\]]/", $url ) ) { if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]"; else return "[img]" . $url . "[/img]"; }

замените на if( preg_match( "/[?&;%<\[\]]/", $url ) ) { return $matches[0]; }

Источник: http://dle-news.ru/bags/v11/1706-nedostatochnaya-filtraciya-dannyh.html

DataLife Engine v.11.2 Final Release

Дорогие друзья,

Представляем вам новую версию нашего скрипта DataLife Engine v.11.2. В данном релизе вас ожидает поддержка двух факторной авторизации, новый парсер текстов публикаций, возможность автоматического вывода меню категорий, новая более безопасная система хранения паролей и многое другое, об этом и другом читайте подробнее …

Источник: https://dle-news.ru/release/1705-datalife-engine-v112-final-release.html

DataLife Engine v.11.2 Final Release

Дорогие друзья,

Представляем вам новую версию нашего скрипта DataLife Engine v.11.2. В данном релизе вас ожидает поддержка двух факторной авторизации, новый парсер текстов публикаций, возможность автоматического вывода меню категорий, новая более безопасная система хранения паролей и многое другое, об этом и другом читайте подробнее …

Источник: http://dle-news.ru/release/1705-datalife-engine-v112-final-release.html

Эффективная разработка фронтенда на Drupal


В этой статье речь не пойдёт о новомодных ES6-фреймворках и headless-drupal. Речь пойдёт о банальной вёрстке. И не спешите закрывать страницу, если вы гордо именуетесь бэкенд девелопером, т.к. часть из рассматриваемых вопросов частично касается и бэкенда, ведь банальный альтеринг формы для добавления нужных классов и обёрток лежит как раз в зоне ответственности бэкенда. А тому, кто сам и верстает, и кодит, тем более должно быть интересно.

Сразу оговорюсь, что имеется в виду разработка коммерческих сайтов с уникальным дизайном, т.е. по макетам, нарисованным профессиональным дизайнером, не лишённым навыков и чувства вкуса. Под словом “эффективность” понимается простота и скорость самого процесса разработки. Изложенная ниже информация почерпнута не из умных книжек, а из жизненного опыта. Итак, начнём.
1. Выучи уже наконец-то CSS!
Звучит глуповато? Но не настолько глупо, как вопросы разработчиков с почти 10-летним стажем о том, как увеличить кнопку при наведении. Нормальные люди в помощью CSS рисуют попугаев и даже создают игры, а ты даже не знаешь, как приделать треугольничек к всплывающей подсказке, не вводя новых html-элементов. Изучи каскады, специфичность, анимации через transition и keyframes, гадиенты там всякие, особенности разных position, псевдоклассы, псевдоэлементы. И не мучай людей дурацкими вопросами – всё давно написано в гугле.

2. Используй препроцессоры.
SASS или LESS – это по вкусу, но ни в коем случае не копайся в богомерзком CSS! Недавно слышал мнение одного признанного специалиста, что ему препроцессоры не нужны, т.к. в его проектах обычно поверх базовой темы порядка 200 строк оверрайда CSS. Ну если ты делаешь сайты для гиков вроде себя или меня, то бутстрап с другим логотипом вполне сойдёт, а нормальным людям такое не интересно, поэтому и денег тебе за такое никто не даст. В любом коммерческом сайте будет от 3000-5000 строк CSS и выше, потому используй препроцессоры, чтобы не копипастить куски длинных селекторов и не насиловать скролл в поисках нужного цвета. Что касается сборщика (компилятора), сейчас в моде gulp. Хотя можно использовать и что-нибудь другое, более того, при должном умении тебя не будет смущать, что проект до тебя скомпилировали чем-то другим, если он попал к тебе на доработку, можешь перекопилировать тем, чем тебе удобно, главное, предварительно изучить старый конфиг, чтобы не упустить ничего, например автопрефиксер. А некоторые вообще компилят LESS и SASS саблаймом или PHPStorm-ом, что, должно быть удобно, но не так гибко настраиваемо.

3. Используй CSS-фреймворки.
Благо их полно на любой вкус. Никто не сомневается в твоих способностях задавать ширину колонкам, но фреймворки принято использовать лишь потому, что многие вещи там сделаны до тебя. Вопреки распространённому мнению, CSS-фреймворки не делают сайты похожими друг на друга. Любой вменяемый дизайн можно сделать одинаково хорошо на любом фреймворке, либо без него, внешне различий не будет, но будут различия в затраченном времени. Не забываем предыдущий пункт, поэтому должно быть ясно, что под CSS-фреймворком понимается его SASS или LESS-версия. Раньше я использовал Zen-grids, сейчас использую Bootstrap. Бутстрап, конечно, будет помощнее. Бутстрап – это не только сетка и менюшка-гамбургер. Там полно совершенно потрясающих вещей, таких, как bootstrap-modal, с помощью которого достаточно обернуть блок в нужный класс и сделать ссылку с нужным классом, по клику на которую блок будет всплывать в модульном окне, а по умолчанию он будет скрыт. Весьма удобно для небольших форм, например обратного звонка. А буквально на днях я узнал, что там есть даже карусель Пусть и сильно простая, но иногда сойдёт. В общем, не поленись изучить документацию по используемому фреймворку и жить станет легче.
4. Наследуйся от базовых тем.
Под любой распространённый фреймворк есть базовая тема drupal. Благодаря использованию базовой темы, ты получишь уже сконфигурированный фреймворк, останется только навести красоту. Более того, я рекомендую использовать те темы, которые поддерживают создание субтем через drush, ибо взрослому дяде не подобает руками копаться в файлах, копируя и переименовывая их. Именно поэтому я использую не bootstrap, а  Radix. Есть там правда один маленький косяк, я писал об этом здесь, но пока не пофиксили, т.к. надо будет немного переписать drush-команду. Обязательно изучи документацию по используемой теме, в первую очередь почитай, как там надо запускать Gulp. Некоторых смущает, что в базовых темах и генерируемых субтемах “много хлама”. На самом деле это не так. Там отражён правильный и стандартизованный подход к темизации, а если ты привык всё валить в один файл – переучивайся.

5. Всегда начинай вёрстку с переопределения variables.
Есть в любой нормальной теме файл _variables.scss или _variables.less. В этом файле описаны все базовые переменные – брейкпоинты, цвета, размеры и типы шрифтов и т.д. Этот файл нужно обязательно изучить вдоль и поперёк и переопределить всё под текущий проект, ибо не зная этого, можно написать десятки строк кода, переопределяя, к примеру, цвет и размер инпутов вместо того, чтобы задать значения двум-трём переменным.

6. Сделай нормальную легенду цветов.
Легенда цветов должна быть по схеме “название цвета: код цвета; назначение цвета: название цвета”. Почему? Расмотрим пример:

$gray: #ccc;
input {
  background-color: $gray
}
button {
  color: $gray;
}

Вроде бы всё круто. Если нам понадобится сменить оттенок серого, то мы можем сделать это в одном месте. А что будет, если нам для кнопок и инпутов вдруг понадобится два разных оттенка? Придётся лезть в код и выискивать, где мы применяли переменную $gray и менять её на другую. Но ведь можно сделать проще:

$gray: #ccc;
$input_bg: $gray;
$button_color: $gray;
input {
  background-color: $input_bg;
}
button {
  color: $button_color;
}

Теперь мы можем просто присвоить новое значение для $button_color и не париться с поиском его упоминаний. Может быть на двух цветах это выглядит неочевидно, но когда у нас в реальном проекте с десяток цветов и несколько десятков групп элементов, то это очень полезно.

7. Используй классы фреймворка в шаблонах.

Это очень удобно, когда ты просто переопределил шаблон, а у тебя уже всё стоит на своих местах. Не забывай, что классы можно назначать и из админки, например в панеляхи представлениях, но порой этого недостаточно и бывает проще создать пару новых шаблонов, чем потом мучаться определять всё в стилях. Кстати, для любителей панелей и bootstrap есть замечательный модуль  Radix Layouts, который содержит порядка 30 лэйаутов для панелей, оптимизированных под bootstrap. Модуль совместим с любыми темами, использующими bootstrap.

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

Кстати, во многих фреймворках есть миксины, имитирующие поведение стандартных классов, поэтому вовсе не обязательно писать на каждую мелочь шаблоны или препроцессы и уж тем более не обязательно вручную задавать все ширины и отступы, когда можно просто написать что-то вроде “@include make-sm-column(3)” и элемент будет вести себя так же, как если бы у него был класс “.col-sm-3″.

8. Структурируй код
Не вали весь свой код в один файл. Подключай импортом к одному файл много своих less или sass-файлов и компилируй их в один css. В большинстве распространённых тем в субтеме уже есть множество заготовок в виде пустых файлов.
Если надо, создавай свои файлы, главное, чтобы стили в них были объединены тематически. Зачем так делать? Есть три причины:
1. Звук скролла твоей мышки раздражает окружающих.
2. От обильного пользования скроллом может развиться туннельный синдром
3. Преждевременно вышедшие из строя мышки загрязняют окружающую среду.
Если этих причин недостаточно, то поверь на слово, что навигация по коду становится намного более быстрой, порой можно даже не смотреть номер строки в фаербаге, ведь и так понятно, в каком файле текст, а в его 200 строках всё как на ладони.

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

nav > li {
  display: block;
  @include breakpoint(md) {
    display: inline-block;
  }
}

Например, как в примере выше. Тут мы использовали миксин breakpoint – довольно удобная штука, подобное есть во многих фреймворках, поэтому не лишним будет изучить, как пользоваться этим миксином. Как правило, breakpoint задаёт min-width, следовательно, правила по умолчанию пишутся под самый маленький экран и с увеличением экрана могут переопределяться. Однако по ситуации можно писать и более сложные запросы, например, с указанием максимальной и минимальной ширины одновременно. И конечно же, не забудь про @media print {} ! В 21 веке только идиоты пишут какой-то отдельный функционал для версий для печати, а у нормальных людей под печать просто отдельные правила CSS.

10. Используй миксины
Любой фрагмент кода, состоящий из более, чем трёх строк, встречающийся в коде более двух раз, уже достоин того, чтобы стать миксином. Заверни в миксины всякие часто встречающиеся в проекте градиенты, тени и т.д.

11. Не используй монструозные модули для слайдеров

Взять к примеру тот же Slick – чтобы повесить его на вьюху, надо скачать библиотеку Slick, установить его модуль, а также отдельный модуль для вьюс и ещё чёрти что. И это для того, чтобы получить интерфейс с десятками настроек, которые надо настраивать отдельно под каждый слайдер на сайте. А потом ещё будешь, как дурак, переопределять его стандартные стили. Зачем? Можно же проще – берём slick.min.js, подключаем его к своей теме, а в скрипте темы инициализируем slick всего парой строчек js. При этом html-разметку вообще не надо переопределять.

Вангую вонь в комментах по поводу того, что нет смысла подключать скрипт, который, возможно, нужен не на всех страницах. Могу сразу ответить на это: slick.min.js месит 41 килобайт и при включенной агрегации js пусть лучше он загрузится на первой странице, закэшируется в браузере и не будет создавать при загрузке других страниц лишник http-запросов.

12. Удаляй из шаблонов лишние обёртки
Ни для кого не секрет, что html-код, выдаваемый друпалом по умолчанию избыточен и содержит множество обёрток. Нельзя сказать, что это большая проблема, но и хорошего в этом мало, ведь на некоторых страницах количество байт разметки может превышать количество информативного текста, а это всё паразитный трафик. Поэтому я при переопределении любых шаблонов всегда смотрю, какие из обёрток мне не нужны, ведь простую разметку и верстать легче. Но тут главное не переборщить – некоторые из обёрток могут быть критически важны для AJAX-запросов.

Ну вот, пока у меня всё. Надеюсь, мой стиль изложения не задел ничью тонкую душевную организацию

И традиционно в качестве пиара моего говнобложика ссылка на оригинал статьи: http://wellsolutions.by/article/effektivnaya-razrabotka-frontenda-na-drupal

Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  drupal верстка frontend




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Дизайн и вёрстка 4 Спасибо

Источник: http://www.drupal.ru/node/131103

Как интернет-магазин «Глобус Гурмэ» на «1С-Битрикс» встал в один ряд с крупными мировыми сетями

Сеть гастрономов премиального сегмента запустила уникальный для России интернет-магазин. Справляться с заданными высотами компании помогает платформа «1С-Битрикс», которая обеспечивает непрерывность бизнес-процессов даже в моменты пиковых нагрузок, а также контролирует качество выполняемых процессов.

Источник: http://www.1c-bitrix.ru/about/life/news/4569089/

Как интернет-магазин «Глобус Гурмэ» на «1С-Битрикс» встал в один ряд с крупными мировыми сетями

Сеть гастрономов премиального сегмента запустила уникальный для России интернет-магазин. Справляться с заданными высотами компании помогает платформа «1С-Битрикс», которая обеспечивает непрерывность бизнес-процессов даже в моменты пиковых нагрузок, а также контролирует качество выполняемых процессов.

Источник: https://www.1c-bitrix.ru/about/life/news/4569089/

Новогодняя акция. Две лицензии по цене одной!!!

Дорогие друзья,

мы сердечно поздравляем вас с наступающими праздниками. Желаем вам всего самого наилучшего в наступающем новом году. Желаем вам успехов и процветания. Ну а как известно какой же праздник обходится без подарков, тем более такой всеми любимый праздник, поэтому следуя нашим ежегодным традициям мы объявляем о начале предрождественской и предновогодней распродажи. Всем кто приобретает новую лицензию на наш скрипт в период с 1 декабря по 31 декабря 2016 включительно, мы дарим вторую аналогичную лицензию бесплатно.

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

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

Еще раз поздравляем вас с наступающими праздниками.

С Уважением,
ООО “Софтньюс Медиа Групп”

Источник: http://dle-news.ru/info/1704-novogodnyaya-akciya-dve-licenzii-po-cene-odnoy.html

Скидки 10-50% на все продукты «1С-Битрикс»

Для реализации ваших бизнес-целей с 1 декабря 2016 и по 9 января 2017 года в «1С-Битрикс» действует акция «Сила в скидках!»

Источник: http://www.1c-bitrix.ru/about/life/news/4559527/

Скидки 10-50% на все продукты «1С-Битрикс»

Для реализации ваших бизнес-целей с 1 декабря 2016 и по 9 января 2017 года в «1С-Битрикс» действует акция «Сила в скидках!»

Источник: https://www.1c-bitrix.ru/about/life/news/4559527/

© 2009 Обзор CMS