Инструкция как пропатчить модуль Drupal. Патч Drupal.

Просмотров: 1255
Оценка: 

Что такое патч для системы упарвления сайтом Drupal?

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

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

Для начала разберемся как выглядит патч для Drupal. Ниже приведен пример файла патча для Drupal.

Рис. 1. Пример файла патча.

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

В данном примере файл патча помещается в корневую папку сайта.

Как пропатчить модуль Drupal?

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

Пропатчить модуль Drupal можно двумя способами: вручную или специальной командой подключившись по SSH.

Как патчить вручную:

Находим в файле патча строки, которые начинаются со знаков  "+" и "-".

Рис. 2. Строки со знаками "+" и "-".

Строку, которая вначале отмчена знаком "-" нужно удалить целиком, а строку, которая вначале отмечена знаком "+" необходимо добавить. Для этого через поиск (Ctrl+F) в файле, который надо патчить находим предыдущую строку перед удаляемой или добавляемой. В данном примере нужно найти сначала строку:

$form['conditional']['#access'] = TRUE;

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

dpm($form['conditional']);

Строку добавляем без знака "+".

Далее через поиск по файлу находим следующую строку:

if (isset($submitted_data[$component['cid']])) {

Следующая строка в патче помечена знаком "-", а это значит ее надо удались в файле модуля, который патчим.

Удаляем строку:

$components[$component['cid']]['value'] = $submitted_data[$component['cid']]['value'];

Следующая строка в файле патча отмечена знаком "+", это значит ее надо вставить в файле, который патчим. Вставляем строку без нака "+":

$components[$component['cid']]['value'] = $submitted_data[$component['cid']][0];

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

 

Как патчить командой, подключившить по SSH?

Если Ваш сайт находится на хостинге, то скорее всего там операционная система Юникс. В ОС Юникс утилита patch входит в поставку системы.

  1. По FTP закачиваете файл патча в крневую папку сайта. Если Вы статю прочли не полностью - обратите внимание на текст под Рис. 1.
  2. Подключаетесь к хостингу по SSH
  3. Введя в Вашем SSH подключении команду:

    ls

    Вы увидете список каталогов и файлов. Если это корневая папка сайта, то Вы так же в выведенном списке увидите файл патча.

  4. Далее пишем слудующую команду:

    patch -p0 <имяпатча

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

Поделитесь материалом с друзьями!

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и абзацы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и абзацы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.