Рубрика "Новости"

План развития drupal.ru

Всем привет!

Многие уже знакомы с постом, ознаменовавшим перемены на drupal.ru и уход Егора (@gor) со всех позиций связанных с drupal.ru. Вместе с этим, сменился и координатор сайта сообщества, им стал Максим Баев. Со временем стало понятно, что одному человеку сложно направлять такое большое сообщество. Появилась необходимость разбить процесс развития сообщества на направления и найти желающих заниматься каждым из них, но об этом позже.

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

Текущее состояние дел План на ближайшее будущее Социальный Стратегический Общение Технический Критические задачи Глобальные задачи Функциональные задачи Минимум задач, которые стоят передо мной О том, что сделано за последние недели Итог

Но прежде…

Кто такой Максим Баев (mbaev)

Привет, это я!
Раз уж я являюсь куратором проекта на текущий момент, то будет справедливо немного рассказать о себе.
Познакомился с Друпалом примерно в 2009 году, начал зарабатывать на нём примерно в 2011, а с 2012 года занимаюсь уже профессиональной разработкой, глубоким кодингом и организацией архитектуры приложений. В своём арсенале на drupal.org имею информационную помощь сообществу, правки документаций и багрепорты, в том числе о несекьюрных дырах в популярных модулях. Также веду блог с заметками о Друпале и других околопрограмистских темах. Владею опытом координатора и идейного лидера игрового сообщества (~700 человек с постоянным онлайном минимум 50 человек).
Не участвовал в конфликтах на drupal.ru.

За исключением случая с Виктором Степаньковым (RxB), когда я отказался удалять его материалы.
Всё ещё надеюсь мы найдём общий язык и начнём наше взаимоотношение заново.

Терпелив.
Ровно год назад получил апрув на полное визуальное изменение и начал переработку текущей версии drupal.ru. В феврале этого года уже пошёл фидбэк, по которому прототип шлифовался, и через месяц он был опубликован на сайте http://drupal.mbaev.com.
Активный участник не в конфликтах, но в жизни сайта. Дальнейшее развитие вижу только в одном ключе: установка фикс-поинта в текущем времени, после которого будут забыты конфликты прошлых лет. Дальше мы вместе, с удвоенной силой, будем тянуть лямку развития русскоязычного сообщества. Таким образом, мы добьёмся репутации мощного сообщества в Друпал-мире и предложим провести DrupalCon 2019 в России!

Текущее состояние дел

На очередном обсуждении состояния drupal.ru, меня выдвинули в качестве координатора, выразив таким образом своё доверие, за что всем большое спасибо! От меня было предложение найти человека со свободным временем, инициативой и желанием, но в текущей, сумбурной ситуации такого не нашлось и я беру на себя роль временного координатора drupal.ru в течении следующих 3-х месяцев.

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

Зачем нужны тимлиды

Появлению этого состава послужило много причин:

Если координатор проекта внезапно пропадёт, то эти ребята гарантируют, что работа не остановится. Т.е. это некая гарантийная подушка между куратором и инициативной группой Это один из способов снять вопрос, который иногда звучал “один человек всё решает”. Но это не отменят главный механизм разработки с помощью инициатив и открытого голосования Каждое из направлений – это большой кусок, которые нельзя укусить одновременно Это один из пунктов тимбилдинга. Гораздо интересней делать дело с командой Они будут принимать решения гораздо быстрей, чем это будет делать один человек

Также, если Вы можете предложить своё участие в каком-либо направлении, то тимлиды помогут начать. Они берут на себя ответственность за развитие деятельности, решения в спорных ситуациях и организационных вопросах. А главное, они смогут более качественно проследить за открытостью всех процессов от выдвижения идеи до её внедрения.

Это та новая структура, которая позволит нам, путём перевыборов каждые пол года:
во-первых, продлевать творческую работу для тех кто заслужил доверие;
во-вторых, закончить работать тем, кто по каким-либо причинам не может или не хочет продолжать.
Детали условий в Уставе.

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

Модераторский отдел Тахтабаев Ильдар (Tahtabaev) Связь с общественностью Денис Маслов (radionete) Технический отдел Максим Баев (mbaev) Продвижение (SEO) Денис Маслов (radionete) Редакторский отдел Денис Маслов (radionete) Графическое оформление Александр Матросов (multpix) Финансы Максим Баев (mbaev) План на ближайшее будущее Всё, что я напишу далее можно считать только моим мнением и видением развития сообщества. Оно не было обговорено или согласовано с кем-либо. Это видение будет обсуждаться и моё дальнейшее участие будет напрямую зависеть от того, насколько оно совпадает с мнением сообщества. Социальный

Есть мнение, что пора заканчивать заниматься самоуничтожением, собирать тех людей, кто готов конструктивно разговаривать об улучшениях, нововведениях и работать над их внедрением. Только сообща, только с помощью открытых голосований, но в разумных рамках, ибо в открытых сообществах процессы текут медленно, а ждать результатов голосования несколько дней, чтобы добавить очевидно необходимую метрику на сайт – не разумно. Здесь тимлид может дать апрув под свою ответственность. Считаю, что ввести периодические видео-митинги – хорошо. Спринты с релизами – обсуждаемо. Общение в чатах – не обязательны. Общение в раздельных чатах – плохо.
Если цель общая, то придётся поступиться с некоторыми своими принципами и переступить гордыню. Это сложно, но нужно уметь прощать во имя общей цели. В конечном итоге, останутся те, кто адаптирован на коллаборацию – закон природы и с этим ничего не поделать.

Стратегический

Как бы это ни было горько, но за 10 лет текущий формат изжил себя. Сейчас drupal.ru уже больше чем просто форум! Это большая община: профессиональные разработчики, ученики, студенты, студии, работодатели, организаторы кэмпов и пора уже дать то, чего всем так сильно не хватает! Заказчикам – иметь возможность не быть униженными, ученикам – найти ответы на вопросы, организаторам кэмпов – возможность быстро доставлять информацию до максимального количества потенциальных участников и возможность планировать мероприятия, а база в 70 000 пользователей только и ждёт этого. Уверен, что в ваших головах полно других идей.

Общение Приходи ради программы, оставайся ради сообщества!

Общение на форуме – это наиважнейшая составляющая сего окружения, которой должно уделяться особое внимание. Как сообщество не может развиваться без популяризации Друпала, так и популяризация не может продвигаться без привлечения новых людей. Помощь новичкам в поиске информации – вот одна из основных жилок для привлечения новых людей, которую выработал этот форум за долгие годы. Кроме этого, неотъемлемым фактором является простое, человеческое общение ведь Друпал комьюнити известно своим доброжелательным отношением к людям, которое является основой Кодекса поведения (англ) в сообществе Друпал.

Технический

Ответственность за техническую часть также лежит на мне. Всё, что касается деплоя, процесса разворачивания локального окружения, репозиторий на GitHub и поддержка хостинга и т.д. Помогать в настройке всего этого будет крутой спец, который имеет безграничный лимит моего доверия и для многих не нуждается в представлении – Даниэль Ишмаев (@dan).
В целом, этот раздел требует особого внимания и более подробного разъяснения. Он заслуживает отдельного поста или видео-чата. Пока же, мы ограничимся основными идеями.

Критические задачи

Это те задачи, которые нужно сделать как можно быстрее и желательно ещё вчера.

Окружения. На данный момент есть только продакшн окружение и даже почту мы восстанавливали тестируя здесь. Это первая и критическая задача, работу над которой мы начнём в ближайшие дни. Деплой. В данный момент, работа парализована отсутствием деплоя т.к. он не был восстановлен в том виде, в котором был, до переезда. Причина, которая блокирует выполнение этого задания – отсутствие окружений. Перенос новой версии. Этой процедурой мы протестируем деплой и доставку кода, через все окружения, до прода. Глобальные задачи Процесс развёртывания проекта локально. Будем делать его максимально простым. Донат. Теперь drupal.ru находится на собственном обеспечении. Поэтому мы создали страничку, где каждый может пожертвовать любую сумму на поддержку стабильной работы форума и развитие сообщества в целом. Модерирование. Текущий формат модерирования имеет право на жизнь в местах, с постоянным доходом, где можно нанять взвод модераторов, а при необходимости заменить. Модерация – это неприятное и неблагодарное занятие, которое убивает любую другую инициативу.
Но ведь у нас достаточно умных людей, которые способны вместе выдумать и реализовать систему саморегулирования, которые уже реализовали все крупные IT-площадки. Самоуправление позволяет им спокойно расти, ведь чем больше пользователей на сайте, тем точнее работает эта система. Функциональные задачи За прошедший год было достаточно времени для проведения глубокого исследование проекта и могу ответственно заявить: у нас полно работы, ребята! Нам понадобится мощный шлифовальный аппарат для этого бриллиантового булыжника!

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

Разделение типов материалов. На данный момент сайт имеет только один тип материала – “Запись в блог”, с помощью которой создаётся все: вопросы, решения, запросы от работодателей, поиск работы, системные страницы, правила и другое. Этот подход необходимо пересмотреть в корне, что может повлечь за собой значительные изменения на сайте. Мероприятия или события. Нужно добавить больше функционала: рассылки о событиях, регистрация на них. Рассылки. Один из простых инструментов доставки информации до пользователей – рассылка. Её обязательно нужно использовать. Регистрация. Трекер. Форматы ввода. Входа в систему. Раздел “Форум” (кто-нибудь им пользуется вообще?) и другие рядовые задачи тоже надо переосмыслить. Минимум задач, которые стоят передо мной

Так как на данный момент я всего лишь временный куратор и скорее “переходное звено”, чем “главный руководитель”, то для меня стоит минимум две обязательные задачи:

Внедрение новой версии сайта drupal.ru

Эта задача со стороны может показаться простой, но под ней таится минимум настройка деплоймента и связанные с ним процессы: qa, система голосований и апрувов, система разворачивания локального проекта.

Провести выборы нового куратора согласно новому уставу

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

О том, что сделано за последние недели

Три недели назад наш координатор Егор начал передачу всего, чем владел. Были выдвинуты пожелания разработать условия, при которой активные члены сообщества смогут занять место координатора или куратора определённого направления. Как результат работы было сделано следующее:

Коллективно был написан Устав и Дополнение к Уставу Разработана процедура выбора ответственных за направления С помощью голосования, выбраны тимлиды Проведено несколько митингов Обговорено множество организационных моментов

после чего:

Организован хостинг, арендованный на пожертвования активных членов сообщества Настроено окружение, способное принять поток пользователей Нам был передан репозиторий вместе со скриптами для QA и деплоя Начата процедура перенятия под своё управление аккаунтов и групп в соц. сетях, связанных с drupal.ru Итог

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

Ключевые слова:  drupal.ru




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 5 Спасибо

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

Drupal-школа – восьмое занятие: блок представления и управление видимостью блоков на Drupal 8

Практическое занятие про работу с блоками на drupal 8. Делаем отдельный блок для пользовательского фильтра представления (раскрытая форма). Настраиваем видимость блоков – в каком разделе блок будет виден, а в каком – нет.


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

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 0 Спасибо

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

Deploy – Стейджинг материалов

Модуль  deploy предназначен для упрощения подготовки и пред-просмотра контента Drupal сайта.

Deploy автоматически обслуживает зависимости между объектами (например взаимосвязанные сущности). Он содержит богатый API

Deploy был повторно переписан для Drupal 8 и основывается на  Multiversion и  replication модулях.
Он обеспечивает очень гибкую и эффективную платформу для создания контента в Drupal8.

Для установки достаточно просто получить код модуля в соответствующую директорию (например modules/contrib)
и активировать (например с помощью UI или drush).

Модуль зависим от  Workspace.

У модуля  Deploy нет страницы настройки конфигурации, что бы он работал, пользователь должен убедиться, что целевые рабочие области и/или внешний доступ настроены корректно (страницы настройки рабочих областей предоставляются модулем  workspace).

В качестве пользовательского интерфейса (UI), Deploy предоставляет только ссылки для запуска развертывания текущей активной рабочей области и ее целей:

Если для текущей активной рабочей области не настроено целевое рабочее пространство, то по нажатии ссылки “Развернуть”, пользователь получает сообщение об ошибке:

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

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


По мотивам https://www.drupal.org/docs/8/modules/deploy/drupal-to-drupal-deployment-between-two-or-more-sites следует продолжение этой статьи,
в комментариях – прошу ваши вопросы и пожелания.

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




email





facebook





linkedin





twitter





google+





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

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

Contenta CMS – Модный Друпал

Drupal это отличная система управления контентом, когда дело касается моделирования данных,
редакторской работы.

Но эволюция современного web оставила далеко позади потребность в традиционных сайтах,
генерирующих страницы на сервере.

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

Для организации хранения данных таких приложений может послужить Drupal.
В новой версии есть все необходимые инструменты, однако существует более продвинутое решение.
Contenta CMS это Drupal дистрибутив, из коробки предоставляющий современный API.
В нем собран весь необходимый список контриб модулей, необходимых для организации API.
Предоставлены примеры для различных js фреймворков, и пример приложения drupal.

Официальный ресурс проекта http://www.contentacms.org
содержит исчерпывающую информацию по установке и использованию.

Проект упакован в удобный шаблон и содержит установочный профиль.
Подробнее про drupal project тут: Прощай Drush Make, Привет Composer
Сборка и установка включая демо данные – дело 2х-3х минут.

composer create-project contentacms/contenta-jsonapi-project api –stability dev –no-interaction
cd api/web
drush si contenta_jsonapi –db-url=sqlite://sites/default/files/.ht.sqlite

Для запуска встроенного веб сервера

drush rs

По адресу 0.0.0.0:8888 у нас работающее приложение.

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

Для API Существует отличная документация

А в целом – это привычный Drupal со всем своими UI, и улучшенной темой для администрирования.

Однако теперь он отвечает на запросы клиентских приложений, и отдает данные в JsonAPI формате.

Для работы с API незаменимый инструмент это Postman

Существует несколько примеров реализации клиентского приложения.

В этой статье рассматривается минималистичный фреймворк Nuxt.js для создания веб приложений на Vue.js.

Что такое Nuxt.js?

Nuxt.js — это фреймворк для универсальных приложений на Vue.js.

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

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

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

Кроме того, мы также предоставляем другую опцию разработки: nuxt generate. С помощью неё можно статически генерировать приложения на Vue.js. На наш взгляд, эта опция может оказаться следующим большим шагом на пути разработки микросервисных веб-приложений.

Как фреймворк, Nuxt.js привносит множество возможностей, помогающих разработке, таких как: асинхронные данные, middleware, шаблоны и др.

Пример клиентского приложения достаточно просто получить и использовать.
https://github.com/contentacms/contenta_vue_nuxt

git clone https://github.com/contentacms/contenta_vue_nuxt.git
cd contenta_vue_nuxt

# установка зависимостией
npm install

# запуск сервера для localhost:3000
npm run dev

# продакшн сборка и запуск сервера
npm run build
npm run start

# генерация статического проекта
npm run generate

# запуск тестов из test/unit каталога
npm test

# для выгрузки на github страницу :
# НЕОБХОДИМО работать с репозоторием  "youname.github.io"
npm run deploy

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

Бонусом: эти два приложения удобно запускать одновременно, например с foreman примерно так:

# Procfile.dev
vue_js: npm –prefix=$(pwd)/web run dev
drupal: drush –root=$(pwd)/api/web rs

foreman start -f Procfile.dev

В итоге мы получаем простой и симпатичный каталог кулинарных рецептов, для стилизации используется bluma css

На фронтенд работает реактивный Vue с серверным рендером от Nuxt, на бекенд Drupal 8 с JSON API и Simple Oauth.
Это отличный пример Drupal Headless

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 4 Спасибо

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

Глобальные изменения в работе drupal.ru (aka ответ на претензии Дубовского)

1 .Почему был снят с публикации в разделе бизнеса РаДон

По морально-этическим причинам. Детали:

После уведомления, что мною будут приняты ответные меры, я получил прямую угрозу приблизительно следующего содержания: “напишу в роскомнадзор жалобу на каждого клиента патруля”. К сожалению, своевременного скриншота не сделал, но его явно успели прочитать другие:

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

Как вы будете строить отношения с этим человеком дальше – дело сообщества. Я с ним дел иметь не намерен. Далее причин с ним общаться у меня более не будет.

2. Как так оказалось, что Константин рулит твиттером?

По датам точно не помню, но в момент изменений drupal.ru он пришел и сказал: “вот твиттер акк, я его раскручивал как мог. Держи пароли, забирай” (вольный пересказ, цитату долго искать).
Мой ответ был прост (вольный пересказ):
- наведи порядок, рекомендую убрать все, что не связано с друпалом, я прикручу сейчас кросспостинг с главной. Рули дальше. Инициатива наказуема исполнением.

3. Почему я игнорирую В. Степанькова

Без комментариев.

4. Что дальше?

Некоторое время назад я понял, что дальше тянуть эту лямку не могу. Попытался настроить мосты с Воиновым. Потом появилась информация из пункта 1. Я пошел на встречу, замял конфликт и готов был идти на диалог. Мои требования при передаче домена:

С тех пор прошло 2 месяца. Дубовской создал очередную волну “все плохо”, “царь все сам решает” и “давит конкурентов”, что привело к этому посту.

В итоге в сложившейся ситуации, я собрал тех, кто за последние 2 года проявлял инициативу и поставил перед фактом. Я самоустраняюсь (условия) – создавайте основу для устава (смотрим тут) и принимайте на себя как финансовое обеспечение (был оформлен VPS и перенос на него всех ресурсов, за личные деньги участников), так и управление сообществом. К слову, я был рад видеть отсутствие желания быть у руля.
По сути для людей это ярмо, которое они сами на себя возложили временно (как в свое время сделал я).

Временным исполняющим обязанности куратора стал @mbaev. И банально по причине, что “больше не кому”.

Тут много написано, большие скриншоты. Мое уважение тем, кто дочитал до конца. Значит вам не безразлична судьба ВАШЕГО сообщества.

Как последний совет, даже напутствие – если у вас возникло желание помочь ресурсу, не дать ему быть захваченным людьми, для которых Drupal = Деньги === Бизнес, чтобы ресурс был не просто справочником, но площадкой с возможностью ОТКРЫТОГО обмена мнением (пусть и с ТМ или другим механизмом) – проявляйте активность. Решите для самих себя – чем именно вы готовы помочь и сделайте это. Пусть это будет даже разовая помощь на форуме, пример культурного ответа новичку или банальный твит на интересный топик. Все это важно! Главное от души и от сердца.

А я что мог, то сделал. Мое время помогать сообществу прошло.
Удачи вам!

PS: На текущий момент у меня нет никаких прав на сайте drupal.ru (обычный пользователь), сайт размещен не на моих серверах. Мною не будет проводится никакой деятельности для сообщества и для сайта как такового. Я убрал свой бизнес из раздела “бизнес”. Свернул финансирование Друпал и буду заниматься совсем другими делами.






email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Модераторский 22 Спасибо

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

Модуль “Версия для слабовидящих” (Drupal 8)

Кто разрабатывал сайты для государственных, муниципальных, образовательных учреждений знает, что у сайта должна быть обязательно “версия для слабовидящих”. Хочу предложить своё решение этого вопроса. Думая над логикой модуля, чтобы всё не усложнять я пришел к следующему решению: проще всего сделать “версию для слабовидящих” отдельной темой оформления и переключать темы на лету. Необходимо установить и подготовить тему оформления, которая будет “для слабовидящих”. В admin/config/special_module/settings выбрать эту тему. Сама панель с кнопками находится в теме оформления и выглядит вот так:

Да-да, интерфейс позаимствовал с небезызвестного правительственного сайта Модуль после включения создаёт 2 уже готовых блока: “версия для слабовидящих”

и “обычная версия”.

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

Так же с помощью CSS можно изменить изображения на кнопках в блоках.

Подробнее на официальной странице проекта

Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 0 Спасибо

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

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

Newsletter:  Новости Друпал


Примечания к выпуску:
Настоятельно рекомендуется обновить существующие сайты на Drupal 8, т.к. в новой версии решена проблема связанная с безопасностью Drupal Core – Critical – Multiple Vulnerabilities – SA-CORE-2017-004

0 Спасибо

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

DataLife Engine v.12.0 Press Release


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

Завершен основной этап разработки версии 12.0, релиз находится на тестировании и предрелизной подготовке, ну а пока мы предлагаем вам ознакомиться с информацией о том, что ждет вас с выходом новой версии. В данном релизе вас ожидает полностью новая и переработанная панель управления скриптом, новый модуль “Метатеги”, возможность экспорта пользователей в формате CSV либо Exel, возможность назначения паролей к публикациям, улучшенная производительность скрипта и скорость загрузки сайта и многое другое, об этом и другом читайте подробнее …

Источник: https://dle-news.ru/pressrelease/1727-datalife-engine-v120-press-release.html

Оптимизация каталога интернет магазина для продвижения (Дарья Бочкарёва) [DrupalCamp Краснодар 2016]

В своём докладе Дарья Бочкарёва расскажет о вариантах настройки индексации фильтров в разделах каталога, об оптимизации страниц фильтров под низко- и среднечастотные запросы.
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/ss-75922646
Репосты и лайки приветствуются, заходим в группу мероприятия и на наш канал на YouTube -> https://www.youtube.com/user/drupalyug

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

Drupal-школа – седьмое занятие: форматы ввода и представления на Drupal 8

Практическое занятие по настройке форматов ввода и созданию представлений на Drupal 8.

Содержание: настройка форматов ввода на drupal 8; особенности безопасной настройки форматов ввода для сайтов, размещающих контент от множества пользователей; основы работы с представлениям: представление как настраиваемый список материалов сайта, создание нового представления; настройка выводимых полей; настройка типа представления; настройка фильтрации материалов; настройка сортировки материалов; тестирование представления; добавление представления в меню сайта; настраиваемая посетителем сайта фильтрация и сортировка вывода; метки и столбцы выводимых данных в представлении на drupal 8.

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

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 1 Спасибо

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

«1С-Битрикс» официально признана самой популярной CMS среди российских интернет-магазинов

Об этом говорится в исследовании аналитического агентства Data Insight от 14 августа. Согласно документу, доля российской компании составляет 28,7% среди топ-300 опрошенных магазинов.

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

«1С-Битрикс» официально признана самой популярной CMS среди российских интернет-магазинов

Об этом говорится в исследовании аналитического агентства Data Insight от 14 августа. Согласно документу, доля российской компании составляет 28,7% среди топ-300 опрошенных магазинов.

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

Аудит безопасности Drupal (Кочетов Дмитрий) [DrupalCamp Краснодар 2016]

А вот и снова доклад с DrupalCamp Краснодар 2016 от Дмитрия Кочетова о том, как правильно провести аудит безопасности Drupal сайта.
Презентация находится здесь -> https://www.slideshare.net/secret/amUTHSnIJyzCIp
Видео: https://www.youtube.com/user/drupalyug
А ваши лайки должны находиться под этим видео. Смотрим и делимся с друзьями.

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

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

Проблема: Недостаточная фильтрация данных в Jquery плагине Masha JS входящем в состав DLE.

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

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

Для исправления скачайте и скопируйте на свой сервер патч: https://dle-news.ru/files/dle113_path.zip

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

Дистрибутив версии 11.3 на нашем сервере обновлен.

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

Реактивный фронтенд фреймворк для людей (Константин Комелин) [DrupalCamp Краснодар 2016]

Очередной крутой доклад с Drupal Camp Краснодар 2016. Константин Комелин рассказал, что такое Vue.js, чем он удобен и, естественно, как интегрировать этот фреймворк с нашим любимым Drupal!
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/ss-74813987
Видео: https://www.youtube.com/user/drupalyug
Репосты, лайки и подписка – простые шаги, чтобы увидеть все доклады, с нашего мероприятия!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

«U.Efficiency» 2.0 – коэффициент активности пользователя

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

Источник: https://dle-news.ru/modules/1725-uefficiency-20-koefficient-aktivnosti-polzovatelya.html

Практический обзор Google AMP (Accelerated Mobile Pages) в Drupal 8 (Богдан Романенко) [DrupalCamp Краснодар 2016]

Теперь доклад Богдана Романенко о том, как, зачем и кому нужно ускорить работу web-страниц на мобильных устройствах и, собственно, как можно реализовать Google AMP в Drupal 8.
Презентация здесь -> https://www.slideshare.net/secret/9OQXBRSi64y1Pm
Видео: https://www.youtube.com/user/drupalyug
Ждём ваши лайки и репосты, а видео с DrupalCamp Краснодар 2016 на этом не заканчиваются, поэтому продолжаем следить за новостями!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

За 5 секунд до аварии (Андрей Левашов) [DrupalCamp Краснодар 2016]

Живой доклад Андрея Левашова с Drupal Camp 2016, в котором он поделился опытом своей студии о том, как понять, что всё закончится плохо, когда ещё ничего не началось.
Презентация находится здесь -> https://www.slideshare.net/secret/qujLhElPqyHj7M
Лайки, репосты и подписка это то, что нужно не только нам, но и вам, ведь ещё так много интересных докладов!
https://www.youtube.com/user/drupalyug

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

Модуль “Архив блога”

Когда-то давно у меня был блог на платформе гугла blogger.com Там был хороший блок “Архив блога”, который разбивал записи по месяцам

Сейчас блог на Drupal 7 и мне захотелось такой же блок. Готовых решений найдено не было, были лишь вопросы на форумах и редкие ответы. Собрав всю информацию воедино, я сделал модуль. Он создает представление (view), и с помощью JavaScript можно сворачивать разворачивать данные.

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

Посмотреть “вживую” можно здесь

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




email





facebook





linkedin





twitter





google+





pinterest
4 Спасибо

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

Drupal-школа – шестое занятие: настройка отображения полей; управление меню и блоками на Drupal 8

Практическое занятие по Drupal 8: настройка отображения полей материала; создание и размещение дополнительного меню; создание и управление блоками содержимого.

Содержание: настройка отображения полей типа материала (в тизере и в основном материале); настройка и скрытие метки поля; создание и настройка навигационного меню; добавление ссылок в меню; добавление блока меню в нужный регион сайта; добавление и редактирование кастомного блока (с произвольным содержанием).

Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 2 Спасибо

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

Промо-страница для Drupal

У нас хорошие новости)

Была проведена инициатива по сбору средств на публичную страницу была проведена в Drupal-чате https://gitter.im/dru-io/Drupal , github-странице https://github.com/dru-io/promo/issues/1, телеграм-чате https://t.me/drupal_rus . Мы хотели общими силами сделать понятную, современную страницу, отвечающую на вопрос “Что такое Drupal?”.

Мы сделали первую итерацию этой страницы, она доступна по адресу http://drupal.dru.io/ . На нее может ссылаться каждый, когда ему задают вопрос “А почему Drupal?”.

Будет еще дорабатываться, пожелания писать в гитхабе https://github.com/dru-io/promo/issues/ . Исходники доступны также в гитхабе https://github.com/dru-io/drupal.dru.io . По вашим пожеланиям и корректировкам страницы уже ушло много коммитов в продакшн, все готовы развивать идею дальше.

Спасибо всем участникам: http://drupal.dru.io/thanks !

Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  FAQ 4 Спасибо

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

Как владельцам облачных сервисов выйти на рынок Drupal (Антон Шлома)[DrupalCamp Краснодар 2016]

А вот и доклад Антона Шломы в котором он освещает следующие вопросы:
1. Что такое облачные сервисы?
2. Микросервисная архитектура
3. API
4. Какой интерес у сервиса?
5. Целевая аудитория
6. Почему Drupal идеально подходит?
7. Семь шагов к выходу на рынок Drupal.
8. Пример работы с клиентом облачного сервиса, обзор работ и продуктов.
Остальные видео с Drupal Camp Краснодар 2016 вы можете найти у нас в группе или же на нашем канале https://www.youtube.com/channel/UCKMeeh1W1pNu6SqMWw3Mokg
Презентация находится здесь -> https://www.slideshare.net/DrupalYug/drupal-73641756
Смотрим, делимся этим видео с друзьями и лайками с этой записью

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

ОМК: «Как мы делали интерактивный сайт для одной из крупнейших промышленных компаний России»

Новый сайт должен был стать удобным ресурсом, где можно легко и быстро получить информацию о проектах Объединенной металлургической компании. Для реализации проекта выбрали альянс AIC+QSOFT. Разработчики посоветовали делать сайт на CMS «1С-Битрикс» — у них в портфолио уже были проекты для крупных компаний, созданные на этой платформе.

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

ОМК: «Как мы делали интерактивный сайт для одной из крупнейших промышленных компаний России»

Новый сайт должен был стать удобным ресурсом, где можно легко и быстро получить информацию о проектах Объединенной металлургической компании. Для реализации проекта выбрали альянс AIC+QSOFT. Разработчики посоветовали делать сайт на CMS «1С-Битрикс» — у них в портфолио уже были проекты для крупных компаний, созданные на этой платформе.

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

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

Newsletter:  Новости Друпал

Примечания к выпуску:
Обновления с безопасностью отсутствуют.

Выпущена готовая к использованию версия Drupal 8.3.6
Исправлена ошибка:
#2897576: Resaving a view display results in deletion of view display

Подробнее об новой версии
Узнайте больше о Drupal 8

Ключевые слова:  Drupal 8.3.6 0 Спасибо

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

Batch, Entity и другие вспомогательные инструменты для импорта данных в Drupal (Геворг Мкртчян) [DrupalCamp Краснодар 2016]

А вот и доклад Геворга Мкртчяна прямиком с Drupal Camp Краснодар 2016!
В своём докладе Геворг рассказывает о том, как интегрировать Drupal с разными внешними сервисами и системами.
Презентация здесь -> https://www.slideshare.net/DrupalYug/batch-queue-entity
Видео: https://www.youtube.com/watch?v=TEmaWBSs9Dw (не забудьте ПОДПИСАТЬСЯ!)
Как обычно смотрим, комментируем, ставим лайки и репостим себе!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

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

На весь август мы запускаем акцию и предлагаем скидки от 10% до 63% на лицензии, переходы и обновления «1С-Битрикс: Управления сайтом».

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

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

На весь август мы запускаем акцию и предлагаем скидки от 10% до 63% на лицензии, переходы и обновления «1С-Битрикс: Управления сайтом».

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

Акция «Космос Возможностей»: скидки на Битрикс24 от 12 до 30%

Битрикс24 предлагает вам безграничный «космос возможностей» для организации организации работы компании и управления продаж. Просто выберите тариф, который вам больше подходит и получите весь комплекс инструментов с повышенной скидкой – до 30%.

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

Акция «Космос Возможностей»: скидки на Битрикс24 от 12 до 30%

Битрикс24 предлагает вам безграничный «космос возможностей» для организации организации работы компании и управления продаж. Просто выберите тариф, который вам больше подходит и получите весь комплекс инструментов с повышенной скидкой – до 30%.

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

Как организовать REST API в Drupal 8 (Евгений Ильин) [DrupalCamp Краснодар 2016]

А теперь у нас мощный доклад от Евгения Ильина, который на Drupal Camp Краснодар 2016 рассказал о том, как организовать Rest Api на Drupal 8
Видео здесь: https://www.youtube.com/watch?v=Fsa8Dwu4Ewo (Не забудьте ПОДПИСАТЬСЯ!)
Репостим, отдаём свои лайки и естественно подписываемся на нашу группу, чтобы видеть и следующие доклады!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

Интересный способ получить список категорий бренда в Drupal

Получение списка категорий бренда – с виду довольно тривиальная задача, но при её решении всплывают подводные камни. Давайте разберёмся: как правило, в интернет-магазинах товары классифицируются как минимум по двум словарям – каталог и бренд. Например, товар под названием “мобильный телефон” относится к термину “мобильные телефоны” из словаря “каталог” и к термину “Завод имени Ленина” из словаря “производители”. Довольно часто заказчик ставит перед разработчиком задачу отобразить на странице производителя все категории, в которых у производителя есть товары. Т.е. на странице “Завод имени Ленина” необходимо отобразить ссылки на разделы “мобильные телефоны”, “холодильники”, “ядерные боеголовки”. Любой, кто знаком с друпалом, но не сталкивался с решением этой задачи, с ходу скажет, что это решается за 1 минуту через Views. Однако, на самом деле всё не так просто. Сразу напрашивается алгоритм – выводим материалы, с контекстным фильтром по бренду, отображаем только поле “Каталог” и дело якобы в шляпе. Но ведь товаров могут быть тысячи, поэтому категории многократно продублируются, а поскольку вьюс сделан по нодам, то ни уникальность запроса, ни агрегация нам не помогут. Не поможет также и группировка полей, т.к. помимо поля группировки, надо вывести ещё что-нибудь. Можно конечно же раздраконить шаблон представления, убрать оттуда вывод $rows, оставить только заголовки, но это костыль, ведь вьюс всё равно будет собирать тысячи товаров, которые не будет выводить.

Именно поэтому я решил, что оптимально будет написать свой запрос в базу, чтобы получить айдишники нужных терминов, а далее уже как-нибудь их обработать – либо вывести кодом, либо передать айдишники во views, и там уже настроить вывод, как душе угодно. Сам запрос делается в таблицу taxonomy_index, а для того, чтобы получить термины другого словаря, мы просто приджойним эту таблицу к самой себе. Собственно, код:

<?php
// Select terms
  $query = db_select('taxonomy_index', 'ti');
  $query->innerJoin('taxonomy_index', 'ti2', 'ti.nid=ti2.nid');
  // Если вам не нужно название термина, то эту строку можно пропустить
  $query->innerJoin('taxonomy_term_data', 'td', 'td.tid=ti2.tid');
  $query->fields('ti2', array('tid'));
  // и эту тоже
  $query->fields('td', array('name'));
  $query->condition('ti.tid', $args[0]);
  $query->condition('ti2.tid', $args[0], '<>');
  $query->distinct();
  $terms = $query->execute()->fetchAll();
?>

Приведённый код я использовал в своём Custom Ctools content type, поэтому аргумент с айдишником бренда указан как $args[0], естественно, вы можете использовать это и в другом контексте, например, в кастомном модуле, блоке, шаблоне и т.д. Из полученных айдишников я сгенерировал ссылки вида catalog/%category/%brand, которые ведут на страницы с вьюсами с двумя контекстными фильтрами, чтобы показать товары, относящиеся одновременно и к указанной категории, и к бренду.

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

Ссылка на первоисточник в моём блоге

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  FAQ 5 Спасибо

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

Системных администраторов поздравляю с профессиональным праздником

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

Это нелегкий, а порой даже незаметный обычному человеку и иногда даже неблагодарный труд.
Ибо хороший сисадмин, это когда пользователи и не подозревают что он есть))))

Мое вам уважение и благодарность за труд!
С днем Сисадмина!

Отдельный поклон команде, поддерживающей работоспособность нашего форума!






email





facebook





linkedin





twitter





google+





pinterest
2 Спасибо

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

Первое правило дизайна – никому не говорить о дизайне (Вадим Кендюхов) [DrupalCamp Краснодар 2016]

А сегодня у нас доклад Вадима Кендюхова о дизайне, куда, где и как правильно его применять. Ещё один доклад с Drupal Camp 2016 Краснодар, который достоин лайков, репостов и подписки на нашу группу!
Презентация лежит вот по этому адресу -> https://www.slideshare.net/DrupalYug/ss-73641529/1
Видео: https://www.youtube.com/watch?v=9WTMWqwvkbc

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

Как работать с конфигурациями в Drupal 8 (Александр Дубовской) [DrupalCamp Краснодар 2016]

Очередной доклад с DrupalCamp 2016 Краснодар от Александра Дубовского в котором он расскажет о том, как
работать с конфигурациями в Drupal.

Видео здесь: https://www.youtube.com/watch?v=oWM5xgp8NyU (Не забудьте ПОДПИСАТЬСЯ!)
Презентация: https://www.slideshare.net/DrupalYug/drupal-8-73641490
Лайки, репосты и подписка это то, что нужно не только нам, но и вам, ведь ещё так много интересных докладов!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

Инструменты для SEO в CMS Drupal 7.x/8.x.x (Пётр Селфин) [DrupalCamp Краснодар 2016]

Какой бы крутой сайт не был сделан, все усилия будут напрасны, если его никто не посетит. А с помощью чего вывести сайт в топ я расскажу в своём докладе про инструменты SEO в Drupal.
Видео: https://www.youtube.com/watch?v=uEIrLr42OyE (Не забудьте ПОДПИСАТЬСЯ!)
Презентация: https://www.slideshare.net/DrupalYug/seo-cms-drupal

Лайки, репосты и подписка всё также радуют нас!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 0 Спасибо

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

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

Практическое занятие по связыванию раздела на сайте и типа материала на Drupal 8.

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

Фрагмент занятия от 8.02.2017.

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

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 1 Спасибо

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

Про RestFul в Drupal 8

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

В общем-то, он прав. Но я бы хотел поделиться чем-то, что мне нравится и что уже успешно применено на практике.

Речь пойдет о RESTful Web Services API.

Эта новинка Drupal 8 дает возможность сторонним разработчикам использовать (и изменять) данные приложений. Например, взаимодействие с мобильными приложениями или фронтэнд построен таким образом, что от сервера требуются только данные, а отрисовка HTML происходит на клиенте.

Эти функции как-то в один момент сглаживают неуклюжесть младенца и сразу появляется желание понаблюдать за ним еще, не правда ли? Давайте разбираться дальше.

Методы HTTP

GET для получения данных (SELECT).

В случае “удачного” (или не содержащего ошибок) адреса, GET возвращается представление ресурса в формате XML или JSON (в зависимости от значения переменной _format) в сочетании с кодом состояния HTTP 200 (OK).
В случае наличия ошибок обычно возвращается код 404 (NOT FOUND) или 400 (BAD REQUEST).

По этому поводу есть отличный пример:

        GET http://example.com/api/v1/program/1?_format=json
        HEADERS: Content-Type: application/json POST для добавления данных (INSERT)

При успешном создании ресурса возвращается HTTP код 201, а также в заголовке ‘Location’ передается адрес созданного ресурса.

Пример:

        GET http://example.com/entity/user/?_format=json
        HEADERS:
                Content-Type: application/json
                Authorization: Basic XXXX
                X-CSRF-Token: XXXX  - получить его можно по этому пути http://example.com/rest/session/token
        BODY:
                {
                        "name":[{"value":"test"}],
                        "status":[{"value":"1"}],
                        "mail":[{"value":"

Дополнения браузеров для SEO оптимизатора

Многие сервисы, созданные для помощи в продвижении сайтов, выпускают дополнения для популярных проводников таких Mozilla FireFox и Google Chrome, рассмотрим некоторые из них.

Источник: https://dle-news.ru/blog/1724-dopolneniya-brauzerov-dlya-seo-optimizatora.html

Великолепный nuxt.js шаблон приложения vue.js и drupal 8 в одной коробке

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

Мы же понимаем, что ни один здравомыслящий фронтэнд разработчик не будет планировать drupal для api,
но… Drupal тоже может)

В этом обзоре я рассмотрю установку каркаса проекта с акцентом на удобства разработчика.

Цель: локальная среда для фулстек разработки на базе drupal8 и vue.js

Выбрав ЯП, принимаем соответствующий менеджер зависимостей.

В этом примере применяются: php, js, ruby

Следовательно, используем composer, npm, bundler

Руби используем с одной целью, пакет foreman позволит запустить в одном сеансе наши локальные сервера разработчиков.

Создадим каталог проекта

mkdir application

Сфокусируем внимание на построении каркаса приложения.

Первой командой соберем фронтенд

vue init nuxt/starter app

Второй командой соберем бэкенд

composer create-project drupal-composer/drupal-project:8.x-dev api –stability dev –no-interaction

Создадим Gemfile и укажем в нем foreman

# Gemfile
gem ‘foreman’

Установим

bundle install

Настроим

# Procfile.dev
vue: npm –prefix $(pwd)/app run dev
drupal: drush rs –root=$(pwd)/api/web

Теперь у нас есть возможность запуска обоих приложений:

foreman start -f Procfile.dev

Создадим скрипт обертку для этой команды

mkdir bin
touch bin/server
echo "foreman start -f Procfile.dev" > bin/server
chmod +x bin/server

Запуск

./bin/server

Для обслуживания приложений приходиться перемещаться в их корневые каталоги.

Например для добавления в проект axios:

cd app
yarn add axios

Или, для добавления модулей и установки drupal:

cd ../api
composer require jsonapi simple_oauth devel
cd web
drush si –db-url=sqlite://sites/default/files/.ht.sqlite

В итоге получаем полное разделение:
отдельное серверное приложение на базе drupal 8 организует api для доступа клиентского приложения к данным,
отдельное клиентское приложение на базе nuxt.js обеспечивает интерфейс пользователя.


Документация для работы со стеком nuxt.js drupal8:

https://babeljs.io/learn-es2015/ https://ru.vuejs.org/v2/guide/ https://ru.nuxtjs.org/guide https://github.com/mzabriskie/axios https://github.com/drupal-composer/drupal-project https://www.youtube.com/watch?v=–ZL3EAhnwc&list=PLZOQ_ZMpYrZsyO-3IstImK1okrpfAjuMZ https://www.youtube.com/watch?v=rTcC0maPLSA&list=PLZOQ_ZMpYrZtqy5-o7KoDhM3n6M0duBjX

Исходный код примера в репозитории на GitLab:

https://gitlab.com/multpix/vue_drupal Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.* Ключевые слова:  Headless Vue.js Модули и темы:  jsonapi simple_oauth




email





facebook





linkedin





twitter





google+





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

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

Что такое headless Drupal?


В последнее время идёт очень много разговоров о headless (иногда ещё его называют decoupled) Drupal. Давайте попробуем разобраться, что же это такое и какие преимущества это может нам дать. Headless означает “безголовый”, т.е. друпалу просто взяли и зачем-то оторвали голову, как в том анекдоте про змею:

«- Давайте отрубим ей хлебало!
- Нет, давайте лучше отрубим ей хвост!
- Точно! По самое хлебало!»

Этот анекдот весьма уместен в нашем контексте, ибо в концепции headless Drupal под головой понимается именно то, что многие привыкли называть “мордой”, т.е. весь слой темизации – сама тема и всё, что отвечает непосредственно за рендеринг html. Второе название этой концепции – decoupled – означает “разделённый”, что подразумевает, то, что функции рендеринга где-то всё же выполняются, но не в друпале. В общем, в headless-системах Drupal отдаёт данные не в виде HTML-страниц, а посредством REST-сервисов в форматах JSON, XML, HAL и т.д. Основные кейсы применения такого подхода приблизительно следующие:

– когда доступ к контенту осуществляется посредством мобильных приложений;
– когда контент изначально предназначен для отправки в другую систему (автоматизированный обмен данными);
– когда нужно сделать обычный сайт;

Если с первыми двумя пунктами всё понятно, то третий наверняка у многих вызывает вопросы, ведь нормально же работали годами, а тут какой-то хэдлес появился. Типичный кейс, когда такой подход будет наиболее выигрышным – это сайт с обилием динамических элементов страниц и с большим количеством форм, например, соцсеть или CRM-система. Однако даже для простеньких бложиков такой подход может дать множество преимуществ, но об этом чуть позже, сперва давайте разберёмся, что нужно для построения такой системы. Возможно, вы уже догадались, что фронтенд и бэкенд в таком случае будут двумя совершенно раздельными приложениями. По сути, это два разных сайта, расположенных в разных доменах (субдоменах)

Backend

В качестве бэкенда необходимо взять Drupal 8. Ни в коем случае не 7, т.к. там глубина интеграции с REST-сервисами изначально не такая большая, как в восьмёрке. Достаточно включить модуль Rest, входящий в ядро, и уже можно получать, создавать, удалять через REST любые сущности, а также создавать вьюсы в формате REST-экспорта. Однако, “родной” формат, в котором Drupal 8 выдаёт JSON, изначально не совсем удобен для работы, поэтому я также рекомендую установить модуль JSONAPI, с ним вам даже не понадобится включать Views, но это отдельная история, заслуживающая целой публикации (которую я планирую написать в ближайшее время).

Frontend

В качестве фронтенда берём любой актуальный javascript-фреймворк, например React или Vue. Для тех, кто любит мастерить велосипеды и составлять картину мира из миллионов маленьких фрагментов, предпочтителен React, для тех же, кто привык следовать чётко выверенным инструкциям, лучше выбрать Vue. Глобально же никакой особой разницы нет.

Сервер

Если вы ленивый идиот начинающий разработчик и привыкли деплоить сайты по FTP, то вы сможете разместить свой сайт на любом хостинге, правда о сервер-сайд рендеринге (SSR) придётся забыть. Если же вы привыкли пользоваться системой контроля версий, то вам будет необходим как минимум виртуальный сервер, чтобы вы смогли установить на нём Node.js – это позволит вам собирать фронтенд-приложение из исходников прямо на сервере с учётом всех переменных окружения.

В итоге получается приблизительно так: в домене site.com располагается файл index.html, который также подгружает скрипты и стили. Сами же данные забираются с домена backend.site.com и отображаются в вашем фронтенд-приложении. Роутинг (обработка ссылок) при этом происходит не на сервере, а во фронетнд-приложении, это называется клиентский роутинг. Т.е. по сути вы загружаете одну единственную HTML-страницу, которая сама решает, как отображать нужные данные. Именно поэтому такие приложения часто называют SPA – Single Page Application (одностраничное приложение). Яркие примеры таких приложений – Facebook, Gitter, LinkedIn.

Зачем мне всё это?

Самая важная проблема, стоящая на пути освоения новых технологий – это мотивация. Я постараюсь вам её дать Если в двух словах, то при построении сайтов по принципу headless Drupal + какой-нибудь современный js-фреймворк вы легко сможете делать сайты с реально крутым и быстрым интерфейсом. При этом для разработчика появляются следующие преимущества:

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

2. В разы ускоряется настройка самого друпала. Если вы используете JSONAPI, то всё, что вам нужно – это создать необходимые типы контента и добавить им нужные поля. И всё! Не нужно настраивать отображение, не нужно делать вьюсы. Буквально полчаса настройки и можно переходить к проектированию фронтенда.

3. Больше не нужно устанавливать или писать самому модули для “украшательств”. Больше не понадобится писать hook_form_alter, чтобы повесить на поле “.col-sm-3″. Больше не надо мучаться с AJAX-коллбэками. Для динамических форм вам больше не нужен богомерзкий “#states”.

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

5. За этим будущее. Со временем люди забудут про спиннеры, перестанут пускать туман с запахом печенья, отнесут гироскутер на балкон или в подвал, но хайп вокруг SPA-приложений не утихнет ещё очень долго.

Я знаю, о чём вы сейчас подумали.

Действительно, если нам в друпале не нужно делать ничего, связанного с темизацией, то нам придётся сделать это в javascript. Однако, спешу вас заверить – это не так сложно, как кажется. Один из основных принципов разработки фронтенда на javascript – это использование готовых компонентов. Хотите галерею – вот вам готовая галерея, хотите графики строить – на выбор есть десятки компонентов разной степени навороченности, хотите всё сделать в стиле Material Design – получите полный сет стилизованных компонентов. Да, многие компоненты уже изначально поставляются со своими стилями, и бывает так, что на вёрстку практически не нужно тратить время. Кроме того, создавать собственные компоненты вовсе не сложно, равно как и совсем не сложно переопределить стили сторонних компонентов.

И традиционная ссылка на оригинал статьи в моём блоге

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




email





facebook





linkedin





twitter





google+





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

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

Что будет если соединить Drupal 8 и React.js узнали при переносе сайта

Эта статья о том, как уже существующий проект переносили на React.

Библиотека React считается быстрым из-за VirtualDOM. В компоненте есть метод render, который вызывается при каждом обновлении компонента. Затем результат рендера (здесь и далее под рендером будет иметься в виду именно вызов функции render компонента, а не рендер в реальный DOM) обрабатывается Реактом, сравнивается результат текущего рендера с результатом предыдущего и в реальный DOM вносятся только необходимые изменения, а не целиком. Учитывая, что операции с реальным DOM медленные, это должно быть быстрее.

React хорош тем, что его можно использовать с любым backend. При разворачивании проекта, запуск
npm run build приведет к созданию оптимизированной сборки приложения в build-папке.

В качестве документации был взят сайт https://facebook.github.io/react/.

Начнем мы с создания среды для успешной разработки на React.

npm install -g create-react-app
create-react-app my-app
 
cd my-app
npm start

Создали файл package.json, который является инструкцией/описанием для нашего проекта. Выглядит он таким образом:

{
  "name": "VelvetDev",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "axios": "^0.16.2",
    "jquery": "^3.2.1",
    "prop-types": "^15.5.10",
    "react": "^15.5.4",
    "react-dom": "^15.5.4",
    "react-popup": "^0.8.0",
    "react-slick": "^0.14.11",
    "react-validation": "^2.10.9",
    "slick-carousel": "^1.6.0",
    "validator": "^7.0.0"
  },
  "devDependencies": {
    "react-scripts": "1.0.7"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test –env=jsdom",
    "eject": "react-scripts eject"
  }
}

Заполним наш index.html файл

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <meta name="description" content="VelvetDev is a Drupal Development company that specialized in portals, social Network and E-commerce sites. Drupal is our passion. Drupal is our life. Drupal is our everything."/>
    <meta name="keywords" content=”drupal, drupal 7, drupal 8, php,
         development, site” />
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap-theme.min…>
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.css" />
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick-theme…. />
    <title>VelvetDev – Drupal Development company</title>
  </head>
  <body>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <div id="root"></div>
    <div id="popupContainer"></div>
  </body>
</html>

Далее, запустим наш сайт с помощью команды npm start, это возможно, потому что у нас в файле package.json есть секция scripts, в которой прописана команда start.

Главный компонент App

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

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

Файл app.js выглядит следующим образом:

import React, {Component} from ‘react’;
import ‘./App.css’;
import Header from ‘./components/Header/Header’;
import Welcome from ‘./components/Welcome/Welcome’;
import Services from ‘./components/Services/Services’;
import WhatWeDo from ‘./components/WhatWeDo/WhatWeDo’;
import Team from ‘./components/Team/Team’;
import Contacts from ‘./components/Contacts/Contacts’;
import Footer from ‘./components/Footer/Footer’;
import axios from ‘axios’;
 
const baseUrl = ‘YUOR_SITE’;
const suffixUrl = ‘YOUR_SUFFIX’;
 
class App extends Component {
 
  constructor(props) {
    super(props);
    this.state = {
      configData: {},
      xCSRFToken: ”
    };
  };
 
  componentDidMount() {
    axios.get(baseUrl + suffixUrl + ‘/jsonapi/config_pages/front_page’)
      .then(res => {
        if (res.status === 200) {
          const configData = res.data.data[0].attributes;
          this.setState({configData: configData});
        }
      });
    axios.get(baseUrl + suffixUrl + ‘/session/token’)
      .then(res => {
        if (res.status === 200) {
          this.setState({xCSRFToken: res.data});
        }
      });
  }
 
  render() {
    return (
      <div className="App">
        <Header configData={ this.state.configData }
                baseUrl={ baseUrl }
                xCSRFToken={ this.state.xCSRFToken } />
        <div className="wrapper">
          <div className="container-fluid">
            <Welcome configData={ this.state.configData } />
            <Services configData={ this.state.configData }
                      baseUrl={ baseUrl }
                      source={suffixUrl + "/api/v1/services"} />
            <WhatWeDo configData={ this.state.configData }
                      baseUrl={ baseUrl }
                      source={suffixUrl + "/api/v1/projects"} />
            <Team configData={ this.state.configData }
                  baseUrl={ baseUrl }
                  source={suffixUrl + "/api/v1/teams"} />
            <Contacts configData={ this.state.configData }
                      baseUrl={ baseUrl + suffixUrl }
                      xCSRFToken={ this.state.xCSRFToken } />
            <Footer configData={ this.state.configData }
                    baseUrl={ baseUrl }
                    source={suffixUrl + "/api/v1/social-links"} />
          </div>
        </div>
      </div>
    );
  }

}
 
export default App;

Опишем используемые для создания Velvetdev методы и компоненты

Создание класса: class App extends Component.

       Состояние
Задавая свойство state для текущего класса, мы говорим реакту: “Это данные, за которыми стоит следить”. При изменении состояния React будет проводить свои магические манипуляции с виртуальным DOM и заново рендерить все изменившиеся элементы. При использовании свойства state необходимо придерживаться одного простого правила: состояние задается присваиванием всего один раз при инициализации компонента. Другими словами, не стоит присваивать значения напрямую, а вместо этого использовать функцию setState. Событие onChange меняет состояние.

setStateng> изменяет состояние компонента и сообщает React, что этот компонент и его дочерние элементы должны быть повторно отображены с обновленным состоянием. Это основной метод, который мы используем для обновления пользовательского интерфейса в ответ на обработчики событий и ответы сервера.

Внутри этого класса мы создали конструктор, которому необходимо передать аргумент, содержащий все эти настройки (чаще всего называют просто props).

У каждого компонента могут быть свойства. Они хранятся в this.props, и передаются компоненту как атрибуты. В свойство можно передать любой javascript примитив, объект, переменную и даже выражение. Значение свойства должно быть взято в фигурные скобки.

Ключевое слово this будет относиться к экземпляру компонента внутри которого находится.

getInitialState() вызывается один раз перед монтированием компонента. Возвращаемое значение будет использоваться в качестве начального значения this.state.

       Рендеринг

Мы создали компонент. Но React пока не знает, что с ним делать. Чтобы увидеть результат нашей работы необходимо сообщить библиотеке react-dom, что надо это отрендерить и показать. Делается это с помощью функции render, которую мы предварительно изъяли из библиотеки: первым параметром функция принимает компонент, который нужно отрендерить, вторым — DOM элемент (или элементы) в которых нужно отрендерить данный компонент.

       Валидация

Валидация нужна для блока контакты. Код этого блока выглядит следующим образом:

import React, {Component} from ‘react’;
import Validation from ‘react-validation’;
import axios from ‘axios’;
import Popup from ‘react-popup’;
 
class ContactForm extends Component {
 
  constructor(props) {
    super(props);
    this.state = {
      email: ”,
      name: ”,
      message: ”,
    };
    this.onChange = this.onChange.bind(this);
    this.onSubmit = this.onSubmit.bind(this);
  }
 
  onChange(event) {
    let fieldName = event.target.name;
    let stateObject = {};
    stateObject[fieldName] = event.target.value;
    this.setState(stateObject);
  }
 
  onSubmit(event) {
    event.preventDefault();
    const self = this;
    const url = this.props.baseUrl + ‘/entity/contact_message?_format=json’;
    const data = {
      "name": [{"value": this.state.name}],
      "mail": [{"value": this.state.email}],
      "subject": [{"value": this.state.message.split(‘ ‘)[0]}],
      "contact_form": [{"target_id": "contact"}],
      "uid": [{"target_id": "0"}],
      "message": [{"value":  this.state.message}]
    };
    axios.get(this.props.baseUrl + ‘/session/token’)
      .then(res => {
        if (res.status === 200) {
          const instance = axios.create({
            headers: {‘X-CSRF-Token’: res.data}
          });
          instance.post(url, data)
            .then(function (response) {
              if (response.status === 201) {
                Popup.alert(‘Your message has been successfully sent!’);
                self.setState({
                  email: ”,
                  name: ”,
                  message: ”,
                });
              }
            }).catch(function (error) {
            console.log(error);
            Popup.alert(‘Error!’);
          });
        }
      });
  }
 
  render() {
    return <Validation.components.Form ref={c => {
      this.form = c
    }} className="contact-form" onSubmit={this.onSubmit}>
      <div className="col-md-8">
        <div className="contacts-form form-group">
          <div className="form-group border row">
            <div className="col-md-5 half-block top row ">
              <label className="col-sm-4 half-left text-left">
                Name*
              </label>
              <div className="col-sm-8 half-right">
                <Validation.components.Input className="form-control border"
                                             onChange={this.onChange}
                                             value={this.state.name}
                                             errorClassName=‘error’
                                             placeholder="Name" name=‘name’
                                             validations={[‘required’]}/>
              </div>
            </div>
            <div className="col-md-2">
            </div>
            <div className="col-md-5 half-block top row">
              <label className="col-sm-4 half-left text-left">
                Email*
              </label>
              <div className="col-sm-8 half-right">
                <Validation.components.Input className="form-control border"
                                             onChange={this.onChange}
                                             errorClassName=‘error’
                                             value={this.state.email}
                                             placeholder="Email" name=‘email’
                                             validations={[‘required’, ‘email’]}/>
              </div>
            </div>
            <div className="col-md-12 whole-block row">
              <label className="col-sm-4 col-form-label whole-left text-left">
                Message*
              </label>
              <div className="col-sm-8 half-center">
                <Validation.components.Textarea className="form-control border"
                                                onChange={this.onChange}
                                                value={this.state.message}
                                                placeholder="Hi"
                                                errorClassName="error"
                                                name=‘message’
                                                validations={[‘required’]}/>
              </div>
            </div>
            <div className="col-md-12 col-null">
              <Validation.components.Button
                className="btn btn-lg btn-primary btn-block text-uppercase send left">Submit</Validation.components.Button>
            </div>
          </div>
        </div>
      </div>
    </Validation.components.Form>;
  }
 
}
 
export default ContactForm;

Непросто проверять формы с помощью React. Причина – односторонний стиль потока данных. В этом случае мы не можем легко влиять на формы с входов. React-validation предоставляет несколько компонентов, которые «подключены» к форме через метод ввода, прикрепленный компонентом Form.
ПРИМЕЧАНИЕ. Всегда нужно передавать name и validations реквизиты. Они необходимы.
Для использования валидации мы установили react-validation:

npm install react-validation

Компоненты и реквизит

React-validation обеспечивает components объект, который содержит Form, Input, Select, Textarea и Button компоненты. Все они – только пользовательские обертки вокруг собственных компонентов. Они могут принимать любые действительные атрибуты и несколько дополнительных:

containerClassName – Input, Select и Textarea: react-validation обертывает нативные компоненты дополнительным блоком. Эта опора добавляет className к обертке. errorContainerClassName: Модификатор ошибки обертки className. validations- Input, Select и Textarea: принимает массив строк проверки, который ссылается на ключи объекта правил. errorClassName – Input, Select, Button и Textarea: добавляет переданное значение className на появлениях ошибок.

Компонент формы

       Validation.components.Form

Самый важный компонент, который обеспечивает сердцевину проверки реакции. Он в основном смешивает привязку между самой формой и дочерними компонентами проверки реакции через context. Любые действительные реквизиты могут быть легко перенесены на Form такие onSubmit и method.
Form Предоставляет четыре общедоступных метода:

validate(name)- проверяет ввод с переданным именем. Разница между этим методом и проверкой по умолчанию заключается в том, что validate маркирует ввод как isUsed и isChanged. name — имя соответствующего компонента. showError(name [,hint])- помогает обрабатывать ошибки асинхронного API. hint – необязательный подсказку для показа. Может быть строкой (ключ ошибки, ex ‘required’) или функция, которая возвращает подсказку (jsx). hideError(name) – скрывает ошибку соответствующего компонента. validateAll()- проверяет все компоненты проверки реакции. Возвращает карту (ключ: имя поля prop, значение: Array не прошел правила проверки) недопустимых полей.

       Mounting: componentDidMount

componentDidMount()

Вызывается один раз, только на клиенте (не на сервере), сразу же после того, как происходит инициализация рендеринга. На данном этапе в жизненном цикле компонент имеет представление DOM, к которому мы можем получить доступ с помощью this.getDOMNode().

       Array.prototype.map()

Для нашего сайта использовались массивы, для хранения объектов. Поэтому нам пригодился такой метод как map().
Метод map() создаёт новый массив с результатом вызова указанной функции для каждого элемента массива. Метод map вызывает переданную функцию callback один раз для каждого элемента, в порядке их появления и конструирует новый массив из результатов её вызова. Функция callback вызывается только для индексов массива, имеющих присвоенные значения, включая rel=”nofollow”>undefined. Она не вызывается для пропущенных элементов массива (то есть для индексов, которые никогда не были заданы, которые были удалены или которым никогда не было присвоено значение.

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.
Если в метод map был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение
undefined . В конечном итоге, значение this, наблюдаемое из функции callback, определяется согласно обычным правилам определения this, видимого из функции.

Метод map не изменяет массив, для которого он был вызван (хотя функция callback может это делать).

Диапазон элементов, обрабатываемых методом map, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода map, не будут посещены функцией callback. Если существующие элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени, когда метод map посетит их; удалённые элементы посещены не будут.
Код из блока Team, где использовался данный метод:

<Slider {…settings}>
            {
              this.state.team.map(function (el, key) {
                return (
                  <div key={key}>
                    <TeamItem
                      image={ self.props.baseUrl + el.user_picture }
                      name={el.first_name}
                      position={el.position}
                    />
                  </div>
                );
              })
            }
</Slider>

Мы использовали у родительского элемента атрибут key. Если объяснить предельно просто: реакту нужна уникальность, чтобы все его механизмы работали корректно. По “ключу” он будет понимать с каким именно дочерним узлом мы работаем и какому родителю он принадлежит.

       React-axios

Данный метод используется для получения данных.
Axios.get является асинхронной функцией, которая означает, что остальная часть кода будет выполнена. И когда ответ сервера будет получен, функция then будет выполнена.

Код из блока WhatWeDo, где использовался данный метод:

  componentDidMount() {
    axios.get(this.props.baseUrl + this.props.source)
      .then(res => {
        if (res.status === 200) {
          this.setState({ projects:res.data });
        }
      });
  } d8.png448.3 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.* Ключевые слова:  Drupal8 create-react-app scss перенос сайта




email





facebook





linkedin





twitter





google+





pinterest
1 Спасибо

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

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

Newsletter:  Новости Друпал


Примечания к выпуску:
Обновления с безопасностью отсутствуют

Выпущена готовая к использованию версия Drupal 8.3.5.
Переводчикам следует обратить внимание на несколько незначительных изменений со времени последней версии.
Узнайте больше о Drupal 8.

Ключевые слова:  Drupal 8.3.5 0 Спасибо

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

Drupal-школа – четвертое занятие: создание нового типа контента, управление полями и их отображением на Drupal 8.

Практическое занятие по созданию нового типа материалов и работе с полями на Drupal 8.

Содержание: добавление нового вида материалов; настройка полей; настройка полей с изображениями (минимальное и максимальное разрешение и пр.); управление отображением полей в материале и его тизере; настройка показа материала на главой странице; настройка показа автора и даты публикации материала .

Фрагмент занятия от 1.02.2017.

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

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 4 Спасибо

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

Скидка против штрафов: готовое решение по 54-ФЗ

1 июля вступят в силу новые правила торговли для интернет-магазинов. У нас готово решение по 54-ФЗ – переводите интернет-магазин на «1С-Битрикс: Управление сайтом» со скидкой 15%.

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

Скидка против штрафов: готовое решение по 54-ФЗ

1 июля вступят в силу новые правила торговли для интернет-магазинов. У нас готово решение по 54-ФЗ – переводите интернет-магазин на «1С-Битрикс: Управление сайтом» со скидкой 15%.

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

Обновление Drupal (новые версии Drupal 7.56 и Drupal 8.3.4)

Newsletter:  Новости Друпал

Примечания к выпуску:
Настоятельно рекомендуется обновить существующие сайты на Drupal 7 и Drupal 8, т.к. в новых версиях решена проблема связанная с безопасностью DRUPAL-SA-CORE-2017-003

Описание:

PECL YAML – CVE-2017-6920

Парсер PECL YAML не безопасно обрабатывает объекты PHP во время определенных операций в ядре Drupal. Это может привести к удаленному выполнению кода.

Файл REST ресурса неправильно проверяет – CVE-2017-6921

Ресурс REST файла неправильно обрабатывает некоторые поля при работе с файлами. Сайт будет затронут этим, лишь в том случае, если на сайте включен модуль RESTful Web Services (rest), ресурс REST файла включен и разрешает запросы PATCH, а злоумышленник может получить или зарегистрировать учетную запись пользователя на сайте с разрешениями на загрузку файлов и изменить файловый ресурс.

Файлы, загруженные анонимными пользователями в частную файловую систему, могут быть доступны другим анонимным пользователям – CVE-2017-6922

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

Команда безопасности Drupal также получила сообщения о том, что эта уязвимость используется для целей спама, аналогично сценарию, обсуждаемому в PSA-2016-003 для общедоступной файловой системы.

Подробнее об новых версиях

0 Спасибо

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

Увеличиваем скорость загрузки сайта

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

Источник: https://dle-news.ru/blog/1723-uvelichivaem-skorost-zagruzki-sayta.html

Как создать подтему (sub-theme) Drupal 7 и для чего это нужно

Добрый день в этом посте я вам расскажу, как создать подтему (англ. sub-theme) для Drupal 7 и для чего это нужно. Чтоб не читать сей длинный опус предлагаю посмотреть видео:

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

Для чего это нужно

Вариант №1. Скачали вы тему с d.org или где-то ее купили, есть большая вероятность того, что вас эта тема устраивает не полностью. И вы начинаете вносить в нее какие-то изменения. Но вот автор темы выпустил обновления, вы не думая обновились и все вроде бы прекрасно, но все ваши изменения пропали.

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

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

Как создать

В друпал 7 есть стандартная тема Бартик, на ее основе мы будем делать подтему. Для начала переходим в папку sites/all/themes и создаем там папку с нашей темой, допустим swd. Называться наша тема должна на английском и начинаться с буквы. Внутри папки swd создаем файл swd.info, именно по этому файлу друпал поймет, что мы создали тему. Так же содаем папку css и в ней файл style.css. Так как мы создаём тему на основе Бартика, то рекомендую вам просто скопировать содержимое bartik.info в наш файл, с не большими изменениями:

name = SWD
description = SWD Bartik sub-theme
package = Core
version = 0.1
core = 7.x
base theme = bartik

stylesheets[all][] = css/style.css

regions[header] = Header
regions[help] = Help
regions[page_top] = Page top
regions[page_bottom] = Page bottom
regions[highlighted] = Highlighted

regions[featured] = Featured
regions[content] = Content
regions[sidebar_first] = Sidebar first
regions[sidebar_second] = Sidebar second

regions[triptych_first] = Triptych first
regions[triptych_middle] = Triptych middle
regions[triptych_last] = Triptych last

regions[footer_firstcolumn] = Footer first column
regions[footer_secondcolumn] = Footer second column
regions[footer_thirdcolumn] = Footer third column
regions[footer_fourthcolumn] = Footer fourth column
regions[footer] = Footer

Самое главное в нашем файле, это строка base theme = bartik, где bartik машинное имя родительской темы. На нашем сайте заходим в Оформление и видим, что появилась наша тема, включаем ее по умолчанию и переходим на главную страницу. Видим, что тут слегка все перекошено. Все это потому, что у нас пустой css, вы можете заполнять его своими свойствами или полностью скопировать css родительской темы и вносить свои изменения.

Так же можно переопределять шаблоны рендеринга страниц в нашей теме. Например, из папки themes/bartik/templates мы можем скопировать файл page.tpl.php в нашу тему (рекомендую в нашей теме создать папку templates и копировать туда, но можно и в корень нашей темы). Этот файл отвечает за рендеринг страниц нашего файла. Для того чтобы убедиться, что все работает предлагаю удалить из него, например, вот это:

<?php if ($main_menu): ?>
      <div id="main-menu" class="navigation">
        <?php print theme(‘links__system_main_menu’, array(
          ‘links’ => $main_menu,
          ‘attributes’ => array(
            ‘id’ => ‘main-menu-links’,<h3></h3>
            ‘class’ => array(‘links’, ‘clearfix’),
          ),
          ‘heading’ => array(
            ‘text’ => t(‘Main menu’),
            ‘level’ => ‘h2′,
            ‘class’ => array(‘element-invisible’),
          ),
        )); ?>
      </div> <!– /#main-menu –>
    <?php endif; ?>

Этот кусок отвечает за вывод main menu (основного меню). Обязательно очищаем кэш, переходим на главную страницу и видим, что меню в верху страницы больше нет, а значит все подключилось и прекрасно работает.

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

Вместо заключения

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

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




email





facebook





linkedin





twitter





google+





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

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

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

Newsletter:  Новости Друпал

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

В данной версии Drupal отсутствую исправления связанные с безопасностью.

В версия Drupal 7.55 сделаны изменения в .htaccess

Изменена поддержка таких сервисов, как Let’s Encrypt, заставив Drupal не блокировать известный каталог, определенный RFC 5785 (см. # 2847325). Изменение, позволяющее сайтам Drupal корректно работать на Apache 2.4, когда модуль mod_access_compat Apache отключен (см. # 1599774).

Рекомендуется обновить пользовательские версии .htaccess для включения этих изменений, но это не является обязательным.

Подробнее об новой версии

0 Спасибо

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

Выпущен Drupal 8.3.3

Newsletter:  Новости Друпал

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

Выпущена готовая к использованию версия Drupal 8.3.3. См. CHANGELOG.txt для ознакомления с изменениями и улучшениями со времени последней минорной версии. Узнайте больше о Drupal 8.

Этот выпуск содержит только исправления ошибок, а также улучшения документации и тестирования.

В этой версии Drupal 8 решены следующие важные проблемы:

# 2302137: Повысить производительность, если значение ссылки в меню совпадает с исходным значением # 2804391: Ссылки на резервные ссылки, указывающие на не-ноды, меняют тип на ноды и разрывают ссылку

Изменения в процессе обновления с Drupal 8.2.3

Drupal 8.2.3 (и последующие), больше не будут содержать библиотек разработки PHP (ранее они находились в ядре Drupal 8, а теперь их надо будет дополнительно устанавливать). Drupal 8 больше не будет включать зависимости разработчиков в пакетах выпуска. См. UPDATE.TXT в Drupal для получения полных инструкций по обновлению.

Подробнее об новой версии

Ключевые слова:  Выпущен Drupal 8.3.3 0 Спасибо

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

Не используйте PHP фильтр!

На форуме некоторые товарищи, иногда рекомендуют для решения задачи использовать встроенный в ядро PHP фильтр, или Views PHP. Никогда так не делайте! И вот почему:

Данный код пишется в базу, поэтому его нельзя будет отследить через систему контроля версий, например git. (если вы не используете систему контроля версий в разработке – это тоже плохо). Поля с php-фильтром не кэшируются. Код в php-фильтре выполняется через eval(). Код через eval работает медленнее, не кэшируется opcache-м, а на некоторых хостингах eval может быть отключен из соображений безопасности. Не информативные сообщения об ошибках. Что-то типа error in eval() on line 4. Где этот кусок кода, что с ним делать? Проблемы с обновлением модулей. Обновление модуля – и у вас куча ошибок, которые сложно найти и исправить. Сложно писать и поддерживать такой код. В обычном textfield – нет форматирования как в IDE, да и шрифт не моноширинный. Копировать туда-обратно тоже заколебаться можно. Человеческий фактор. Всегда существует возможность ошибки в конфигурации, которая позволит не доверенным пользователям заюзать php-фильтр. ОЙ! Безопасность в целом. Любой сайт могут взломать, но присутствие на сайте php-фильтра может сделать последствия взлома гораздо тяжелее. XSS, SQL-инъекция – и вот вас уже shell прямо в базе. =) Сложности деплоя. Нельзя просто обновить файлы на сервере. Надо лезть в админку, и копипастить код в нужные места. Хотя обычно в PHP-фильтр пишут прямо на продакте. Не стоит работать на продакте. Повышается цена ошибки. Одна небольшая опечатка в сквозном блоке – и всё пропало, шеф.

Хорошо, PHP-фильтр использовать не стоит. А что же тогда делать?

Через template_preprocess хуки. Можно создать свой токен и вставлять его с помощью  token_filter Можно создавать вычисляемые поля с помощью  computed_field. Этот модуль даже сам подскажет вам, какое название функции использовать. Если используется Display Suite – можно написать своё Display Suite поле Ещё варианты, тысячи их! В зависимости от задачи. Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Модули и темы:  PHP filter display suite computed_field token_insert




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 8 Спасибо

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

Модуль Performance Monitor – оценка производительности системного окружения

Всем привет!

Недавно я опубликовал модуль Performance monitor, который позволяет быстро и из админки Drupal оценить производительность системного окружения Drupal сайта.

В каким случаях он будет полезен:

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

Модуль помогает:

Оценить время генерации страниц. Проверить статус и настройки MySQL. Проверить включен ли php opcache. Проверить используется ли сайтом Memcached для кэширования. Собрать статистику по потреблению системных ресурсов для дальнейшей оптимизации.

Надеюсь модуль будет полезен, буду рад услышать комментарии и предложения по использованию, доработке, исправлению ошибок в модуле.

Ссылка на краткую инструкцию в блоге: https://drupal-admin.ru/blog/performance-monitor
Ссылка на модуль: https://www.drupal.org/project/perfmon

performance-monitor1.png109.87 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  Drupal 7 производительность Модули и темы:  perfmon




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Системное окружение 5 Спасибо

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

Как текстильная компания из Иваново увеличила оборот втрое после запуска нового сайта

Руководство «Ивашки» решило создать единый сайт для всех филиалов, с общей системой учета и аналитики и унифицированным дизайном, и соединить его с системой управления предприятием. После запуска нового сайта ivash-ka.ru оборот компании вырос втрое. В месяц «Ивашка» получает от 3 до 4,5 тысяч заказов, минимальная сумма заказа – 10 тысяч рублей, средний чек – 21 тысяча рублей. На разработку нового сайта компания потратила чуть более 3 млн рублей.

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

Как текстильная компания из Иваново увеличила оборот втрое после запуска нового сайта

Руководство «Ивашки» решило создать единый сайт для всех филиалов, с общей системой учета и аналитики и унифицированным дизайном, и соединить его с системой управления предприятием. После запуска нового сайта ivash-ka.ru оборот компании вырос втрое. В месяц «Ивашка» получает от 3 до 4,5 тысяч заказов, минимальная сумма заказа – 10 тысяч рублей, средний чек – 21 тысяча рублей. На разработку нового сайта компания потратила чуть более 3 млн рублей.

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

Земельная реформа друпал.ру

Access Level Control (ALC) Проблемы Притеснение новичков со стороны старожилов Дублирование контента Контент не по тематике Цели Снизить травлю новичков Заинтересовать сообщество в создании качественного контента Решение

Для решения данной задачи требуется реорганизация структуры проекта с внедрением ограничения на публикацию контента. Всех пользователей ресурса можно разделить на 5 категорий:

Новички (уровень знаний и направления для развития пока не известны) Администраторы сайта (умеют настраивать модули из админ. интерфейса) Кодеры (люди, имеющие опыт в написании кода, знающие АПИ друпала) Заказчики (просто нуждаются в исполнителях, знаниями могут либо не обладать вообще, либо умничают, начитавшись жёлтой прессы) Спамеры (Всякая шалупонь, рекламирующая хостинги и прочие сервисы)

Предлагается “лестничное разграничение прав” на доступ к контенту. Проблема заключается в следующем: к “новичок -> администратор -> кодер” можно спокойно применить “лестницу”, то “спамеры” и “заказчики” под этот принцип не попадают. Принцип лестничного разграничения прав предполагает, что любая ступенька “лестницы” может просматривать контент всех остальных ступений, за исключением закрытых разделов для каждой ступени. Публикация контента возможна внутри своей ступени и остальные низлежащие ступени за исключением закрытых разделов этих ступеней.

Повышение/понижение прав доступа

Для проверки уровня доступа предлагается использовать целочисленный счётчик для каждого пользователя. Чтобы всё не скатилось в кармафаппинг за “спасибки” необходима умная расчётная система.

Баллы начисляются:

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

Баллы снимаются:

Тёмная материя Нарушение правил Минусование вопросов (за глупость, некорректность) Публикация материалов в вышестоящие ступени

Возможна при ручном переносе модератором. Для этого вопрос должен иметь флаг на необходимость переноса топика вверх по лестнице (возможно даже указание ступени), либо находится в специальном разделе. Решение по переносу вопроса принимает модератор.

Реорганизация структуры контента

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

ALC В зависимости от количества баллов юзера: Спамеры, Заказчики (0кацэ) Новички (10кацэ) Администраторы (20кацэ) Кодеры (30кацэ). Типы контента - На данный момент я вижу пока 5 типов контента: Публикация – обучающий или инфо материал (Доступен всем, кроме первой категории) Вопрос – Собственно вопрос, как сделать какую-нить “хреньку” (Всем, кроме первой категории) Ответ – Ответ на вопрос (Всем, кроме первой категории) Услуги – Раздел для спаммеров, рекламирующих свой хостинг и прочую якобы полезную “лабуду” (Доступен всем) Заказы – Раздел, где заказчики, могут оставлять свои заказы (Доступен всем)

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

На этом у меня всё. Вопросы, критика, предложения в комменты.






email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 7 Спасибо

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

Земельная реформа друпал.ру

Access Level Control (ALC) Проблемы Притеснение новичков со стороны старожилов Дублирование контента Контент не по тематике Цели Снизить травлю новичков Заинтересовать сообщество в создании качественного контента Решение

Для решения данной задачи требуется реорганизация структуры проекта с внедрением ограничения на публикацию контента. Всех пользователей ресурса можно разделить на 5 категорий:

Новички (уровень знаний и направления для развития пока не известны) Администраторы сайта (умеют настраивать модули из админ. интерфейса) Кодеры (люди, имеющие опыт в написании кода, знающие АПИ друпала) Заказчики (просто нуждаются в исполнителях, знаниями могут либо не обладать вообще, либо умничают, начитавшись жёлтой прессы) Спамеры (Всякая шалупонь, рекламирующая хостинги и прочие сервисы)

Предлагается “лестничное разграничение прав” на доступ к контенту. Проблема заключается в следующем: к “новичок -> администратор -> кодер” можно спокойно применить “лестницу”, то “спамеры” и “заказчики” под этот принцип не попадают. Принцип лестничного разграничения прав предполагает, что любая ступенька “лестницы” может просматривать контент всех остальных ступений, за исключением закрытых разделов для каждой ступени. Публикация контента возможна внутри своей ступени и остальные низлежащие ступени за исключением закрытых разделов этих ступеней.

Повышение/понижение прав доступа

Для проверки уровня доступа предлагается использовать целочисленный счётчик для каждого пользователя. Чтобы всё не скатилось в кармафаппинг за “спасибки” необходима умная расчётная система.

Баллы начисляются:

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

Баллы снимаются:

Тёмная материя Нарушение правил Минусование вопросов (за глупость, некорректность) Публикация материалов в вышестоящие ступени

Возможна при ручном переносе модератором. Для этого вопрос должен иметь флаг на необходимость переноса топика вверх по лестнице (возможно даже указание ступени), либо находится в специальном разделе. Решение по переносу вопроса принимает модератор.

Реорганизация структуры контента

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

ALC В зависимости от количества баллов юзера: Спамеры, Заказчики (0кацэ) Новички (10кацэ) Администраторы (20кацэ) Кодеры (30кацэ). Типы контента - На данный момент я вижу пока 5 типов контента: Публикация – обучающий или инфо материал (Доступен всем, кроме первой категории) Вопрос – Собственно вопрос, как сделать какую-нить “хреньку” (Всем, кроме первой категории) Ответ – Ответ на вопрос (Всем, кроме первой категории) Услуги – Раздел для спаммеров, рекламирующих свой хостинг и прочую якобы полезную “лабуду” (Доступен всем) Заказы – Раздел, где заказчики, могут оставлять свои заказы (Доступен всем)

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

На этом у меня всё. Вопросы, критика, предложения в комменты.






email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 7 Спасибо

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

Drupal и vue.js: как работать без jquery

Вольный перевод: https://www.adcisolutions.com/knowledge/drupal-vuejs-how-work-without-jquery

Начиная с 5-ой версии, Drupal содержит jQuery.
Это замечательный инструмент для разработчика. Был)
В настоящее время мы сталкиваемся с массой задач, проблем, которые эта библиотека не решает, и не снимает.

Зачем обращать внимание на Vue.js? О чем пойдет речь в статье?

Как улучшить пользовательский интерфейс без jQuery. Как работать с компонентами Vue.js. Как интегрировать Vue.js со сторонними библиотеками. Как создать простое одностраничное приложение.

Начало

Самый простой способ подключить библиотеку vue.js – используя тег script

<script src="https://unpkg.com/vue"></script>

Кроме этого можно использовать npm пакет или модуль drupal.

Улучшение пользовательского интерфейса

Увы, Drupal не позволяет нам разрабатывать современный реактивный пользовательский интерфейс.
В ядре есть jQuery – но эта либа, не для этих дел)
Попробуем Vue.js для улучшения некоторых пользовательских элементов Drupal.

К примеру, мы хотим показать кнопку “Создать нового пользователя” только тогда, когда заполнены поля “Почта” и “Имя пользователя”.

<form enctype="multipart/form-data" action="/user/register" method="post" id="user-register-form" accept-charset="UTF-8">
<div id="edit-account" class="form-wrapper">
 <div class="form-item form-type-textfield form-item-name">
   <label for="edit-name">Username <span class="form-required" title="This field is required.">*</span></label>
   <input class="username form-text required" autocapitalize="none" type="text" id="edit-name" name="name" value="" size="60" maxlength="60" v-model="name">
 </div>
<div class="form-item form-type-textfield form-item-mail">
 <label for="edit-mail">Email <span class="form-required" title="This field is required.">*</span></label>
<input type="text" id="edit-mail" name="mail" value="" size="60" maxlength="254" class="form-text required" v-model="mail">
</div>
<div class="form-actions form-wrapper" id="edit-actions"><input type="submit" id="edit-submit"
name="op" value="Create new account" class="form-submit" v-show="name && mail"></div>
</div>
</form>

var app = new Vue({
 el: ‘#user-register-form’,
 data: {
   name: ”,
   mail: ”,
 }
})

Компоненты Vue.js

Сообщество Vue.js может предложить множество потрясающих компонентов, один из которых попробуем использовать.

Цель, проверить входные данные на стороне клиента, добавим следующее:

<script src=”https://cdn.jsdelivr.net/vee-validate/2.0.0-beta.25/vee-validate.js”></script>

vee-validate это легкий плагин Vue.js, позволяющий проверять поля ввода и отображать ошибки

Изменим элементы ввода

<input class="username form-text required" autocapitalize="none" type="text" id="edit-name"
name="name" value="" size="60" maxlength="60" v-model="name" v-validate.initial="name"
data-rules="required|alpha|min:3">
<input type="text" id="edit-mail" name="mail" value="" size="60" maxlength="254"
class="form-text required" v-model="mail" v-validate.initial="email"
data-rules="required|email">

Как вы видите, использовать Vue.js и ее компоненты для улучшения существующих элементов – не сложно.

Vue.js и другие библиотеки

В этом примере интегрируем jQuery плагин select2 обернув его в свой компонент.

<div id="el"></div>

<!– using string template here to work around HTML <option> placement restriction –>
<script type="text/x-template" id="demo-template">
  <div>
    <p>Selected: {{ selected }}</p>
    <select2 ptions="options" v-model="selected">
      <option disabled value="0">Select one</option>
    </select2>
  </div>
</script>

<script type="text/x-template" id="select2-template">
  <select>
    <slot></slot>
  </select>
</script>

Vue.component(’select2′, {
  props: [‘options’, ‘value’],
  template: ‘#select2-template’,
  mounted: function () {
    var vm = this
    $(this.$el)
      // init select2
      .select2({ data: this.options })
      .val(this.value)
      .trigger(‘change’)
      // emit event on change.
      .on(‘change’, function () {
        vm.$emit(‘input’, this.value)
      })
  },
  watch: {
    value: function (value) {
      // update value
      $(this.$el).val(value).trigger(‘change’);
    },
    options: function (options) {
      // update options
      $(this.$el).select2({ data: options })
    }
  },
  destroyed: function () {
    $(this.$el).off().select2(‘destroy’)
  }
})

var vm = new Vue({
  el: ‘#el’,
  template: ‘#demo-template’,
  data: {
    selected: 2,
    options: [
      { id: 1, text: ‘Hello’ },
      { id: 2, text: ‘World’ }
    ]
  }
});

Vue.js не ведет себя так, как будто она одна на весь сайт (в отличии от React).
Мы можем использовать другие js-компоненты и позволить им работать с Virtual DOM.

Одностраничное приложение

Все что нужно для создания одностраничного приложения – есть в vue-router.

<script src=”https://unpkg.com/vue-router/dist/vue-router.js”></script>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

<div id="app">
  <h1>Hello App!</h1>
  <p>
    <!– use router-link component for navigation. –>
    <!– specify the link by passing the `to` prop. –>
    <!– <router-link> will be rendered as an `<a>` tag by default –>
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
  </p>
  <!– route outlet –>
  <!– component matched by the route will render here –>
  <router-view></router-view>
</div>

const Foo = { template: ‘<div>foo</div>’ }
const Bar = { template: ‘<div>bar</div>’ }

// Each route should map to a component. The "component" can
// either be an actual component constructor created via
// Vue.extend(), or just a component options object.
// We’ll talk about nested routes later.
const routes = [
  { path: ‘/foo’, component: Foo },
  { path: ‘/bar’, component: Bar }
]

// You can pass in additional options here, but let’s
// keep it simple for now.
const router = new VueRouter({
  routes // short for routes: routes
})

// Make sure to inject the router with the router option to make the
// whole app router-aware.
const app = new Vue({
  router
}).$mount(‘#app’)

Заключение

Как мы уже убедились – Vue.js прост в использвании, и полезен для проектов любого масштаба.
Надеюсь, после прочтения статьи, вы начнете удовлетворять свое любопытство на практике.
Сылки ниже могут быть полезны.

http://vuejs.org/
https://www.npmjs.com/package/vue
https://www.drupal.org/project/vuejs
http://about.gitlab.com/2016/10/20/why-we-chose-vue/
https://github.com/jcottrell/vue-example-contact-form
https://medium.freecodecamp.com/vue-js-introduction-for-people-who-know-just-enough-jquery-to-get-by-eab5aa193d77

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 2 Спасибо

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

Drupal и vue.js: как работать без jquery

Вольный перевод: https://www.adcisolutions.com/knowledge/drupal-vuejs-how-work-without-jquery

Начиная с 5-ой версии, Drupal содержит jQuery.
Это замечательный инструмент для разработчика. Был)
В настоящее время мы сталкиваемся с массой задач, проблем, которые эта библиотека не решает, и не снимает.

Зачем обращать внимание на Vue.js? О чем пойдет речь в статье?

Как улучшить пользовательский интерфейс без jQuery. Как работать с компонентами Vue.js. Как интегрировать Vue.js со сторонними библиотеками. Как создать простое одностраничное приложение.

Начало

Самый простой способ подключить библиотеку vue.js – используя тег script

<script src="https://unpkg.com/vue"></script>

Кроме этого можно использовать npm пакет или модуль drupal.

Улучшение пользовательского интерфейса

Увы, Drupal не позволяет нам разрабатывать современный реактивный пользовательский интерфейс.
В ядре есть jQuery – но эта либа, не для этих дел)
Попробуем Vue.js для улучшения некоторых пользовательских элементов Drupal.

К примеру, мы хотим показать кнопку “Создать нового пользователя” только тогда, когда заполнены поля “Почта” и “Имя пользователя”.

<form enctype="multipart/form-data" action="/user/register" method="post" id="user-register-form" accept-charset="UTF-8">
<div id="edit-account" class="form-wrapper">
 <div class="form-item form-type-textfield form-item-name">
   <label for="edit-name">Username <span class="form-required" title="This field is required.">*</span></label>
   <input class="username form-text required" autocapitalize="none" type="text" id="edit-name" name="name" value="" size="60" maxlength="60" v-model="name">
 </div>
<div class="form-item form-type-textfield form-item-mail">
 <label for="edit-mail">Email <span class="form-required" title="This field is required.">*</span></label>
<input type="text" id="edit-mail" name="mail" value="" size="60" maxlength="254" class="form-text required" v-model="mail">
</div>
<div class="form-actions form-wrapper" id="edit-actions"><input type="submit" id="edit-submit"
name="op" value="Create new account" class="form-submit" v-show="name && mail"></div>
</div>
</form>

var app = new Vue({
 el: ‘#user-register-form’,
 data: {
   name: ”,
   mail: ”,
 }
})

Компоненты Vue.js

Сообщество Vue.js может предложить множество потрясающих компонентов, один из которых попробуем использовать.

Цель, проверить входные данные на стороне клиента, добавим следующее:

<script src=”https://cdn.jsdelivr.net/vee-validate/2.0.0-beta.25/vee-validate.js”></script>

vee-validate это легкий плагин Vue.js, позволяющий проверять поля ввода и отображать ошибки

Изменим элементы ввода

<input class="username form-text required" autocapitalize="none" type="text" id="edit-name"
name="name" value="" size="60" maxlength="60" v-model="name" v-validate.initial="name"
data-rules="required|alpha|min:3">
<input type="text" id="edit-mail" name="mail" value="" size="60" maxlength="254"
class="form-text required" v-model="mail" v-validate.initial="email"
data-rules="required|email">

Как вы видите, использовать Vue.js и ее компоненты для улучшения существующих элементов – не сложно.

Vue.js и другие библиотеки

В этом примере интегрируем jQuery плагин select2 обернув его в свой компонент.

<div id="el"></div>

<!– using string template here to work around HTML <option> placement restriction –>
<script type="text/x-template" id="demo-template">
  <div>
    <p>Selected: {{ selected }}</p>
    <select2 ptions="options" v-model="selected">
      <option disabled value="0">Select one</option>
    </select2>
  </div>
</script>

<script type="text/x-template" id="select2-template">
  <select>
    <slot></slot>
  </select>
</script>

Vue.component(’select2′, {
  props: [‘options’, ‘value’],
  template: ‘#select2-template’,
  mounted: function () {
    var vm = this
    $(this.$el)
      // init select2
      .select2({ data: this.options })
      .val(this.value)
      .trigger(‘change’)
      // emit event on change.
      .on(‘change’, function () {
        vm.$emit(‘input’, this.value)
      })
  },
  watch: {
    value: function (value) {
      // update value
      $(this.$el).val(value).trigger(‘change’);
    },
    options: function (options) {
      // update options
      $(this.$el).select2({ data: options })
    }
  },
  destroyed: function () {
    $(this.$el).off().select2(‘destroy’)
  }
})

var vm = new Vue({
  el: ‘#el’,
  template: ‘#demo-template’,
  data: {
    selected: 2,
    options: [
      { id: 1, text: ‘Hello’ },
      { id: 2, text: ‘World’ }
    ]
  }
});

Vue.js не ведет себя так, как будто она одна на весь сайт (в отличии от React).
Мы можем использовать другие js-компоненты и позволить им работать с Virtual DOM.

Одностраничное приложение

Все что нужно для создания одностраничного приложения – есть в vue-router.

<script src=”https://unpkg.com/vue-router/dist/vue-router.js”></script>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

<div id="app">
  <h1>Hello App!</h1>
  <p>
    <!– use router-link component for navigation. –>
    <!– specify the link by passing the `to` prop. –>
    <!– <router-link> will be rendered as an `<a>` tag by default –>
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
  </p>
  <!– route outlet –>
  <!– component matched by the route will render here –>
  <router-view></router-view>
</div>

const Foo = { template: ‘<div>foo</div>’ }
const Bar = { template: ‘<div>bar</div>’ }

// Each route should map to a component. The "component" can
// either be an actual component constructor created via
// Vue.extend(), or just a component options object.
// We’ll talk about nested routes later.
const routes = [
  { path: ‘/foo’, component: Foo },
  { path: ‘/bar’, component: Bar }
]

// You can pass in additional options here, but let’s
// keep it simple for now.
const router = new VueRouter({
  routes // short for routes: routes
})

// Make sure to inject the router with the router option to make the
// whole app router-aware.
const app = new Vue({
  router
}).$mount(‘#app’)

Заключение

Как мы уже убедились – Vue.js прост в использвании, и полезен для проектов любого масштаба.
Надеюсь, после прочтения статьи, вы начнете удовлетворять свое любопытство на практике.
Сылки ниже могут быть полезны.

http://vuejs.org/
https://www.npmjs.com/package/vue
https://www.drupal.org/project/vuejs
http://about.gitlab.com/2016/10/20/why-we-chose-vue/
https://github.com/jcottrell/vue-example-contact-form
https://medium.freecodecamp.com/vue-js-introduction-for-people-who-know-just-enough-jquery-to-get-by-eab5aa193d77

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 2 Спасибо

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

Дружелюбный Drupal сайт (Василий Устинов) [DrupalCamp Краснодар 2016]

Череду докладов с DrupalCamp Краснодар 2016 продолжает Василий Устинов с докладом о том, чем является удобный и дружелюбный сайт с точки зрения пользователя и как сделать Drupal-сайт таковым!
Презентацию вы найдёте здесь -> https://www.slideshare.net/secret/GYZWYdirfp3gkp
Лайки, комментарии, подписка и репосты – лучшая поддержка хорошего доклада, смотрим и делимся с друзьями и коллегами!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

Дружелюбный Drupal сайт (Василий Устинов) [DrupalCamp Краснодар 2016]

Череду докладов с DrupalCamp Краснодар 2016 продолжает Василий Устинов с докладом о том, чем является удобный и дружелюбный сайт с точки зрения пользователя и как сделать Drupal-сайт таковым!
Презентацию вы найдёте здесь -> https://www.slideshare.net/secret/GYZWYdirfp3gkp
Лайки, комментарии, подписка и репосты – лучшая поддержка хорошего доклада, смотрим и делимся с друзьями и коллегами!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

Service Desk на базе Drupal (Максим Хабибуллин) [DrupalCamp Краснодар 2016]

Представляем вашему вниманию доклад Максима Хабибулина с ­DrupalCamp Краснодар 2016 о реальном кейсе работы над их Service Desk для промышленных предприятий, какой функционал реализовывали в сжатые сроки и много чего ещё интересного!
Видео: https://www.youtube.com/watch?v=QBEmJBgtaG8
Презентацию вы можете найти здесь -> https://www.slideshare.net/secret/BkV2XXZ0RmPgvb
Лайки, комментарии и подписка обязательна!!!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

Service Desk на базе Drupal (Максим Хабибуллин) [DrupalCamp Краснодар 2016]

Представляем вашему вниманию доклад Максима Хабибулина с ­DrupalCamp Краснодар 2016 о реальном кейсе работы над их Service Desk для промышленных предприятий, какой функционал реализовывали в сжатые сроки и много чего ещё интересного!
Видео: https://www.youtube.com/watch?v=QBEmJBgtaG8
Презентацию вы можете найти здесь -> https://www.slideshare.net/secret/BkV2XXZ0RmPgvb
Лайки, комментарии и подписка обязательна!!!

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

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

Профессия Drupal-разработчик (Николай Шаповалов) [DrupalCamp Краснодар 2016]

А в этом докладе с DrupalCamp Краснодар 2016 о том, что же это такое – быть Drupal-разработчиком, с нами поделился Николай Шаповалов.
Смотрим и комментируем, лайки и подписка тоже приветствуются!
Видео: https://www.youtube.com/watch?v=WUHu1fSLF10
Презентацию вы можете найти здесь -> https://www.slideshare.net/secret/ehOdq0pjy4VjcT
>> Все презентации с конференции “DrupalCamp Краснодар 2016″ (обновлен)

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

Профессия Drupal-разработчик (Николай Шаповалов) [DrupalCamp Краснодар 2016]

А в этом докладе с DrupalCamp Краснодар 2016 о том, что же это такое – быть Drupal-разработчиком, с нами поделился Николай Шаповалов.
Смотрим и комментируем, лайки и подписка тоже приветствуются!
Видео: https://www.youtube.com/watch?v=WUHu1fSLF10
Презентацию вы можете найти здесь -> https://www.slideshare.net/secret/ehOdq0pjy4VjcT
>> Все презентации с конференции “DrupalCamp Краснодар 2016″ (обновлен)

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 1 Спасибо

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

Марат Магдеев, СЕРКОНС: Переезд на CMS «1С-Битрикс» занял чуть больше недели

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

Медленная загрузка страниц сайта, отсутствие мобильной версии, проблемы линейных сотрудников (не разработчиков) с взаимодействием с CMS — все это ограничивало потенциал нашей компании. Мы решили, что сайт лидера рынка должен отвечать всем современным требованиям.

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

Марат Магдеев, СЕРКОНС: Переезд на CMS «1С-Битрикс» занял чуть больше недели

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

Медленная загрузка страниц сайта, отсутствие мобильной версии, проблемы линейных сотрудников (не разработчиков) с взаимодействием с CMS — все это ограничивало потенциал нашей компании. Мы решили, что сайт лидера рынка должен отвечать всем современным требованиям.

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

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

С каждым владельцем сайта хоть раз происходит очень неприятная вещь: его сайт кто-то взломал. Об этом можно узнать по разным признакам: появились непонятные страницы с кучей рекламы, пришло предупреждение из Гугла, Яндекса о том, что Ваш сайт взломан, сайт еле-еле грузится и так далее, одним словом с сайтом “что-то не так”.

Итак, приступим:

1. Устанавливаем модуль  drupalgeddon:

drush dl drupalgeddon

2. Устанавливаем  Site Audit:

drush dl site_audit --dev

3. Устанавливаем  Hacked!:

drush dl hacked --dev; drush en hacked -y

4. Устанавливаем  Security Review:

drush en security_review -y

Можно и сразу всё установить.

drush dl drupalgeddon -y; drush dl site_audit --dev -y; drush dl hacked --dev -y; drush en hacked -y; drush en security_review -y

5. Запускаем drupalgeddon в режиме проверки (аудита) сайта.

Что также запустит всё вышеустановленные модули и создаст файл отчета ‘report.html’. Мы его откроем и увидим наши проблемы.
Удаляем все найденные вломанными файлы, ноды, модули.
drush aa --html --bootstrap --detail --skip=insights > ./report.html
Находим все подозрительные файлы и директории и удаляем их. Усиливаем защиту сайта.

6. Запускаем Hacked в Drush

Просматриваем все измененные проекты/модули:

drush hacked-list-projects --force-rebuild
После этого для каждого измененного проекта/модуля, например changedproject, запускаем:

drush hacked-details changedproject
Также, после этого находим все файлы/директории, которых нет в проекте/модуле:

drush hacked-diff changedproject

7. Drupalgeddon

drush asec

8. Удаляем пользователей

drush user-cancel username
drush ucan username

9. Сбрасываем пароль первого пользователя/администратора

drush uli

10. Изменяем пароли пользователей drush user-password username –password="NEWPASS"
#или
drush upwd username –password="NEWPASS"

Переходим на сайте по /admin/reports/security-review/, смотрим, что у нас взломали.

11. Находим и удаляем взломанные файлы find . -size 494c -name "*.php"
# также можно так:
find . -size 494c -name "*.php" | xargs rm 12. Находим файлы с PCT4B инъекцией grep -Rl PCT4BA6ODSE .
# и
grep -Rl  q6ae4d5 . 13. Определяем местонахождение разных зараженных файлов grep -Rl SOL_TCP .
grep -Rl SOCK_STREAM .
grep -Rl SOCK_DGRAM .
grep -Rl SOL_UDP .
grep -Rl SO_REUSEADDR .
​grep -Rl SO_RCVTIMEO .
​​grep -Rl SO_SNDTIMEO .

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

cd /var/log/httpd/
grep -iR ‘ИМЯ_ЗАРАЖЕННОГО_ФАЙЛА.php’ .

Если Вы найдете какой-нибудь зараженный файл в модуле, то лучше удалить весь модуль и повторно загрузить чистый.

14. Устанавливаем правильные права

cd /DRUPAL_DIR find . -type d -print0 | xargs -0 chmod 755; find . -type f -print0 | xargs -0 chmod 644; chmod 777 sites/default/files; find ./sites/default/files -type d -print0 | xargs -0 chmod 777; find ./sites/default/files -type f -print0 | xargs -0 chmod 666;

Или создаем и запускаем скрипт.

Копируешь код скрипта в файл и называешь его, нарример “fix-permissions.sh” и запускаешь:

sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name
т.е. с нашими данными, это примерно так:

sudo bash fix-permissions.sh --drupal_path=..../директория_нашего_сайта --drupal_user=www-data

Также можно использовать скрипт для нормальных прав:

Запускаем его так:

/usr/local/bin/fix-permissions.sh --path=/home/USER/public_html --user=USER --group=GROUP

Скрипт для расстановки строгих прав:

Запускаем его так:

/usr/local/bin/fix-permissions-strict.sh --drupal_path=/home/USER/public_html --drupal_user=USER --httpd_group=GROUP

15. Проверяем лог файлы

grep cwd /var/log/exim/mainlog | grep -v /var/spool | awk -F"cwd=" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -n

В DirectAdmin:

/var/log/directadmin/error.log
/var/log/directadmin/errortaskq.log
/var/log/directadmin/system.log
/var/log/directadmin/security.log

В Apache:

/var/log/httpd/error_log
/var/log/httpd/access_log
/var/log/httpd/suexec_log
/var/log/httpd/fpexec_log
/var/log/httpd/domains/domain.com.error.log
/var/log/httpd/domains/domain.com.log
/var/log/messages (generic errors)

В Proftpd:

/var/log/proftpd/access.log
/var/log/proftpd/auth.log
/var/log/messages (generic errors)

В PureFTPd:

/var/log/pureftpd.log

В Dovecot и vm-pop3d:

/var/log/maillog
/var/log/messages

В сообщениях:

/var/log/messages

В exim:

/var/log/exim/mainlog
/var/log/exim/paniclog
/var/log/exim/processlog
/var/log/exim/rejectlog
#вместо ‘username’ впиши имя пользователя системы
/home/username/.php/php-mail.log

В mysqld:

Debian:

/var/log/syslog

В crond:

/var/log/cron

Чтобы удобнее просматривать логи:

less /var/log/filename

Где /var/log/filename это путь к лог файлу, который Вы собираетесь просмотреть. Если лог файл очень большой используйте команду “tail”:

tail -n 30 /var/log/filename

Где 30 это число линий от конца файла.

16. Удаляем подозрительные письма в exim

Настройте exim.conf для автоматического удаления подозрительных писем

vi /etc/exim.conf

Устанавливаем следующие значения:

ignore_bounce_errors_after = 0h
timeout_frozen_after = 0h

Удаляем замороженные (заблокированные) письма в exim

exipick -zi | xargs exim -Mrm

Удаляем письма в очереди

exim -bp | awk '{ print $3 }' | xargs exim -Mrm

Удаляем письма старше 1 дня

exiqgrep -z -o 86400 -i | xargs -r exim -Mrm

Устанавливаем ограничение на отправку писем в exim

vi /etc/virtual/limit_USER
#добавляем максимально разрешенное число писем за 1 день… например: 300
————————————————————————————————————
Дополнительно:
Защита от ботов fail2ban+csf сервера nginx c друпалом на борту

Тип материала:  Предлагаю решение Ключевые слова:  безопасность взлом drupalgeddon Модули и темы:  drupalgeddon site_audit hacked security_review




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Безопасность 5 Спасибо

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

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

С каждым владельцем сайта хоть раз происходит очень неприятная вещь: его сайт кто-то взломал. Об этом можно узнать по разным признакам: появились непонятные страницы с кучей рекламы, пришло предупреждение из Гугла, Яндекса о том, что Ваш сайт взломан, сайт еле-еле грузится и так далее, одним словом с сайтом “что-то не так”.

Итак, приступим:

1. Устанавливаем модуль  drupalgeddon:

drush dl drupalgeddon

2. Устанавливаем  Site Audit:

drush dl site_audit --dev

3. Устанавливаем  Hacked!:

drush dl hacked --dev; drush en hacked -y

4. Устанавливаем  Security Review:

drush en security_review -y

Можно и сразу всё установить.

drush dl drupalgeddon -y; drush dl site_audit --dev -y; drush dl hacked --dev -y; drush en hacked -y; drush en security_review -y

5. Запускаем drupalgeddon в режиме проверки (аудита) сайта.

Что также запустит всё вышеустановленные модули и создаст файл отчета ‘report.html’. Мы его откроем и увидим наши проблемы.
Удаляем все найденные вломанными файлы, ноды, модули.
drush aa --html --bootstrap --detail --skip=insights > ./report.html
Находим все подозрительные файлы и директории и удаляем их. Усиливаем защиту сайта.

6. Запускаем Hacked в Drush.

Просматриваем все измененные проекты/модули:

drush hacked-list-projects --force-rebuild
После этого для каждого измененного проекта/модуля, например changedproject, запускаем:

drush hacked-details changedproject
Также, после этого находим все файлы/директории, которых нет в проекте/модуле:

drush hacked-diff changedproject

7. Drupalgeddon

drush asec

8. Удаляем пользователей

drush user-cancel username
drush ucan username

9. Сбрасываем пароль первого пользователя/администратора

drush uli

10. Изменяем пароли пользователей drush user-password username –password="NEWPASS"
#или
drush upwd username –password="NEWPASS"

Переходим на сайте по /admin/reports/security-review/, смотрим, что у нас взломали.

11. Находим и удаляем взломанные файлы find . -size 494c -name "*.php"
# также можно так:
find . -size 494c -name "*.php" | xargs rm 12. Находим файлы с PCT4B инъекцией grep -Rl PCT4BA6ODSE .
# и
grep -Rl  q6ae4d5 . 13. Определяем местонахождение разных зараженных файлов grep -Rl SOL_TCP .
grep -Rl SOCK_STREAM .
grep -Rl SOCK_DGRAM .
grep -Rl SOL_UDP .
grep -Rl SO_REUSEADDR .
​grep -Rl SO_RCVTIMEO .
​​grep -Rl SO_SNDTIMEO .

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

cd /var/log/httpd/
grep -iR ‘ИМЯ_ЗАРАЖЕННОГО_ФАЙЛА.php’ .

Если Вы найдете какой-нибудь зараженный файл в модуле, то лучше удалить весь модуль и повторно загрузить чистый.

14. Устанавливаем правильные права

cd /DRUPAL_DIR find . -type d -print0 | xargs -0 chmod 755; find . -type f -print0 | xargs -0 chmod 644; chmod 777 sites/default/files; find ./sites/default/files -type d -print0 | xargs -0 chmod 777; find ./sites/default/files -type f -print0 | xargs -0 chmod 666;

Или создаем и запускаем скрипт.

Копируешь код скрипта в файл и называешь его, нарример “fix-permissions.sh” и запускаешь:

sudo bash fix-permissions.sh --drupal_path=your/drupal/path --drupal_user=your_user_name
т.е. с нашими данными, это примерно так:

sudo bash fix-permissions.sh --drupal_path=..../директория_нашего_сайта --drupal_user=www-data

Также можно использовать скрипт для нормальных прав:

Запускаем его так:

/usr/local/bin/fix-permissions.sh --path=/home/USER/public_html --user=USER --group=GROUP

Скрипт для расстановки строгих прав:

Запускаем его так:

/usr/local/bin/fix-permissions-strict.sh --drupal_path=/home/USER/public_html --drupal_user=USER --httpd_group=GROUP

Сейчас ещё модуль для drush появился для правильной расстановки прав для файлов:  File permissions

15. Проверяем лог файлы

grep cwd /var/log/exim/mainlog | grep -v /var/spool | awk -F"cwd=" '{print $2}' | awk '{print $1}' | sort | uniq -c | sort -n

В DirectAdmin:

/var/log/directadmin/error.log
/var/log/directadmin/errortaskq.log
/var/log/directadmin/system.log
/var/log/directadmin/security.log

В Apache:

/var/log/httpd/error_log
/var/log/httpd/access_log
/var/log/httpd/suexec_log
/var/log/httpd/fpexec_log
/var/log/httpd/domains/domain.com.error.log
/var/log/httpd/domains/domain.com.log
/var/log/messages (generic errors)

В Proftpd:

/var/log/proftpd/access.log
/var/log/proftpd/auth.log
/var/log/messages (generic errors)

В PureFTPd:

/var/log/pureftpd.log

В Dovecot и vm-pop3d:

/var/log/maillog
/var/log/messages

В сообщениях:

/var/log/messages

В exim:

/var/log/exim/mainlog
/var/log/exim/paniclog
/var/log/exim/processlog
/var/log/exim/rejectlog
#вместо ‘username’ впиши имя пользователя системы
/home/username/.php/php-mail.log

В mysqld:

Debian:

/var/log/syslog

В crond:

/var/log/cron

Чтобы удобнее просматривать логи:

less /var/log/filename

Где /var/log/filename это путь к лог файлу, который Вы собираетесь просмотреть. Если лог файл очень большой используйте команду “tail”:

tail -n 30 /var/log/filename

Где 30 это число линий от конца файла.

16. Удаляем подозрительные письма в exim

Настройте exim.conf для автоматического удаления подозрительных писем

vi /etc/exim.conf

Устанавливаем следующие значения:

ignore_bounce_errors_after = 0h
timeout_frozen_after = 0h

Удаляем замороженные (заблокированные) письма в exim

exipick -zi | xargs exim -Mrm

Удаляем письма в очереди

exim -bp | awk '{ print $3 }' | xargs exim -Mrm

Удаляем письма старше 1 дня

exiqgrep -z -o 86400 -i | xargs -r exim -Mrm

Устанавливаем ограничение на отправку писем в exim

vi /etc/virtual/limit_USER
#добавляем максимально разрешенное число писем за 1 день… например: 300
————————————————————————————————————
Дополнительно:
Защита от ботов fail2ban+csf сервера nginx c друпалом на борту

Тип материала:  Предлагаю решение Ключевые слова:  безопасность взлом drupalgeddon Модули и темы:  drupalgeddon site_audit hacked security_review




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Безопасность 5 Спасибо

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

Конец Mollom

Будьте бдительны!

Со 2 апреля 2018 года Acquia прекращает работу анти-спам сервиса Mollom.

Альтернатива:  reCAPTCHA и  Honeypot.

Источник: https://www.mollom.com/eol

Ключевые слова:  mollom антиспам Модули и темы:  mollom




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Безопасность 0 Спасибо

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

Конец Mollom

Будьте бдительны!

Со 2 апреля 2018 года Acquia прекращает работу анти-спам сервиса Mollom.

Альтернатива:  reCAPTCHA и  Honeypot.

Источник: https://www.mollom.com/eol

Ключевые слова:  mollom антиспам Модули и темы:  mollom




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Безопасность 0 Спасибо

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

Сайт девелопера «Эксперт» объединил инвесторов и покупателей недвижимости

Агентство qb.digital разработало новый сайт для девелоперской Группы компаний «Эксперт».

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

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

Prepopulate значений множественных коллекций полей в entity form

Есть:

1. Форма entity form
2. В этой форме множественное поле типа “Коллекция полей” с двумя дочерними полями: тест (число) и список выбора (select).

Требуется:

Сделать в hook_form_alter добавление и предзаполнение коллекций полей множественными значениями по умолчанию при создании новой сущности. То есть автоматически добавить несколько рядов произвольных данных, не прибегая к ручному добавлению с помощью кнопки “Add more”. И даже вообще скрыть кнопки “Add more” и “Remove”, поскольку в рамках именно этой задачи они не нужны.

Решение:

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

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {

        // Проверяем, что это "наша" форма и что она используется в данный момент для создания новой сущности
        // (а не для редактирования)
    if ($form_id == 'my_form_name' && isset($form_state['build_info']['args'][0]->is_new)) {

        // Общее количество значений для инициализации        
        $items_count = 6;
        // Название поля-коллекции
        $field_name = 'field_field_collection';
        $form_theme = $form[$field_name][LANGUAGE_NONE]['#theme'];
        
        // Скрываем кнопки "Add more" и "Remove"
        $form[$field_name][LANGUAGE_NONE][0]['remove_button']['#access'] = FALSE;
        $form[$field_name][LANGUAGE_NONE]['add_more']['#access'] = FALSE;

        $items = &$form_state['field'][$field_name][LANGUAGE_NONE];
        
        // Генерируем необходимое количество значений для коллекции
        if ($items_count > 1 and $items['items_count'] != $items_count) {
          $items['items_count'] = $items_count;
          $items['field']['cardinality'] = $items_count;
          $form[$field_name][LANGUAGE_NONE] = field_multiple_value_form($items['field'], $items['instance'], LANGUAGE_NONE, array(), $form, $form_state);
            // Восстанавливаем имя функции темы формы поскольку field_multiple_value_form() изменяет его
            $form[$field_name][LANGUAGE_NONE]['#theme'] = $form_theme;
        }

        // Заполняем новые ряды значениями
        for ($delta = 0; $delta < $items_count; $delta++) {
          // Текст/число по умолчанию
          $form['field_field_collection'][LANGUAGE_NONE][$delta]['field_user_number'][LANGUAGE_NONE][0]['value']['#default_value'] = '4';
          // Select (позиция) по умолчанию
          $form['field_field_collection'][LANGUAGE_NONE][$delta]['field_user_select'][LANGUAGE_NONE]['#default_value'] = '1';
            }
    }
}?>

PS. Для новичков, и во избежание “у меня не работает!”. Обратите внимание, что в массивах отличающихся типов полей может быть разный “маршрут” до значений по умолчанию ‘#default_value’ (строчки внутри цикла for). Также не забывайте в этих строчках изменить имена дочерних полей на имена ваших полей.

Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  multivalue entity form prepopulate множественное поле field collection коллекция полей




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 3 Спасибо

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

Prepopulate значений множественных коллекций полей в entity form

Есть:

1. Форма entity form
2. В этой форме множественное поле типа “Коллекция полей” с двумя дочерними полями: тест (число) и список выбора (select).

Требуется:

Сделать в hook_form_alter добавление и предзаполнение коллекций полей множественными значениями по умолчанию при создании новой сущности. То есть автоматически добавить несколько рядов произвольных данных, не прибегая к ручному добавлению с помощью кнопки “Add more”. И даже вообще скрыть кнопки “Add more” и “Remove”, поскольку в рамках именно этой задачи они не нужны.

Решение:

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

<?php
function mymodule_form_alter(&$form, &$form_state, $form_id) {

        // Проверяем, что это "наша" форма и что она используется в данный момент для создания новой сущности
        // (а не для редактирования)
    if ($form_id == 'my_form_name' && isset($form_state['build_info']['args'][0]->is_new)) {

        // Общее количество значений для инициализации        
        $items_count = 6;
        // Название поля-коллекции
        $field_name = 'field_field_collection';
        $form_theme = $form[$field_name][LANGUAGE_NONE]['#theme'];
        
        // Скрываем кнопки "Add more" и "Remove"
        $form[$field_name][LANGUAGE_NONE][0]['remove_button']['#access'] = FALSE;
        $form[$field_name][LANGUAGE_NONE]['add_more']['#access'] = FALSE;

        $items = &$form_state['field'][$field_name][LANGUAGE_NONE];
        
        // Генерируем необходимое количество значений для коллекции
        if ($items_count > 1 and $items['items_count'] != $items_count) {
          $items['items_count'] = $items_count;
          $items['field']['cardinality'] = $items_count;
          $form[$field_name][LANGUAGE_NONE] = field_multiple_value_form($items['field'], $items['instance'], LANGUAGE_NONE, array(), $form, $form_state);
            // Восстанавливаем имя функции темы формы поскольку field_multiple_value_form() изменяет его
            $form[$field_name][LANGUAGE_NONE]['#theme'] = $form_theme;
        }

        // Заполняем новые ряды значениями
        for ($delta = 0; $delta < $items_count; $delta++) {
          // Текст/число по умолчанию
          $form['field_field_collection'][LANGUAGE_NONE][$delta]['field_user_number'][LANGUAGE_NONE][0]['value']['#default_value'] = '4';
          // Select (позиция) по умолчанию
          $form['field_field_collection'][LANGUAGE_NONE][$delta]['field_user_select'][LANGUAGE_NONE]['#default_value'] = '1';
            }
    }
}?>

PS. Для новичков, и во избежание “у меня не работает!”. Обратите внимание, что в массивах отличающихся типов полей может быть разный “маршрут” до значений по умолчанию ‘#default_value’ (строчки внутри цикла for). Также не забывайте в этих строчках изменить имена дочерних полей на имена ваших полей.

Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  multivalue entity form prepopulate множественное поле field collection коллекция полей




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 3 Спасибо

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

Выпущен Drupal 8.3.1

Настоятельно рекомендуется обновить!!!
В данной версии устранена критическая уязвимость.

Краткое описание. Критическая уязвимость DRUPAL-SA-CORE-2017-002 позволяет обходить права доступа. Возможна при следующих условиях:

На сайте активен модуль веб-служб RESTful (rest). Разрешены PATCH запросы . Атакующий имеет или может создать учетную запись. Проще говоря – атакующий авторизован.

Хотя обычно команда разработчиков безопасности Drupal.org не предоставляют выпуски безопасности для не поддерживаемых минорных версий, учитывая потенциальную серьезность этой проблемы, они представили версию 8.2.8, чтобы сайты, которые сразу не могут обновиться до Drupal 8.3.0, смогли это сделать как можно безопаснее.

Версия Drupal 8.3.1

Важно!!!
Если вы используете Drupal 8.2.7 или более раннюю его версию, то обновите Drupal до версии Drupal 8.2.8 и лишь по том устанавливайте обновление до Drupal 8.3.1 Это поможет более безопасно установить последнюю версию “восьмёрки”. (Рано или поздно, вам все равно придётся планировать обновление до 8.3.х, так как серия 8.2.x устарела и больше не будет получать обновлений.)

Версия Drupal 8.2.8

Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Безопасность 1 Спасибо

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

Выпущен Drupal 8.3.1

Настоятельно рекомендуется обновить!!!
В данной версии устранена критическая уязвимость.

Краткое описание. Критическая уязвимость DRUPAL-SA-CORE-2017-002 позволяет обходить права доступа. Возможна при следующих условиях:

На сайте активен модуль веб-служб RESTful (rest). Разрешены PATCH запросы . Атакующий имеет или может создать учетную запись. Проще говоря – атакующий авторизован.

Хотя обычно команда разработчиков безопасности Drupal.org не предоставляют выпуски безопасности для не поддерживаемых минорных версий, учитывая потенциальную серьезность этой проблемы, они представили версию 8.2.8, чтобы сайты, которые сразу не могут обновиться до Drupal 8.3.0, смогли это сделать как можно безопаснее.

Версия Drupal 8.3.1

Важно!!!
Если вы используете Drupal 8.2.7 или более раннюю его версию, то обновите Drupal до версии Drupal 8.2.8 и лишь по том устанавливайте обновление до Drupal 8.3.1 Это поможет более безопасно установить последнюю версию “восьмёрки”. (Рано или поздно, вам все равно придётся планировать обновление до 8.3.х, так как серия 8.2.x устарела и больше не будет получать обновлений.)

Версия Drupal 8.2.8

Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Безопасность 1 Спасибо

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

Рынок Drupal (Александр Воинов) [DrupalCamp Краснодар 2016]

Александр Воинов о мировом рынке Drupal.
Ссылка на презентацию: https://www.slideshare.net/secret/KIvd2LUeWAXLgh

Мало кто реально осознает мощь рынка Drupal.
Мы провели гигантскую аналитическую работу собирая факты и делая выводы.
Мы подготовили фильм о мощи друпал, который будет показан во время доклада.
Премьера фильма о рынке Друпал!
Фильм и доклад будут полезны разработчикам, руководителям девелоперских компаний и конечно клиентам.

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

Рынок Drupal (Александр Воинов) [DrupalCamp Краснодар 2016]

Александр Воинов о мировом рынке Drupal.
Ссылка на презентацию: https://www.slideshare.net/secret/KIvd2LUeWAXLgh

Мало кто реально осознает мощь рынка Drupal.
Мы провели гигантскую аналитическую работу собирая факты и делая выводы.
Мы подготовили фильм о мощи друпал, который будет показан во время доклада.
Премьера фильма о рынке Друпал!
Фильм и доклад будут полезны разработчикам, руководителям девелоперских компаний и конечно клиентам.

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

Drupal в КубГУ (Сергей Синица) [DrupalCamp Краснодар 2016]

Доклад Сергея Синицы о внедрении CMS Drupal в инфраструктуру крупнейшего ВУЗа ЮФО – КубГУ.
Видео: https://www.youtube.com/watch?v=ECvbF5zCcTU
Ссылка на презентацию: https://www.slideshare.net/secret/jVTpOp1yLFGKzN
>> Все презентации с конференции “DrupalCamp Краснодар 2016″

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

Drupal в КубГУ (Сергей Синица) [DrupalCamp Краснодар 2016]

Доклад Сергея Синицы о внедрении CMS Drupal в инфраструктуру крупнейшего ВУЗа ЮФО – КубГУ.
Видео: https://www.youtube.com/watch?v=ECvbF5zCcTU
Ссылка на презентацию: https://www.slideshare.net/secret/jVTpOp1yLFGKzN
>> Все презентации с конференции “DrupalCamp Краснодар 2016″

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  DrupalCamp DrupalYug




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Drupal Юг 2 Спасибо

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

DataLife Engine v.11.3 Final Release

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

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

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

jCarousel 8.x-4.0 released

Пару дней назад стал co-maintainer jCarousel и Выпустил релиз jCarousel 8.x-4.0
Код полностью переписан с учетом последней версии библиотеки.
Что поменялось:

jCarousel v0.3 обновлены на более адекватно выглядящие skins без изменения имен. Интеграция с Views была переписана и реализован jCarousel пейджер для корректной поддержки AJAX прелоада слайдов Добавлен форматер поля jCarousel. Для обратной совместимости через админку можно включить глобальную загрузку библиотеки (чтобы работала jcarousel_add() из D7. (Not recomended) Страница помощи приведена к актуальному состоянию. Поддерживается API jCarousel v0.3 насколько получилось в полном объеме. События и настройки настраивается через data-* атрибуты Подключение своих шкур через MYMODULE.jcarousel_skins.yml file

Планы

улучшить responsive добавить swipe

Отзывы и тестирование приветствуется.

PS: Версия 7.х поддерживается в ограниченном режиме – что смогу буду править по мере наличия времени.

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




email





facebook





linkedin





twitter





google+





pinterest
4 Спасибо

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

jCarousel 8.x-4.0 released

Пару дней назад стал co-maintainer jCarousel и Выпустил релиз jCarousel 8.x-4.0
Код полностью переписан с учетом последней версии библиотеки.
Что поменялось:

jCarousel v0.3 обновлены на более адекватно выглядящие skins без изменения имен. Интеграция с Views была переписана и реализован jCarousel пейджер для корректной поддержки AJAX прелоада слайдов Добавлен форматер поля jCarousel. Для обратной совместимости через админку можно включить глобальную загрузку библиотеки (чтобы работала jcarousel_add() из D7. (Not recomended) Страница помощи приведена к актуальному состоянию. Поддерживается API jCarousel v0.3 насколько получилось в полном объеме. События и настройки настраивается через data-* атрибуты Подключение своих шкур через MYMODULE.jcarousel_skins.yml file

Планы

улучшить responsive добавить swipe

Отзывы и тестирование приветствуется.

PS: Версия 7.х поддерживается в ограниченном режиме – что смогу буду править по мере наличия времени.

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




email





facebook





linkedin





twitter





google+





pinterest
4 Спасибо

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

Битрикс24.Сингапур: новая CRM и Канбан в задачах

13 апреля российская компания «Битрикс24» провела презентацию своей новой CRM. Тотальному изменению подвергся интерфейс, сценарии работы с клиентами и система поиска в CRM – сервис стал работать на 300% быстрее.

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

Битрикс24.Сингапур: новая CRM, Канбан в задачах и свежие сценарии распознавания лиц

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

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

CSS3 Анимация для сайта

В данном примере мы рассмотрим способ добавления CSS3 анимации на страницу, оформленную в стиле Landing Page. Мы не будем писать свои стили анимации, а воспользуемся библиотекой Animate.css данная библиотека предлагает около 70 эффектов крос-браузерной анимации, то есть анимация будет работать в Opera, IE, Chrome, FireFox и т.д.

Источник: https://dle-news.ru/blog/1720-css3-animaciya-dlya-sayta.html

Drupal 8.3.0

Выпущена обещанная версия друпала – drupal 8.3.0

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

  Минорная версия drupal 8.3.0 обеспечивает новые улучшения и функциональность без нарушения обратной совместимости (анг. backward compatibility или сокращённо BC) для общедоступных API. Обратите внимание, что могут быть изменения (не совместимостью с ядром Drupal) во внутренних API, экспериментальных модулях и темах.

 Дополнительные сведения об изменениях API смотрите в отчетах об изменении ядра Drupal. Переводчики друпала должны принимать во внимание незначительные изменения после последней версии.

 Изменения в новой версии

Исправлена ошибка #2751325. Это исправление может потребовать обновление клиентского приложения.

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

 Важные исправления ошибок от версии друпала 8.2.x

# 2640496, # 2606772, # 2665152, # 2846782, # 2822190

 Новые стабильные функции

 В этой версии друпала, модуль BigPipe стал стабильным Этот модуль обеспечивает продвинутую реализацию стратегии отображения страницы BigPipe Facebook, что значительно улучшает воспринимаемую производительность страниц с динамическим, персонализированным или неприкасаемым содержимым. См. cтраницу BigPipe.

 Улучшенные функции авторинга

#2831442, #2421427, #2307451, #2239419

Улучшено создание сайтов и административные функции

#665790, #2656278, #2574767, #2830449, #2840832, #2075889, #2826728 и разрешен #2858852.

Улучшенные функции веб-служб

 Drupal 8.3.0 значительно улучшает поддержку REST и API-интерфейса со следующими новыми функциями, улучшениями API и разработчиками, а также исправлениями ошибок. #2808233, #2815845, #2291055, #2807501, #2737719, #2808233

 Улучшения в тестировании

 #2605664, #2809117, #2294731, #2849222, #2770921

 Добавлены новые экспериментальные модули

 Workflows, Layout Discovery, Field Layout

 Обновлены экспериментальные модули

 Migrate, Migrate Drupal and Migrate Drupal UI, Settings Tray, DateTime Range, Place Block, Inline Form Errors, Content Moderation

 Важно! Если вы ранее установили Content Moderation в 8.2.x, вам необходимо удалить его перед обновлением до 8.3.0, иначе вы столкнетесь с фатальными ошибками. После обновления и повторного включения модерации контента вам необходимо будет перенастроить рабочие процессы и переходы с помощью нового модуля, поэтому обязательно заблаговременно создайте их резервную копию. (Путь обновления не поставляется, поскольку модуль по-прежнему имеет альфа-стабильность.)

 Модуль Content Moderation включает в себя множество дополнительных улучшений в этой версии:

 #2787881, #2799785, #2809123, #2830581, #2850601

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

 #2758737, #2866109, #2809477

 Другие улучшения API

 #2810303, #2287073, #2721179, #2767025, добавлены #2789315 и #2810381 чтобы дать #2812811, общий API и будут использоваться для Node и Comment типов.

З.Ы. Список экспериментальных модулей в друпал 8

И многое другое…

Полная информация об версии друпала 8.3.0

Версия Drupal:  Drupal 8.* Ключевые слова:  релизы Drupal 8




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 5 Спасибо

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

Drupal 8.3.0

Выпущена обещанная версия друпала – drupal 8.3.0

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

  Минорная версия drupal 8.3.0 обеспечивает новые улучшения и функциональность без нарушения обратной совместимости (анг. backward compatibility или сокращённо BC) для общедоступных API. Обратите внимание, что могут быть изменения (не совместимостью с ядром Drupal) во внутренних API, экспериментальных модулях и темах.

 Дополнительные сведения об изменениях API смотрите в отчетах об изменении ядра Drupal. Переводчики друпала должны принимать во внимание незначительные изменения после последней версии.

 Изменения в новой версии

Исправлена ошибка #2751325. Это исправление может потребовать обновление клиентского приложения.

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

 Важные исправления ошибок от версии друпала 8.2.x

# 2640496, # 2606772, # 2665152, # 2846782, # 2822190

 Новые стабильные функции

 В этой версии друпала, модуль BigPipe стал стабильным Этот модуль обеспечивает продвинутую реализацию стратегии отображения страницы BigPipe Facebook, что значительно улучшает воспринимаемую производительность страниц с динамическим, персонализированным или неприкасаемым содержимым. См. cтраницу BigPipe.

 Улучшенные функции авторинга

#2831442, #2421427, #2307451, #2239419

Улучшено создание сайтов и административные функции

#665790, #2656278, #2574767, #2830449, #2840832, #2075889, #2826728 и разрешен #2858852.

Улучшенные функции веб-служб

 Drupal 8.3.0 значительно улучшает поддержку REST и API-интерфейса со следующими новыми функциями, улучшениями API и разработчиками, а также исправлениями ошибок. #2808233, #2815845, #2291055, #2807501, #2737719, #2808233

 Улучшения в тестировании

 #2605664, #2809117, #2294731, #2849222, #2770921

 Добавлены новые экспериментальные модули

 Workflows, Layout Discovery, Field Layout

 Обновлены экспериментальные модули

 Migrate, Migrate Drupal and Migrate Drupal UI, Settings Tray, DateTime Range, Place Block, Inline Form Errors, Content Moderation

 Важно! Если вы ранее установили Content Moderation в 8.2.x, вам необходимо удалить его перед обновлением до 8.3.0, иначе вы столкнетесь с фатальными ошибками. После обновления и повторного включения модерации контента вам необходимо будет перенастроить рабочие процессы и переходы с помощью нового модуля, поэтому обязательно заблаговременно создайте их резервную копию. (Путь обновления не поставляется, поскольку модуль по-прежнему имеет альфа-стабильность.)

 Модуль Content Moderation включает в себя множество дополнительных улучшений в этой версии:

 #2787881, #2799785, #2809123, #2830581, #2850601

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

 #2758737, #2866109, #2809477

 Другие улучшения API

 #2810303, #2287073, #2721179, #2767025, добавлены #2789315 и #2810381 чтобы дать #2812811, общий API и будут использоваться для Node и Comment типов.

З.Ы. Список экспериментальных модулей в друпал 8

И многое другое…

Полная информация об версии друпала 8.3.0

Версия Drupal:  Drupal 8.* Ключевые слова:  релизы Drupal 8




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 5 Спасибо

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

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

Практическое занятие по работе со содержимым (контентом) страниц, меню сайта и адресами страниц на Drupal 8 для самых новичков.

Содержание: добавление нового материала, редактирование форматирования контента страницы, добавление изображений и подписей к ним, добавление страницы в меню сайта, настройка адреса страницы.

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

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 2 Спасибо

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

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

Практическое занятие по работе со содержимым (контентом) страниц, меню сайта и адресами страниц на Drupal 8 для самых новичков.

Содержание: добавление нового материала, редактирование форматирования контента страницы, добавление изображений и подписей к ним, добавление страницы в меню сайта, настройка адреса страницы.

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

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 2 Спасибо

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

DataLife Engine v.11.3 Press Release


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

Завершен основной этап разработки версии 11.3, релиз находится на тестировании и предрелизной подготовке, ну а пока мы предлагаем вам ознакомиться с информацией о том, что ждет вас с выходом новой версии. В данном релизе вас ожидает новый модуль “редиректы”, новая улучшенная система кеширования memcache, возможность прикрепления файлов в обратной связи для отправки, улучшенная система редактирования комментариев в панели управления и многое другое, об этом и другом читайте подробнее …

Источник: https://dle-news.ru/pressrelease/1718-datalife-engine-v113-press-release.html

DataLife Engine v.11.3 Press Release


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

Завершен основной этап разработки версии 11.3, релиз находится на тестировании и предрелизной подготовке, ну а пока мы предлагаем вам ознакомиться с информацией о том, что ждет вас с выходом новой версии. В данном релизе вас ожидает новый модуль “редиректы”, новая улучшенная система кеширования memcache, возможность прикрепления файлов в обратной связи для отправки, улучшенная система редактирования комментариев в панели управления и многое другое, об этом и другом читайте подробнее …

Источник: https://dle-news.ru/pressrelease/1718-datalife-engine-v113-press-release.html

Новый Битрикс24: CRM работает на Автопилоте. 13 апреля смотрите онлайн

Битрикс24 представляет Автопилот  - технологию CRM нового поколения, которая навсегда изменит порядок работы и контроля в компании. Это только одна из потрясающих новинок в Битрикс24, которые мы покажем в свой пятилетний день рождения 13 апреля.

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

Создания Nginx VirtualHost и установка Drupal одной командой

Установка сайта на Друпале рутинное дело. Нужно создать конфиг виртуального хоста, создать папочки для сайта, создать базу данных, перезагрузить все что требуется, скачать сам друпал и установить его. Но ведь это все можно автоматизировать и после этого наслаждаться благами цивилизации. Погнали!

Для начала нам нужно создать файл с конфигом Nginx для Drupal. Создадим папку conf. В ней файл drupal и в вставим в него:

server {
    listen 80;
    listen [::]:80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    listen 80;
        listen [::]:80;

        server_name example.com;
        root /var/www/example.com;

        client_max_body_size 100m;

        access_log off;
        error_log /home/username/logs/nginx-example.com-error.log; ## username заменить на ваше имя пользователя

        # Enable compression, this will help if you have for instance advagg‎ module
        # by serving Gzip versions of the files.
        gzip_static on;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        # This matters if you use drush prior to 5.x
        # After 5.x backups are stored outside the Drupal install.
        #location = /backup {
        #        deny all;
        #}

        # Very rarely should these ever be accessed outside of your lan
        location ~* \.(txt|log)$ {
                allow 192.168.0.0/16;
                deny all;
        }

        location ~ \..*/.*\.php$ {
                return 403;
        }

        # No no for private
        location ~ ^/sites/.*/private/ {
                return 403;
        }

        # Block access to "hidden" files and directories whose names begin with a
        # period. This includes directories used by version control systems such
        # as Subversion or Git to store control files.
        location ~ (^|/)\. {
                return 403;
        }

        location / {
                # This is cool because no php is touched for static content
                try_files $uri @rewrite;
        }

        location @rewrite {
                # You have 2 options here
                # For D7 and above:
                # Clean URLs are handled in drupal_environment_initialize().
                rewrite ^ /index.php;
                # For Drupal 6 and bwlow:
                # Some modules enforce no slash (/) at the end of the URL
                # Else this rewrite block wouldn’t be needed (GlobalRedirect)
                #rewrite ^/(.*)$ /index.php?q=$1;
        }

        location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }

        # Fighting with Styles? This little gem is amazing.
        # This is for D6
        #location ~ ^/sites/.*/files/imagecache/ {
        # This is for D7 and D8
        location ~ ^/sites/.*/files/styles/ {
                try_files $uri @rewrite;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

Установим pwgen:

apt-get install pwgen

Создаем в файл si.sh в папке пользователя /home/username/:

#!/bin/bash
sd=/var/www # папка где будет создан сайт
sc=/home/username/conf # папка с конфигом
PASS=`pwgen -s 30 1` # генерируем пароль
echo "Creating virtual host $1"
sudo cp $sc/drupal /etc/nginx/conf.d/$1.conf
echo "Updating vhost confin for $1"
sudo sed -i s,example.com,$1,g /etc/nginx/conf.d/$1.conf
sudo sed -i s,$sd/example.com,$sd/$1,g /etc/nginx/conf.d/$1.conf
echo "Restarting Nginx"
sudo systemctl reload nginx
echo "Create database $2"
mysql -u root -p << EOF
CREATE DATABASE $2 CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER ‘$2′@‘localhost’ IDENTIFIED BY ‘$PASS’;
GRANT ALL PRIVILEGES ON $2.* TO ‘$2′@‘localhost’;
FLUSH PRIVILEGES;
EOF
echo "Instal Drupal"
cd $sd
drush dl drupal-7.54
mv drupal-7.54 $1
cd $1
git clone https://github.com/totaku/fellema-dev.git profiles/fellema # мой профиль для Drupal
drush si fellema –locale=ru –site-name=$1  –db-url=mysql://$2:$PASS@localhost/$2 –account-name=admin –account-pass=admin –account-mail=admin@admin.admin
chmod 0777 -R $sd/$1/sites/default/files
echo "Finished!"
echo "MySQL user created."
echo "Username: $2"
echo "Password: $PASS"
echo "Local address: $sd/$1"
echo "Web address: http://$1"

Сохраним и дадим файлу права на исполнение:

sudo chmod a+x si.sh

Скрипт готов к работе, запускаем его с помощью команды:

./si test.com test

Где test.com ваш домен, test база данных сайта и имя пользователя.

Орингинал как обычно в блоге.

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  FAQ 3 Спасибо

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

Создания Nginx VirtualHost и установка Drupal одной командой

Установка сайта на Друпале рутинное дело. Нужно создать конфиг виртуального хоста, создать папочки для сайта, создать базу данных, перезагрузить все что требуется, скачать сам друпал и установить его. Но ведь это все можно автоматизировать и после этого наслаждаться благами цивилизации. Погнали!

Для начала нам нужно создать файл с конфигом Nginx для Drupal. Создадим папку conf. В ней файл drupal и в вставим в него:

server {
    listen 80;
    listen [::]:80;
    server_name www.example.com;
    return 301 $scheme://example.com$request_uri;
}

server {
    listen 80;
        listen [::]:80;

        server_name example.com;
        root /var/www/example.com;

        client_max_body_size 100m;

        access_log off;
        error_log /home/username/logs/nginx-example.com-error.log; ## username заменить на ваше имя пользователя

        # Enable compression, this will help if you have for instance advagg‎ module
        # by serving Gzip versions of the files.
        gzip_static on;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        # This matters if you use drush prior to 5.x
        # After 5.x backups are stored outside the Drupal install.
        #location = /backup {
        #        deny all;
        #}

        # Very rarely should these ever be accessed outside of your lan
        location ~* \.(txt|log)$ {
                allow 192.168.0.0/16;
                deny all;
        }

        location ~ \..*/.*\.php$ {
                return 403;
        }

        # No no for private
        location ~ ^/sites/.*/private/ {
                return 403;
        }

        # Block access to "hidden" files and directories whose names begin with a
        # period. This includes directories used by version control systems such
        # as Subversion or Git to store control files.
        location ~ (^|/)\. {
                return 403;
        }

        location / {
                # This is cool because no php is touched for static content
                try_files $uri @rewrite;
        }

        location @rewrite {
                # You have 2 options here
                # For D7 and above:
                # Clean URLs are handled in drupal_environment_initialize().
                rewrite ^ /index.php;
                # For Drupal 6 and bwlow:
                # Some modules enforce no slash (/) at the end of the URL
                # Else this rewrite block wouldn’t be needed (GlobalRedirect)
                #rewrite ^/(.*)$ /index.php?q=$1;
        }

        location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        }

        # Fighting with Styles? This little gem is amazing.
        # This is for D6
        #location ~ ^/sites/.*/files/imagecache/ {
        # This is for D7 and D8
        location ~ ^/sites/.*/files/styles/ {
                try_files $uri @rewrite;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

Установим pwgen:

apt-get install pwgen

Создаем в файл si.sh в папке пользователя /home/username/:

#!/bin/bash
sd=/var/www # папка где будет создан сайт
sc=/home/username/conf # папка с конфигом
PASS=`pwgen -s 30 1` # генерируем пароль
echo "Creating virtual host $1"
sudo cp $sc/drupal /etc/nginx/conf.d/$1.conf
echo "Updating vhost confin for $1"
sudo sed -i s,example.com,$1,g /etc/nginx/conf.d/$1.conf
sudo sed -i s,$sd/example.com,$sd/$1,g /etc/nginx/conf.d/$1.conf
echo "Restarting Nginx"
sudo systemctl reload nginx
echo "Create database $2"
mysql -u root -p << EOF
CREATE DATABASE $2 CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER ‘$2′@‘localhost’ IDENTIFIED BY ‘$PASS’;
GRANT ALL PRIVILEGES ON $2.* TO ‘$2′@‘localhost’;
FLUSH PRIVILEGES;
EOF
echo "Instal Drupal"
cd $sd
drush dl drupal-7.54
mv drupal-7.54 $1
cd $1
git clone https://github.com/totaku/fellema-dev.git profiles/fellema # мой профиль для Drupal
drush si fellema –locale=ru –site-name=$1  –db-url=mysql://$2:$PASS@localhost/$2 –account-name=admin –account-pass=admin –account-mail=admin@admin.admin
chmod 0777 -R $sd/$1/sites/default/files
echo "Finished!"
echo "MySQL user created."
echo "Username: $2"
echo "Password: $PASS"
echo "Local address: $sd/$1"
echo "Web address: http://$1"

Сохраним и дадим файлу права на исполнение:

sudo chmod a+x si.sh

Скрипт готов к работе, запускаем его с помощью команды:

./si test.com test

Где test.com ваш домен, test база данных сайта и имя пользователя.

Орингинал как обычно в блоге.

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




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  FAQ 3 Спасибо

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

«U.Efficiency» 1.0 – коэффициент активности пользователя

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

Источник: https://dle-news.ru/modules/1717-uefficiency-10-koefficient-aktivnosti-polzovatelya.html

SEO-наркомания. Часть 1. Параметрические ссылки

Предисловие

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

Часть 1. Параметрические ссылки.

Параметрические ссылки – это те, что содержат get-параметры. Грубо говоря, это ссылки, в которых есть вопросительный знак, амперсанды и знаки равенства. Все современные движки сайтов умеют генерировать красивые ЧПУ-ссылки, поэтому распространение параметрической ссылочной массы считается нежелательным, якобы поисковики этого не любят. Какой-то “добрый человек” запустил этот слух в народ и сейчас в интернете развернулась нешуточная борьба с параметрическими ссылками. Многие владельцы сайтов оказываются повержены в шок, узнав, что если добавить в конец ЧПУ-ссылки на их сайте что-то вроде ?ololo=trololo&alala=tralala , то страница всё равно откроется как ни в чём не бывало. И какой-то не менее “добрый” человек подсказал решение, что такие ссылки можно редиректить на 404 или ещё куда-нибудь на уровне .htaccess или в конфиге nginx. Так делать нельзя! И вот почему:

1. Параметрические ссылки могут использоваться для пагинации (хотя не всегда).
2. Параметрические ссылки используются в фильтрах подбора и сортировки списков.
3. Параметрические ссылки используются в административном интерфейсе.
4. utm-метки – это по сути параметрические ссылки.
5. AJAX-запросы могут содержать параметры в адресах.
Если перенаправить все параметрические ссылки на страницу ошибки, то весь вышеперечисленный функционал может не работать. Перенаправлять лишь некоторые из параметров на страницы ошибок также глупо. Мне доводилось видеть сайт, на котором были перечислены около 20 параметров, с которыми сервер должен был отдавать код 410. Один из них был name, в результате невозможно было добавить компонент в вебформу, однако изначально я этого не знал и на решение внезапно появившейся проблемы пришлось потратить целый час.

И что же делать?

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

Во-вторых, чтобы параметрические ссылки действительно не засоряли поисковик, воспользуйтесь следующими рекомендациями:

1. Настройте canonical
2. На ссылки пейджера, фильтров, сортировок и т.д. повесьте rel=”nofollow”
3. В крайнем случае, если какие-то нежелательные ссылки попали в поисковик, воспользуйтесь инструментами вебмастера.
4. Помните о том, что если ваш сайт не будет полезен для людей, никакое SEO вам не поможет.

PS: по вопросу параметрических ссылок у меня всё, но в ближайшее время я планирую написать ещё пару статей о других проявлениях сео-наркомании.
PPS: ссылка на эту статью в моём блоге.

Тип материала:  Предлагаю решение Ключевые слова:  seo sucks




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  SEO 5 Спасибо

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

SEO-наркомания. Часть 1. Параметрические ссылки

Предисловие

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

Часть 1. Параметрические ссылки.

Параметрические ссылки – это те, что содержат get-параметры. Грубо говоря, это ссылки, в которых есть вопросительный знак, амперсанды и знаки равенства. Все современные движки сайтов умеют генерировать красивые ЧПУ-ссылки, поэтому распространение параметрической ссылочной массы считается нежелательным, якобы поисковики этого не любят. Какой-то “добрый человек” запустил этот слух в народ и сейчас в интернете развернулась нешуточная борьба с параметрическими ссылками. Многие владельцы сайтов оказываются повержены в шок, узнав, что если добавить в конец ЧПУ-ссылки на их сайте что-то вроде ?ololo=trololo&alala=tralala , то страница всё равно откроется как ни в чём не бывало. И какой-то не менее “добрый” человек подсказал решение, что такие ссылки можно редиректить на 404 или ещё куда-нибудь на уровне .htaccess или в конфиге nginx. Так делать нельзя! И вот почему:

1. Параметрические ссылки могут использоваться для пагинации (хотя не всегда).
2. Параметрические ссылки используются в фильтрах подбора и сортировки списков.
3. Параметрические ссылки используются в административном интерфейсе.
4. utm-метки – это по сути параметрические ссылки.
5. AJAX-запросы могут содержать параметры в адресах.
Если перенаправить все параметрические ссылки на страницу ошибки, то весь вышеперечисленный функционал может не работать. Перенаправлять лишь некоторые из параметров на страницы ошибок также глупо. Мне доводилось видеть сайт, на котором были перечислены около 20 параметров, с которыми сервер должен был отдавать код 410. Один из них был name, в результате невозможно было добавить компонент в вебформу, однако изначально я этого не знал и на решение внезапно появившейся проблемы пришлось потратить целый час.

И что же делать?

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

Во-вторых, чтобы параметрические ссылки действительно не засоряли поисковик, воспользуйтесь следующими рекомендациями:

1. Настройте canonical
2. На ссылки пейджера, фильтров, сортировок и т.д. повесьте rel=”nofollow”
3. В крайнем случае, если какие-то нежелательные ссылки попали в поисковик, воспользуйтесь инструментами вебмастера.
4. Помните о том, что если ваш сайт не будет полезен для людей, никакое SEO вам не поможет.

PS: по вопросу параметрических ссылок у меня всё, но в ближайшее время я планирую написать ещё пару статей о других проявлениях сео-наркомании.
PPS: ссылка на эту статью в моём блоге.

Тип материала:  Предлагаю решение Ключевые слова:  seo sucks




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  SEO 5 Спасибо

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

Drupal 7 Ubercart 3 Сurrency – Вводим валюту на сайт и меняем при помощи свитчера

Долго в интернете искал решение своей проблемы, и нашел модуль самописнный на офф сайте уберкарта
(http://www.ubercart.org/project/uc_currency) который не хотел норм ставиться но пару манипуляций и он заработал как родной

Сразу к делу. Допустим у вас есть сайт на Drupal 7 с установленным модулем Ubercart 3 и настроенным и товаров пару штук тестовых, что дальше:
1. Качаем модуль Currency и устанавливаем.
2. Заходим в папку “sites/all/modules/currency/currency_api” и заменяем файл currency_api.module (по умолчанию он должен быть пустым) на файл который вложен (или Яндекс.Диск)
4. Скачиваем и устанавливаем модуль uc_currency (доступный как вложение или через Яндекс.Диск)

5. Настраиваем модуль Ubercart по пути: YOURSITE.ME/admin/store/settings/store
Так настроено у меня:

6. Настраиваем модуль uc_currency по пути: YOURSITE.ME/admin/store/settings/currency
Так настроено у меня:

PS: USD rate to UAH выставлено 0.0371 так как мой курс 1$ = 27грн в итоге коефициент умножения будет 1/27 = 0.0371
7. Вывести переключатель можно через Структура>Блоки>Currency Switcher
или программно


<?php
$block = block_load('uc_currency', 'uc_currency_block');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));
?>
uc_currency_.zip4.27 КБ currency_api.module28.37 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  ubercart currency conversation




email





facebook





linkedin





twitter





google+





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

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

Drupal 7 Ubercart 3 Сurrency – Вводим валюту на сайт и меняем при помощи свитчера

Долго в интернете искал решение своей проблемы, и нашел модуль самописнный на офф сайте уберкарта
(http://www.ubercart.org/project/uc_currency) который не хотел норм ставиться но пару манипуляций и он заработал как родной

Сразу к делу. Допустим у вас есть сайт на Drupal 7 с установленным модулем Ubercart 3 и настроенным и товаров пару штук тестовых, что дальше:
1. Качаем модуль Currency и устанавливаем.
2. Заходим в папку “sites/all/modules/currency/currency_api” и заменяем файл currency_api.module (по умолчанию он должен быть пустым) на файл который вложен (или Яндекс.Диск)
4. Скачиваем и устанавливаем модуль uc_currency (доступный как вложение или через Яндекс.Диск)

5. Настраиваем модуль Ubercart по пути: YOURSITE.ME/admin/store/settings/store
Так настроено у меня:

6. Настраиваем модуль uc_currency по пути: YOURSITE.ME/admin/store/settings/currency
Так настроено у меня:

PS: USD rate to UAH выставлено 0.0371 так как мой курс 1$ = 27грн в итоге коефициент умножения будет 1/27 = 0.0371
7. Вывести переключатель можно через Структура>Блоки>Currency Switcher
или программно


<?php
$block = block_load('uc_currency', 'uc_currency_block');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));
?>
uc_currency_.zip4.27 КБ currency_api.module28.37 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  ubercart currency conversation




email





facebook





linkedin





twitter





google+





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

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

Sevendie (улучшенная административная тема на основе Seven)

Визуально улучшенная админ-тема на основе Seven. Делал для себя.
Ругайте/хвалите.

Описание:

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

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

Перейдите в раздел admin/appearance/ Включить Sevendie В “Тема оформления административных страниц” в нижней части страницы, выберите Sevendie из выпадающего списка и нажмите кнопку “Сохранить”

Скриншоты:







Ссылка в песочницу на drupal.org: https://www.drupal.org/sandbox/deadie/2858199

Для нетерпеливых и не знакомых с git’ом ссылка на архив (Яндекс.Диск): https://yadi.sk/d/32pTGRbf3F9wsW

sevendie-screenshot-01.png16.08 КБ sevendie-screenshot-02.png43.28 КБ sevendie-screenshot-03.png2.6 КБ sevendie-screenshot-04.png16.64 КБ sevendie-screenshot-05.png24.68 КБ sevendie-screenshot-06.png57.95 КБ sevendie-screenshot-07.png6.18 КБ Версия Drupal:  Drupal 7.* Ключевые слова:  admin theme Drupal 7 Модули и темы:  Bartik и Seven




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 3 Спасибо

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

Sevendie (улучшенная административная тема на основе Seven)

Визуально улучшенная админ-тема на основе Seven. Делал для себя.
Ругайте/хвалите.

Описание:

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

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

Перейдите в раздел admin/appearance/ Включить Sevendie В “Тема оформления административных страниц” в нижней части страницы, выберите Sevendie из выпадающего списка и нажмите кнопку “Сохранить”

Скриншоты:







Ссылка в песочницу на drupal.org: https://www.drupal.org/sandbox/deadie/2858199

Для нетерпеливых и не знакомых с git’ом ссылка на архив (Яндекс.Диск): https://yadi.sk/d/32pTGRbf3F9wsW

sevendie-screenshot-01.png16.08 КБ sevendie-screenshot-02.png43.28 КБ sevendie-screenshot-03.png2.6 КБ sevendie-screenshot-04.png16.64 КБ sevendie-screenshot-05.png24.68 КБ sevendie-screenshot-06.png57.95 КБ sevendie-screenshot-07.png6.18 КБ Версия Drupal:  Drupal 7.* Ключевые слова:  admin theme Drupal 7 Модули и темы:  Bartik и Seven




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 3 Спасибо

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

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

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

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

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

Для исправления откройте файл: /engine/go.php и найдите: $url = @str_replace ( "&amp;", "&", $url );

ниже добавьте $url = htmlspecialchars( $url, ENT_QUOTES, $config['charset'] ); $url = str_replace ( "&amp;", "&", $url );

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

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

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

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

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

Для исправления откройте файл: /engine/go.php и найдите: $url = @str_replace ( "&amp;", "&", $url );

ниже добавьте: $url = htmlspecialchars( $url, ENT_QUOTES, $config['charset'] ); $url = str_replace ( "&amp;", "&", $url );

Далее откройте файл: /engine/ajax/typograf.php и найдите: $txt = trim( convert_unicode( $_POST['txt'], $config['charset'] ) );

ниже добавьте: require_once ENGINE_DIR . '/classes/parse.class.php'; $parse = new ParseFilter(); $txt = $parse->process( $txt ); $txt = preg_replace( "/javascript:/i", "j&#1072;vascript&#58;", $txt ); $txt = preg_replace( "/data:/i", "d&#1072;ta:", $txt );

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

Важное сообщение – Тест Версии 3.0 Drupal.ru

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

Поиск багов, Новые ощущения, Драйв, вам обеспечен!


Для более спокойных и адекватных господ, членов сообщества, краткий экскурс в историю нашего многолетнего, местами успешного, ресурса.

Немного истории

Старая версия на шестёрке, это милый… хороший… привычный… дом, за который хотелось перегрызть горло врагам, воевать, отстаивать. Сейчас это на уровне Ностальжи.

Мы жили, устраивали традиционные шоу, бои быков, битьё тарелок и просто банальный пятничный мордобой, случайно попавшимся под руку, новым посетителям.
Казалось, в этом мире никогда и ничего не изменится…
Но ROOT поменял род занятий, на квартирантов внимание обращал редко и у дома покосились стены. Чтоб открыть двери, нужно было закрыть глаза и сосчитать мысленно до шести. Унылый дизайн пятиэтажной хрущёвки с высотами потолков 2700мм не оставлял шансов на гордость, собственно, CMS. Спамеров можно было считать до четырёхсот и выше. Временно смотрящий появлялся, только если лично оскорбить его маму, бабушку, прабабушку и финансовую отчётность его личного предприятия.
Работы по редизайну отодвинули на “Осень” и, с годами, слово стало общепринятым мемом, выражающим крайнюю степень уныния, безнадёжности и разочарования во всех, происходящих в доме, процессах. Ладно, я повторяюсь и это не только мои слова.
Десятки топиков, сотни комментариев, а в ответ тишина…

Перемены

Ветер перемен, пришел… как раз таки осенью, как ни странно, 2015 года. Ресурс выкупил новый владелец. Долго и внимательно всех выслушивал, но потом… сделал всё по своему.

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

Из плохого

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

Всё не так

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

Модерация

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

Версия 3.0

Подходим к самому главному: в доме объявился Зодчий, Архитектор, Мастер.

Сначала объём работ его немного встревожил, он даже ходил по комнатам и пытался вызвать Сочувствие. Лол.
Интересный человек, у нас у всех свои заботы и проблемы, Господь тебе в помощь, и прикрыть двери, чтоб он опять не пришел. Но Маэстро был настойчив. То тут, то там мы обнаруживали стоящие лазерные уровни, и спотыкались о его протянутые разметочные лески.
И однажды… он сказал что может озвучить, показать, и рассказать обо всём, что творит.
Мы собрались в компании, на кухне, с неработающими микрофонами, выражая мысли жестами и текстом, кто-то кашлял из деликатности, думая что его никто не слышит, кто-то пытался объявить глобальную переменную, в конце разговора нам были розданы ключи от квартир, с условиями опробовать и отчитаться, даже бои быков и битьё тарелок разрешили, временно конечно.

ISSUE

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

Cоздавать топики, писать комментарии, вставлять картинки, видео, код и прочия. Тест спасибок, тёмной материи, новейшей экзальтированной ЛС,с тайными комнатами для правительственных заговоров Cистемно всплывающие в дальнем углу уведомлялки, даже в мобильном приложении. ищем жуков по щелям и хлопаем их тапками…

Озвучивашим полосу между лесом, и медведем – вы услышаны и поняты. Все иссуе, на Гитхабе и чатах Телеграма, Скайпа и Гиттера, так-же на рассмотрении.
Там можно: создавать краткие топики, выражающие негодование, ужас, или ликование от происходящих событий.
Крайне желательно! Все предложения, пожелания, требования и претензии оформляйте тегом ISSUE, issue это обеспечит необходимую фильтрацию, ой да кому я объясняю.
Имеем надежду на скорейшую приёмку Генеральным Проверяющим и сдачу в эксплуатацию с торжественным разбитием о борт шампанского, и спуском на воду.

О будущем

После вступления в строй версии 3.0, начнётся строительство следующей. В версии 4.0 будет голосовой/жестовый набор всех имеющихся варнингов и нотисэ, маленький нюанс, с акцентом не прокатит, только чистейший оксфордский. Лан, шутка.
Надеюсь не утомил длительными многобуквами.


Урл сайта
Урл регистрации
Урл входа.
Урл выхода.

Картинка для привлечения внимания.

Тип материала:  Предлагаю решение Ключевые слова:  3.0 Drupal.ru issue




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 4 Спасибо

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

Важное сообщение – Тест Версии 3.0 Drupal.ru

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

Поиск багов, Новые ощущения, Драйв, вам обеспечен!


Для более спокойных и адекватных господ, членов сообщества, краткий экскурс в историю нашего многолетнего, местами успешного, ресурса.

Немного истории

Старая версия на шестёрке, это милый… хороший… привычный… дом, за который хотелось перегрызть горло врагам, воевать, отстаивать. Сейчас это на уровне Ностальжи.

Мы жили, устраивали традиционные шоу, бои быков, битьё тарелок и просто банальный пятничный мордобой, случайно попавшимся под руку, новым посетителям.
Казалось, в этом мире никогда и ничего не изменится…
Но ROOT поменял род занятий, на квартирантов внимание обращал редко и у дома покосились стены. Чтоб открыть двери, нужно было закрыть глаза и сосчитать мысленно до шести. Унылый дизайн пятиэтажной хрущёвки с высотами потолков 2700мм не оставлял шансов на гордость, собственно, CMS. Спамеров можно было считать до четырёхсот и выше. Временно смотрящий появлялся, только если лично оскорбить его маму, бабушку, прабабушку и финансовую отчётность его личного предприятия.
Работы по редизайну отодвинули на “Осень” и, с годами, слово стало общепринятым мемом, выражающим крайнюю степень уныния, безнадёжности и разочарования во всех, происходящих в доме, процессах. Ладно, я повторяюсь и это не только мои слова.
Десятки топиков, сотни комментариев, а в ответ тишина…

Перемены

Ветер перемен, пришел… как раз таки осенью, как ни странно, 2015 года. Ресурс выкупил новый владелец. Долго и внимательно всех выслушивал, но потом… сделал всё по своему.

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

Из плохого

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

Всё не так

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

Модерация

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

Версия 3.0

Подходим к самому главному: в доме объявился Зодчий, Архитектор, Мастер.

Сначала объём работ его немного встревожил, он даже ходил по комнатам и пытался вызвать Сочувствие. Лол.
Интересный человек, у нас у всех свои заботы и проблемы, Господь тебе в помощь, и прикрыть двери, чтоб он опять не пришел. Но Маэстро был настойчив. То тут, то там мы обнаруживали стоящие лазерные уровни, и спотыкались о его протянутые разметочные лески.
И однажды… он сказал что может озвучить, показать, и рассказать обо всём, что творит.
Мы собрались в компании, на кухне, с неработающими микрофонами, выражая мысли жестами и текстом, кто-то кашлял из деликатности, думая что его никто не слышит, кто-то пытался объявить глобальную переменную, в конце разговора нам были розданы ключи от квартир, с условиями опробовать и отчитаться, даже бои быков и битьё тарелок разрешили, временно конечно.

ISSUE

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

Cоздавать топики, писать комментарии, вставлять картинки, видео, код и прочия. Тест спасибок, тёмной материи, новейшей экзальтированной ЛС,с тайными комнатами для правительственных заговоров Cистемно всплывающие в дальнем углу уведомлялки, даже в мобильном приложении. ищем жуков по щелям и хлопаем их тапками…

Озвучивашим полосу между лесом, и медведем – вы услышаны и поняты. Все иссуе, на Гитхабе и чатах Телеграма, Скайпа и Гиттера, так-же на рассмотрении.
Там можно: создавать краткие топики, выражающие негодование, ужас, или ликование от происходящих событий.
Крайне желательно! Все предложения, пожелания, требования и претензии оформляйте тегом ISSUE, issue это обеспечит необходимую фильтрацию, ой да кому я объясняю.
Имеем надежду на скорейшую приёмку Генеральным Проверяющим и сдачу в эксплуатацию с торжественным разбитием о борт шампанского, и спуском на воду.

О будущем

После вступления в строй версии 3.0, начнётся строительство следующей. В версии 4.0 будет голосовой/жестовый набор всех имеющихся варнингов и нотисэ, маленький нюанс, с акцентом не прокатит, только чистейший оксфордский. Лан, шутка.
Надеюсь не утомил длительными многобуквами.


Урл сайта
Урл регистрации
Урл входа.
Урл выхода.

Картинка для привлечения внимания.

Тип материала:  Предлагаю решение Ключевые слова:  3.0 Drupal.ru issue




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 4 Спасибо

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

Bundle clone – самый простой способ копирования полей

Недавно наткнулся на один полезный, как мне кажется, модуль, решил поделиться с сообществом.

Издревле многие друпалеры мучаются вопросом, каким образом лучше всего создать одинаковое поле сразу в нескольких типах содержимого. Для этого даже придумали опцию “вставить существующее поле”, но эта опция делает всё не в один шаг, кроме того, многие настройки всё равно приходится заполнять, а настройки отображения таким способом не копируются вовсе. А ведь бывают ситуации, когда нужно несколько одинаковых полей создать сразу в десятках типа содержимого. И вот совсем недавно я наткнулся на модуль  Bundle Clone. Что примечательно, модуль не очень распространён и пишут о нём незаслуженно мало. Итак, что же он делает – модуль позволяет копировать любые поля из любого типа сущности в любые другие её бандлы.

Давайте посмотрим, как это выглядит на практике. Итак, устанавливаем модуль, идём в настройки: admin/structure/bundle_clone. Выбираем тип сущности (картинка ниже).

Затем выбираем Source, после выбора подтягивается список его полей и выбираем, что и куда будем копировать, доступен множественный выбор. Копировать из одного типа сущностей в другой нельзя (например из термина в ноду). Зато можно копировать сразу несколько полей в сразу несколько бандлов. При копировании уже существующих полей, они не создаются повторно, а обновляются их настройки. Поля копируются вместе с настройками отображения. Если после копирования вы изменили настройки в одном типе содержимого, вы можете их скопировать отдельно на вкладке Update display.

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

И традиционная спам-ссылка на мой говноблог

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




email





facebook





linkedin





twitter





google+





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

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

Bundle clone – самый простой способ копирования полей

Недавно наткнулся на один полезный, как мне кажется, модуль, решил поделиться с сообществом.

Издревле многие друпалеры мучаются вопросом, каким образом лучше всего создать одинаковое поле сразу в нескольких типах содержимого. Для этого даже придумали опцию “вставить существующее поле”, но эта опция делает всё не в один шаг, кроме того, многие настройки всё равно приходится заполнять, а настройки отображения таким способом не копируются вовсе. А ведь бывают ситуации, когда нужно несколько одинаковых полей создать сразу в десятках типа содержимого. И вот совсем недавно я наткнулся на модуль  Bundle Clone. Что примечательно, модуль не очень распространён и пишут о нём незаслуженно мало. Итак, что же он делает – модуль позволяет копировать любые поля из любого типа сущности в любые другие её бандлы.

Давайте посмотрим, как это выглядит на практике. Итак, устанавливаем модуль, идём в настройки: admin/structure/bundle_clone. Выбираем тип сущности (картинка ниже).

Затем выбираем Source, после выбора подтягивается список его полей и выбираем, что и куда будем копировать, доступен множественный выбор. Копировать из одного типа сущностей в другой нельзя (например из термина в ноду). Зато можно копировать сразу несколько полей в сразу несколько бандлов. При копировании уже существующих полей, они не создаются повторно, а обновляются их настройки. Поля копируются вместе с настройками отображения. Если после копирования вы изменили настройки в одном типе содержимого, вы можете их скопировать отдельно на вкладке Update display.

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

И традиционная спам-ссылка на мой говноблог

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




email





facebook





linkedin





twitter





google+





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

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

Drupal 8.3.0-rc1

В преддверии выпуска Друпал 8.3.0, для ознакомления и тестирования, выпущена первая подготовительная версия версия Drupal 8.3.0-rc1
Все любопытные или желающие принять участие в тестировании, уже могут ознакомиться с этой версией.

Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
0 Спасибо

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

Drupal 8.3.0-rc1

В преддверии выпуска Друпал 8.3.0, для ознакомления и тестирования, выпущена первая подготовительная версия версия Drupal 8.3.0-rc1
Все любопытные или желающие принять участие в тестировании, уже могут ознакомиться с этой версией.

Версия Drupal:  Drupal 8.*




email





facebook





linkedin





twitter





google+





pinterest
0 Спасибо

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

Как ежегодно справляться с ажиотажным спросом на новый iPhone: кейс re:Store

Компания Inventive Retail Group уже 11 лет работает на российском рынке ритейла, вместо масс-маркета взяв курс на уникальность – в холдинг входят специализированные магазины таких брендов, как Apple, Samsung, Lego, Nike, Sony, Rookie и собственные бренды компании Street Beat и kid rocks.

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

«1С-Битрикс» впервые вошла в рейтинг топ-20 самых дорогих компаний Рунета по версии Forbes

В рейтинг российского издания Forbes впервые попала компания по созданию веб-проектов и CRM-систем.

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

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

Запись второго занятия Drupal-школы.

Пост с видео первого занятия вызвал бурное обсуждение по поводу того, нужно ли учить друпалу и веб-разработке школьников.

Данное же занятие является практическим и посвящено основам веб-разработки и системе управления контентом на Drupal 8.
Самое начало, для самых новичков.

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

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






email





facebook





linkedin





twitter





google+





pinterest
4 Спасибо

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

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

Запись второго занятия Drupal-школы.

Пост с видео первого занятия вызвал бурное обсуждение по поводу того, нужно ли учить друпалу и веб-разработке школьников.

Данное же занятие является практическим и посвящено основам веб-разработки и системе управления контентом на Drupal 8.
Самое начало, для самых новичков.

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

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






email





facebook





linkedin





twitter





google+





pinterest
4 Спасибо

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

YO! Зацените скаффолдер для модулей Drupal 7


Есть, значит, для Drupal 8 – консолько, а для Drupal 7 – пилите все руками, да?

Неее… ))

Надо бы трохи подправить баланс справедливости. Благо братья наши, нодJSники, делают кучу полезных инструментов (нам бы перенимать у них, ну да ладно… не об этом сейчас).

Есть, такая полезность как YEOMAN. Работает на ноде, позволяет скаффолдеры строить для разного.

Вот и решил я немного скрасить рутину, для начала – автоматизировав создание кастомных модулей.

Сразу про “А чо не драш” или “А чо не брать готовые  модули“:

Делал, в первую очередь, для себя. Надоело копировать это каждый раз. На ноде работает хорошо, быстро. Пишется и поддерживается – удобно. Короч, вот так.

Ок. Как юзать:

ясен пень – должна быть нода

(Установка: Linux, Mac, Windows)

так же должен быть установлен сам модуль – YO npm install -g yo и, вслед, ставим генератор Drupal-модулей npm install -g generator-dmodule

(ключик “-g” означает что модуль будет установлен глобально – не для отдельного проекта, и будет доступен в любой директории.)

Вооот…. Теперь можно модульки делать – хоть обделаться! )) Создаем папку модуля в “нужном месте”, переходим в нее..:

mkdir my_module && cd my_module

..и, генерируем модуль:

yo dmodule

По-ходу, отвечаем на все поставленные вопросы, типа: “Имя модуля”, “Необходимые хуки”, “Генерируемые файлы” и т.п.

На выходе получаем готовый скелетон модуля! Как2ПальцаАбАсфальт…

Пока способности – не безграничны, но рутину скрашивает на раз-два. Чего могет:

Генерация .info Генерация .module Генерация .install (при необходимости) Генерация статических файлов – JS / CSS (при необходимости) Имплементация некоторых хуков – hook_permission, hook_menu, hook_install/hook_uninstall, hook_schema (при необходимости)

Хуки, на выходе – с готовыми шаблонами.

Если “взлетит” (если будет интерес к проекту) – буду дальше развивать. Внедрю еще хуков, настроек им приделаю, все дела…

Вот Вам скрины:

Странички проекта:

GItHub NPM

Пока еще свежак, так-что смотрите-фидбечте. Тута, тама – де удобно.

Красивых вам модулей, YO!

ЗЫ – немного про YEOMAN можно почитать тут и здесь. Ну и канешн в гуглах, если уж понесло… ))

drupal_yeoman.png17.08 КБ yo1.png64.77 КБ yo2.png95.86 КБ yeoman.png49.84 КБ yeoman_multiple.png39.68 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  scaffold скаффолдинг module_builder builder yeoman yo




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 8 Спасибо

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

YO! Зацените скаффолдер для модулей Drupal 7


Есть, значит, для Drupal 8 – консолько, а для Drupal 7 – пилите все руками, да?

Неее… ))

Надо бы трохи подправить баланс справедливости. Благо братья наши, нодJSники, делают кучу полезных инструментов (нам бы перенимать у них, ну да ладно… не об этом сейчас).

Есть, такая полезность как YEOMAN. Работает на ноде, позволяет скаффолдеры строить для разного.

Вот и решил я немного скрасить рутину, для начала – автоматизировав создание кастомных модулей.

Сразу про “А чо не драш” или “А чо не брать готовые  модули“:

Делал, в первую очередь, для себя. Надоело копировать это каждый раз. На ноде работает хорошо, быстро. Пишется и поддерживается – удобно. Короч, вот так.

Ок. Как юзать:

ясен пень – должна быть нода

(Установка: Linux, Mac, Windows)

так же должен быть установлен сам модуль – YO npm install -g yo и, вслед, ставим генератор Drupal-модулей npm install -g generator-dmodule

(ключик “-g” означает что модуль будет установлен глобально – не для отдельного проекта, и будет доступен в любой директории.)

Вооот…. Теперь можно модульки делать – хоть обделаться! )) Создаем папку модуля в “нужном месте”, переходим в нее..:

mkdir my_module && cd my_module

..и, генерируем модуль:

yo dmodule

По-ходу, отвечаем на все поставленные вопросы, типа: “Имя модуля”, “Необходимые хуки”, “Генерируемые файлы” и т.п.

На выходе получаем готовый скелетон модуля! Как2ПальцаАбАсфальт…

Пока способности – не безграничны, но рутину скрашивает на раз-два. Чего могет:

Генерация .info Генерация .module Генерация .install (при необходимости) Генерация статических файлов – JS / CSS (при необходимости) Имплементация некоторых хуков – hook_permission, hook_menu, hook_install/hook_uninstall, hook_schema (при необходимости)

Хуки, на выходе – с готовыми шаблонами.

Если “взлетит” (если будет интерес к проекту) – буду дальше развивать. Внедрю еще хуков, настроек им приделаю, все дела…

Вот Вам скрины:

Странички проекта:

GItHub NPM

Пока еще свежак, так-что смотрите-фидбечте. Тута, тама – де удобно.

Красивых вам модулей, YO!

ЗЫ – немного про YEOMAN можно почитать тут и здесь. Ну и канешн в гуглах, если уж понесло… ))

drupal_yeoman.png17.08 КБ yo1.png64.77 КБ yo2.png95.86 КБ yeoman.png49.84 КБ yeoman_multiple.png39.68 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 7.* Ключевые слова:  scaffold скаффолдинг module_builder builder yeoman yo




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Программирование 8 Спасибо

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

40+ шпаргалок для веб дизайнеров и разработчиков


Невозможно запомнить все сочетания клавиш, свойства и команды многих веб-языков, которые мы используем ежедневно. Вот почему шпаргалки штука нужная. Они позволяют сэкономить время веб дизайнерам и разработчикам. Держите их под рукой для быстрой справки и перепроверки себя.

CSS шпаргалки

CSS Vocabulary Cheatsheet (apps.workflower.fi) тычь по ссылке →
The Complete CSS Cheatsheet (websitesetup.org) тычь по ссылке →
The CSS3 Cheatsheet (smashingmagazine.com) тычь по ссылке →
Responsive Web Design Cheatsheet (uxpin.com) тычь по ссылке →
CSS Media Queries Cheatsheet (mac-blog.org.ua) тычь по ссылке →
CSS Animation Cheatsheet (justinaguilar.com) тычь по ссылке →
The Ultimate Flexbox Cheatsheet (sketchingwithcss.com) тычь по ссылке →

HTML шпаргалки

HTML Vocabulary Cheatsheet (apps.workflower.fi) тычь по ссылке →
The Mega HTML5 Cheatsheet (makeawebsitehub.com) тычь по ссылке →
The HTML Elements Index (meiert.com) тычь по ссылке →
HTML5 Canvas Cheatsheet (simon.html5.org) тычь по ссылке →

JavaScript и jQuery шпаргалки

JavaScript Cheatsheet (overapi.com) тычь по ссылке →
jQuery Cheatsheet (overapi.com) тычь по ссылке →
jQuery Quick API Reference (oscarotero.com) тычь по ссылке →

PHP шпаргалки

The PHP Cheatsheet (overapi.com) тычь по ссылке →
PHP Cheatsheets (phpcheatsheets.com) тычь по ссылке →

Markdown шпаргалки

Markdown Cheasheet (code.ahren.org) тычь по ссылке →
Markdown Here Cheatsheet (github.com) тычь по ссылке →

Bootstrap Framework шпаргалки

Bootstrap 4 Cheatsheet (hackerthemes.com) тычь по ссылке →
Bootstrap 3 Cheatsheet (creativealive.com) тычь по ссылке →
Glyphicons Cheatsheet (glyphicons.bootstrapcheatsheets.com) тычь по ссылке →

Drupal шпаргалки

Drupal Console Cheat Sheet тычь по ссылке →
Drupal 7 database Cheat Sheet тычь по ссылке →
Drupal 8 Entity Cheat Sheet тычь по ссылке →
Drupal 7 Theming Cheat Sheet тычь по ссылке →
Drupal Core API Cheat Sheet тычь по ссылке →
Drupal Cheat Sheet Desktop Wallpaper тычь по ссылке →
Drupal 7 to Drupal 8: The Cheat Sheet тычь по ссылке →

WordPress шпаргалки

Copy/Paste WordPress Cheatsheet (buildyourownblog.net) тычь по ссылке →
The Ultimate WordPress Development Cheatsheet (wefixyourwp.com) тычь по ссылке →

Git шпаргалки

Git Cheatsheet (overapi.com) тычь по ссылке →
Git Pretty (justinhileman.info) тычь по ссылке →

Шпаргалки web-шрифтов и типографики

Compatibility Tables for Default Local Fonts (fontfamily.io) тычь по ссылке →
Google Font Cheatsheet (ricostacruz.com) тычь по ссылке →
Font Awesome Cheatsheet (fontawesome.io/cheatsheet) тычь по ссылке →
The Anatomy of Type Cheatsheet (speckyboy.com) тычь по ссылке →
The Periodic Table of Typefaces Cheatsheet (squidspot.com) тычь по ссылке →

Шпаргалки по горячим клавишам редакторов кода

Sublime Text Cheatsheet (speckyboy.com) тычь по ссылке →
Sublime Text Cheatsheet Plugin (github.com) тычь по ссылке →
Commonly Used Sublime Text Commands (csnipp.com) тычь по ссылке →
Atom Editor Cheatsheet (cloudfront.net) тычь по ссылке →
Atom Editor Keyboard Shortcut Cheatsheet (blog.bugsnag.com) тычь по ссылке →
Vim Cheatsheet (vim.rtorr.com) тычь по ссылке →
Notepad++ Cheatsheet (drive.google.com) тычь по ссылке →

Разные шпаргалки

The Web Developer’s SEO Cheatsheet (moz.com) тычь по ссылке →
MySQL Command Line Cheatsheet (github.com) тычь по ссылке →
htaccess Cheatsheet (htaccesscheatsheet.com) тычь по ссылке →
The Foundation Framework Cheatsheet (sudheerdev.github.io) тычь по ссылке →
The Color Theory Cheatsheet (paper-leaf.com) тычь по ссылке →
The Screen Resolution Cheatsheet (design215.com) тычь по ссылке →

UPD: Добавил друпал шпаргалки.
Оригинал

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  PHP CSS шпаргалки




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Разное непонятное 6 Спасибо

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

40+ шпаргалок для веб дизайнеров и разработчиков


Невозможно запомнить все сочетания клавиш, свойства и команды многих веб-языков, которые мы используем ежедневно. Вот почему шпаргалки штука нужная. Они позволяют сэкономить время веб дизайнерам и разработчикам. Держите их под рукой для быстрой справки и перепроверки себя.

CSS шпаргалки

CSS Vocabulary Cheatsheet (apps.workflower.fi) тычь по ссылке →
The Complete CSS Cheatsheet (websitesetup.org) тычь по ссылке →
The CSS3 Cheatsheet (smashingmagazine.com) тычь по ссылке →
Responsive Web Design Cheatsheet (uxpin.com) тычь по ссылке →
CSS Media Queries Cheatsheet (mac-blog.org.ua) тычь по ссылке →
CSS Animation Cheatsheet (justinaguilar.com) тычь по ссылке →
The Ultimate Flexbox Cheatsheet (sketchingwithcss.com) тычь по ссылке →

HTML шпаргалки

HTML Vocabulary Cheatsheet (apps.workflower.fi) тычь по ссылке →
The Mega HTML5 Cheatsheet (makeawebsitehub.com) тычь по ссылке →
The HTML Elements Index (meiert.com) тычь по ссылке →
HTML5 Canvas Cheatsheet (simon.html5.org) тычь по ссылке →

JavaScript и jQuery шпаргалки

JavaScript Cheatsheet (overapi.com) тычь по ссылке →
jQuery Cheatsheet (overapi.com) тычь по ссылке →
jQuery Quick API Reference (oscarotero.com) тычь по ссылке →

PHP шпаргалки

The PHP Cheatsheet (overapi.com) тычь по ссылке →
PHP Cheatsheets (phpcheatsheets.com) тычь по ссылке →

Markdown шпаргалки

Markdown Cheasheet (code.ahren.org) тычь по ссылке →
Markdown Here Cheatsheet (github.com) тычь по ссылке →

Bootstrap Framework шпаргалки

Bootstrap 4 Cheatsheet (hackerthemes.com) тычь по ссылке →
Bootstrap 3 Cheatsheet (creativealive.com) тычь по ссылке →
Glyphicons Cheatsheet (glyphicons.bootstrapcheatsheets.com) тычь по ссылке →

Drupal шпаргалки

Drupal Console Cheat Sheet тычь по ссылке →
Drupal 7 database Cheat Sheet тычь по ссылке →
Drupal 8 Entity Cheat Sheet тычь по ссылке →
Drupal 7 Theming Cheat Sheet тычь по ссылке →
Drupal Core API Cheat Sheet тычь по ссылке →
Drupal Cheat Sheet Desktop Wallpaper тычь по ссылке →
Drupal 7 to Drupal 8: The Cheat Sheet тычь по ссылке →

WordPress шпаргалки

Copy/Paste WordPress Cheatsheet (buildyourownblog.net) тычь по ссылке →
The Ultimate WordPress Development Cheatsheet (wefixyourwp.com) тычь по ссылке →

Git шпаргалки

Git Cheatsheet (overapi.com) тычь по ссылке →
Git Pretty (justinhileman.info) тычь по ссылке →

Шпаргалки web-шрифтов и типографики

Compatibility Tables for Default Local Fonts (fontfamily.io) тычь по ссылке →
Google Font Cheatsheet (ricostacruz.com) тычь по ссылке →
Font Awesome Cheatsheet (fontawesome.io/cheatsheet) тычь по ссылке →
The Anatomy of Type Cheatsheet (speckyboy.com) тычь по ссылке →
The Periodic Table of Typefaces Cheatsheet (squidspot.com) тычь по ссылке →

Шпаргалки по горячим клавишам редакторов кода

Sublime Text Cheatsheet (speckyboy.com) тычь по ссылке →
Sublime Text Cheatsheet Plugin (github.com) тычь по ссылке →
Commonly Used Sublime Text Commands (csnipp.com) тычь по ссылке →
Atom Editor Cheatsheet (cloudfront.net) тычь по ссылке →
Atom Editor Keyboard Shortcut Cheatsheet (blog.bugsnag.com) тычь по ссылке →
Vim Cheatsheet (vim.rtorr.com) тычь по ссылке →
Notepad++ Cheatsheet (drive.google.com) тычь по ссылке →

Разные шпаргалки

The Web Developer’s SEO Cheatsheet (moz.com) тычь по ссылке →
MySQL Command Line Cheatsheet (github.com) тычь по ссылке →
htaccess Cheatsheet (htaccesscheatsheet.com) тычь по ссылке →
The Foundation Framework Cheatsheet (sudheerdev.github.io) тычь по ссылке →
The Color Theory Cheatsheet (paper-leaf.com) тычь по ссылке →
The Screen Resolution Cheatsheet (design215.com) тычь по ссылке →

UPD: Добавил друпал шпаргалки.
Оригинал

Версия Drupal:  Drupal 8.* Drupal 7.* Ключевые слова:  PHP CSS шпаргалки




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Разное непонятное 6 Спасибо

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

Друпал-школа. Видео лекции: Веб-разработка: CMS Drupal 8.

У меня получилось объединить свои компетенции преподавателя и веб-разработчика в рамках проекта “Drupal-школа”. Теперь я учу школьников веб-разработке)

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

Записи проведенных занятий буду постепенно выкладывать. Это – первое, лекционное.

Версия Drupal:  Drupal 8.* Ключевые слова:  друпал-школа видео занятий drupal 8




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 4 Спасибо

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

Друпал-школа. Видео лекции: Веб-разработка: CMS Drupal 8.

У меня получилось объединить свои компетенции преподавателя и веб-разработчика в рамках проекта “Drupal-школа”. Теперь я учу школьников веб-разработке)

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

Записи проведенных занятий буду постепенно выкладывать. Это – первое, лекционное.

Версия Drupal:  Drupal 8.* Ключевые слова:  друпал-школа видео занятий drupal 8




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  DrupalSib 4 Спасибо

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

Плагин для автоматической установки кода системы Sape

Плагин для автоматической установки кода системы Sape на сайт вебмастера

Поддержка функций:

-арендные ссылки (обычный и блочный режим вывода)
-контекстные ссылки
-тизерные размещения
-блоки rtb.sape
-статьи

Источник: http://dle-news.ru/modules/1711-plagin-dlya-avtomaticheskoy-ustanovki-koda-sistemy-sape.html

Плагин для автоматической установки кода системы Sape

Плагин для автоматической установки кода системы Sape на сайт вебмастера

Поддержка функций:

-арендные ссылки (обычный и блочный режим вывода)
-контекстные ссылки
-тизерные размещения
-блоки rtb.sape
-статьи

Источник: https://dle-news.ru/modules/1711-plagin-dlya-avtomaticheskoy-ustanovki-koda-sistemy-sape.html

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

Решение быстро подключает интернет-магазин на «1С-Битрикс» к онлайн-кассе нового образца. Приложение разработано под ОС Windows и работает с версией 17.01 «1С-Битрикс: Управление сайтом». В планах разработчиков – выпуск версий для других операционных систем.

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

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

Решение быстро подключает интернет-магазин на «1С-Битрикс» к онлайн-кассе нового образца. Приложение разработано под ОС Windows и работает с версией 17.01 «1С-Битрикс: Управление сайтом». В планах разработчиков – выпуск версий для других операционных систем.

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

Использование блоков непосредственно в html файлах темы

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

1. Создайте блок в панели администратора системы, им может быть стандартный или свободный блок.
2. Активируйте блок и в списке блоков определите его № – номер
3. Для вставки блока, например в основной файл: index.html темы оформления, достаточно добавить участок кода: {%BLOCKS n,ХХХ%}

Источник: https://slaed.net/index.php?name=pages&op=view&id=690

Выпущены Drupal 8.2.6 и Drupal 7.54

Подробности об изменениях Drupal 8.2.6
Это последнее обновление серии 8.2.x
Следующее обновление будет Drupal 8.3.0 (планируемая дата: 2017 апрель 5).

Подробности об изменениях Drupal 7.54
Критических ошибок нет.






email





facebook





linkedin





twitter





google+





pinterest
0 Спасибо

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

Обновление ядра для Семёрки и Восьмёрки

Подробности об изменениях Drupal 8.2.6

Это последнее обновление серии 8.2.x
Следующее обновление будет Drupal 8.3.0 (планируемая дата: 2017 апрель 5).

Подробности об изменениях Drupal 7.54

Критических ошибок нет.

Дубль с новостной ленты для соцсетей

Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.* Drupal 7.*




email





facebook





linkedin





twitter





google+





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

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

Выпущены Drupal 8.2.6 и Drupal 7.54

Newsletter:  Рассылка

Подробности об изменениях Drupal 8.2.6
Это последнее обновление серии 8.2.x
Следующее обновление будет Drupal 8.3.0 (планируемая дата: 2017 апрель 5).

Подробности об изменениях Drupal 7.54
Критических ошибок нет.

1 Спасибо

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

Новый модераторский состав Drupal.ru

Господа форумчане, рад вам представить новых модераторов форума.

Прошу любить и жаловать:

Softovick

dmitry.s

sibero

radontt

Приветствую, господа!

Теперь живем таким составом, так что не флудим и живем улыбаясь

Всем успехов!

Напомню, на всякий, свод наших правил можно найти здесь, тут и там.
Так же, есть дополнительные правила для размещения вакансий. И про “Темную Материю”.

Ключевые слова:  правила Drupal.ru модерация




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Сайт и проект Drupal.ru 4 Спасибо

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

Интернет-магазин на «1С-Битрикс» дает «Евросети» 5% общей выручки

«Евросеть» является одним из лидеров розничного рынка России. Сегодня компания представлена более чем 4,5 тыс. салонов, обеспечивает доставку заказов «до двери» в 65 крупнейших российских городов и самовывоз товара в более чем 1200 городах и населенных пунктах.

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

Интернет-магазин на «1С-Битрикс» дает «Евросети» 5% общей выручки

«Евросеть» является одним из лидеров розничного рынка России. Сегодня компания представлена более чем 4,5 тыс. салонов, обеспечивает доставку заказов «до двери» в 65 крупнейших российских городов и самовывоз товара в более чем 1200 городах и населенных пунктах.

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

Установка Let’s Encrypt на сервер, сложности с Drupal

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

Let’s Encrypt – некоммерческий удостоверяющий центр, который предоставляет бесплатные X.509 сертификаты для TLS шифрования с помощью автоматизированного процесса, направленного на замену текущего сложного процесса ручного создания, проверки, подписи, установки и обновления сертификатов для защищённых веб-сайтов.

Официальный сайт сервиса: Let’s Encrypt.

Let’s Encrypt имеет ограничения:

Можно заказать только 5 сертификатов в неделю (TLD, включая его поддомены) То есть – заказываем один сертификат на site.ru, устанавливаем, и 4 на поддомены вида new.site.ru и ждём неделю для дальнейшего сертифицирования нашего зоопарка. Инфа по ограничению выдана управлением ISP панели и мною не проверена. Не поддерживаются wildcard сертификаты Срок действия Let’s Encrypt сертификата 3 месяца (каждые 3 месяца ISPmanager выполняет перевыпуск Let’s Encrypt сертификатов)
Обновление происходит в автоматическом режиме, админу стоит лишь проконтролировать сервер в “критические” дни.

Собственно речь идёт о ISP – панели, знаю что на форуме, она пользуется популярностью. Начиная с версии ISPmanager 5.65 в панели появилась возможность полуавтоматической установки сертификата Let’s Encrypt. То есть – никаких пугающих чёрных консолей, многочасового поиска инструкций по установке.

По умолчанию модуль выключен. Включаем его у рута, в разделе Интеграция пункт Модули

После включения модуля, это будет выглядеть так -

Далее, идём в аккаунт пользователя и там входим в раздел WWW-домены

Жмём на нужный нам домен/поддомен и там ставим галочку на Защищенное соединение (SSL)

Не знаю особенности управления вашего сервера, у меня приходится на время сертифицирования, так-же в
Режим работы PHP выбирать модуль Apache

Отвлекаясь скажу – гораздо проще всё делать “с чистого листа”, на вновь созданном домене-сайте, ну это, как сами понимаете – редкость. Обычно мы уже имеем что-либо и приходится вникать.

Сорри что отвлёкся, когда мы выставили галочку на Повышенная безопасность SSL, внизу раскрываются настройки, и там нужно сделать такой выбор (указано красной стрелкой)

Сохраняем, и получаем окно

Вводим свои данные и жмём ОК

Далее, в разделе WWW заходим в SSL-сертификаты и там видим по тырку на сертификат

Если доменное имя свежее и папка сайта пуста, сервис Let’s Encrypt в течении 5-7 минут проверит подлинность владения, и процесс выдачи сертификата практически завершен, журнал событий Let’s Encrypt покажет:

по адресу http://site.ru откроется https://site.ru и будет иметь плашку:

Если доменное имя новое и папка сайта пуста Let’s Encrypt проверяя подлинность владения именем, прописывает директорию .well-known/acme-challenge

Теперь рассмотрим самое важное для Друпаллеров. Для Шестёрки-Семёрки, сайт не пропустит проверку, Let’s Encrypt будет семафорить в журнале ошибкой, которая легко гуглится и наводит на размышления, поэтому кратко. Нужно удалить htaccess из корня сайта (предварительно скачав его на ваш компьютер, заархивировав, или просто удалить, если вы знаете где взять свежий). Удалить сертификат и по-новой начать проверку. После признания сервисом Let’s Encrypt вернуть на место htaccess.

Теперь идём в ~/www/site.ru/sites/default/settings.php Cтавим временно права на sites, default, settings.php 777

Заходим в редакцию settings.php немного ниже под вводами логинов-паролей для базы ищем строку # $base_url = ‘http://www.example.com‘; // NO trailing slash!
И прописываем под ней следующее:
$base_url = ‘https://site.ru‘; Никаких слэшей к конце! Это важно.

В Семёрке это приблизительно, 280-281 строка.
В Восьмёрке это приблизительно, 509-510 строка.
После сохранения, не забываем вернуть права трём папкам.

По настройке сертификата на существующей Восьмёрке, информация данная в этой статье неполная, пока в стадии тестирования.

shotjmz2m.png31.51 КБ Тип материала:  Предлагаю решение Версия Drupal:  Drupal 8.* Drupal 7.* Drupal 6.* Ключевые слова:  Let’s Encrypt




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Хостинг 4 Спасибо

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

Open Social Drupal 8


Есть интересный дистрибутив drupal 8 для создания сообществ Open Social

Дистрибутив содержит в себе стандартный набор допустимого контента в форме постов, создания групп, подписки на группы и события.

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

Вам нужно будет иметь на сервере расширение mbstring

для php7 его можно поставить коммандой

apt-get install php7.0-mbstring
И для drupal8 вообще вам нужно еще расширение php7.0-mbstring

Если его на сервере нет, то
apt-get install  php7.0-mbstring
Это расширение доступно из репозиториев ubuntu 16 или от dotdeb для debian jessie

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

Особенностью этого дистрибутива является модуль address, который можно поставить только c помощью composer

Скачиваете дистрибутив как обычно это делается при установке drupal

У вас должны стоять composer и drush

Далее из корневой директории сайта добавляем реп для composer

composer config repositories.drupal composer https://packages.drupal.org/8

И производим установку модуля address

composer require "drupal/address ~1.0"

После этого вы можете установить дистрибутив обычным способом.

Demo http://opensocial.graytone.ru/

Версия Drupal:  Drupal 8.* Ключевые слова:  opensocial




email





facebook





linkedin





twitter





google+





pinterest
Форумы:  Разработка и установка 6 Спасибо

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

Московский еврейский театр «Шалом»: «Благодаря «Битрикс24» дорожка зрителя к нам сократилась»

В государственном московском еврейском театре «Шалом» достаточно много административных задач, которые не видны на сцене. Все, что касается обсуждения и согласования документов, согласования дизайна макетов плакатов, афиш – все происходит в «Битрикс24».

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

Московский еврейский театр «Шалом»: «Благодаря «Битрикс24» дорожка зрителя к нам сократилась»

В государственном московском еврейском театре «Шалом» достаточно много административных задач, которые не видны на сцене. Все, что касается обсуждения и согласования документов, согласования дизайна макетов плакатов, афиш – все происходит в «Битрикс24».

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

В поисках «ключа от всех дверей»: хорошие и плохие тренды монетизации трафика

Не секрет, что большая часть сайтов на DLE — это развлекательные или информационные ресурсы, нацеленные на монетизацию трафика. За долгие годы работы мы повидали тысячи подобных проектов от лидеров отраслей с гармоничным дизайном и продуманной структурой контента до аутсайдеров с самопальными шаблонами выполненными восьмиклассниками с пятёркой по информатике и торчащими во все стороны «стайл позишн абсолют». В этой небольшой заметке мы решили порассуждать о том, что отличает хорошие и плохие проекты друг от друга, асимптотически приближаясь к плоскости, отделяющей зерна от плевел. Без претензии на абсолютную истинность, снимая всяческую ответственность и т. д. и т. п., начнём….

Источник: http://dle-news.ru/blog/1710-v-poiskah-klyucha-ot-vseh-dverey-horoshie-i-plohie-trendy-monetizacii-trafika.html

В поисках «ключа от всех дверей»: хорошие и плохие тренды монетизации трафика

Не секрет, что большая часть сайтов на DLE — это развлекательные или информационные ресурсы, нацеленные на монетизацию трафика. За долгие годы работы мы повидали тысячи подобных проектов от лидеров отраслей с гармоничным дизайном и продуманной структурой контента до аутсайдеров с самопальными шаблонами выполненными восьмиклассниками с пятёркой по информатике и торчащими во все стороны «стайл позишн абсолют». В этой небольшой заметке мы решили порассуждать о том, что отличает хорошие и плохие проекты друг от друга, асимптотически приближаясь к плоскости, отделяющей зерна от плевел. Без претензии на абсолютную истинность, снимая всяческую ответственность и т. д. и т. п., начнём….

Источник: https://dle-news.ru/blog/1710-v-poiskah-klyucha-ot-vseh-dverey-horoshie-i-plohie-trendy-monetizacii-trafika.html

Выпущен drupal 8.2.5

Newsletter:  Новости Друпал

Критических ошибок нет.
Подробности изменений

0 Спасибо

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

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

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

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

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

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

Источник: http://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-проектов.

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

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

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

Источник: http://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]; }

Источник: http://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]; }

Источник: https://dle-news.ru/bags/v11/1706-nedostatochnaya-filtraciya-dannyh.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

DataLife Engine v.11.2 Final Release

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

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

Источник: https://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С-Битрикс», которая обеспечивает непрерывность бизнес-процессов даже в моменты пиковых нагрузок, а также контролирует качество выполняемых процессов.

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

© 2009 Обзор CMS