xandeadx.ru Блог музицирующего веб-девелопера

CSSКомпиляция LESS в PhpStorm на Windows с помощью less.php (без Ruby, без Node.js, без СМС)

Опубликовано в

Пример настройки PhpStorm для компиляции LESS в CSS, без необходимости установки Ruby, Node.js и подобного, достаточно только PHP и LESS компилятора oyejorge/less.php.

DrupalСгруппировать два дисплея Views в табы (локальные задачи)

Опубликовано в

Есть два дисплея Views типа Page, например один выводит какие то ноды, а второй форму их сортировки с помощью DraggableViews. Нужно объединить представления в друпаловские табы:

DrupalПрограммный экспорт товаров в CSV

Опубликовано в

Пример экспорта товаров Drupal Commerce в CSV файл:

define('MODULENAME_CSV_DELIMITER', ';');
 
/**
 * Export form.
 */
function modulename_export_form($form, &$form_state) {
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Run export'),
  );
 
  if (!empty($_SESSION['export_file_ready'])) {
    drupal_add_js('
      jQuery(function() {
        var link = document.createElement("a");
        link.download = "products-export.csv";
        link.href = "' . file_create_url('public://products-export.csv') . '";
        link.click();
      });

DrupalОбновить синонимы нод, при изменении синонима термина

Опубликовано в

Дано — материалы с полем "Категория". Синонимы материалов строятся на основе синонима выбранной категории, например по шаблону [node:field-category:url:path]/[node:title].

Задача — массово изменять синонимы нод, при изменении синонима термина.

Решение:

/**
 * Implements hook_form_FORM_ID_alter(): taxonomy_form_term.
 */
function modulename_form_taxonomy_form_term_alter(&$form, &$form_state) {
  if ($form['tid']['#value']) {
    $form['#submit'][] = 'modulename_batch_update_node_alias';

РазноеКурс лекций "Администрирование Linux" (видео)

Опубликовано в

DrupalПрограммно добавить скидку к заказу

Опубликовано в

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

Пример добавления скидки в 500 руб. для заказов с числом товаров больше 5:

/**
 * Implements hook_commerce_order_presave().
 */
function MODULENAME_commerce_order_presave($order) {
  $order_wrapper = entity_metadata_wrapper('commerce_order', $order);
  $line_items_quantity = commerce_line_items_quantity($order_wrapper->commerce_line_items, commerce_product_line_item_types());
 
  if ($line_items_quantity > 5) {

PHPКоротко о CGI, FastCGI, PHP-FPM и mod_php

Опубликовано в

Решил навести в голове порядок о том, как работают вместе веб-сервер и PHP.

CGI

Common Gateway Interface, "общий интерфейс шлюза" — это стандарт, который описывает, как веб-сервер должен запускать прикладные программы (скрипты), как должен передавать им параметры HTTP-запроса, как программы должны передавать результаты своей работы веб-серверу. Прикладную программу взаимодействующую с веб-сервером по протоколу CGI принято называть шлюзом, хотя более распространено название CGI-скрипт или CGI-программа.

DrupalЗаменить сообщение о завершении заказа на свой .tpl.php файл

Опубликовано в

Два способа заменить сообщение о завершении заказа на свой .tpl.php файл.

Способ 1

Будет работать только из своего модуля.

MODULENAME.module:

/**
 * Implements hook_theme().
 */
function MODULENAME_theme() {
  return array(
    'commerce_checkout_completion_message' => array(
      'template' => 'commerce-checkout-completion-message',
      'variables' => array(
        'order' => NULL,
      ),
    ),
  );
}
 
/**
 * Implements hook_commerce_checkout_pane_info_alter().
 */
function MODULENAME_commerce_checkout_pane_info_alter(&$checkout_panes) {