Проблемы Drupal

Проблемы Drupal divan1 вс, 10 фев 2019 - 21:02

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

Решение: на странице "Производительность"(/admin/config/development/performance) надо выключить объединение java и css файлов. Потом можно будет включить обратно.

 

Как сделать поле Model/SKU уникальным для feeds+uc_feeds

Как сделать поле Model/SKU уникальным для feeds+uc_feeds divan1 ср, 01 ноя 2017 - 16:55

Правим файл uc_feeds/uc_feeds.module, функция uc_feeds_feeds_processor_targets_alter(). Элемент массива $targets['model'] должен выглядеть так:
    $targets['model'] = array(
      'name' => t('UC: Model/SKU'),
      'callback' => 'uc_feeds_set_target',
      'description' => 'Ubercart:' . t('Model/SKU'),
      'optional_unique' => TRUE,
      'unique_callbacks' => array('uc_feeds_sku_mapper_unique'),
    );

Так же добавляем функцию обратного вызова:
function uc_feeds_sku_mapper_unique(FeedsSource $source, $entity_type, $bundle, $target, array $values) {
  $nid = db_query("SELECT nid FROM {uc_products} WHERE model = :model", array(':model' => $values[0]))->fetchField();
  return $nid;
}

Ошибка SQL при импорте товаров в Ubercart

Ошибка SQL при импорте товаров в Ubercart divan1 ср, 01 ноя 2017 - 03:49

Во время импорта товаров в Ubercart, при помощи модулей feeds+uc_feeds получаем ошибку:

SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect decimal value: '' for column 'sell_price' at row 1

Для решения проблемы, я применил следующий костыль. В файле uc_feeds/uc_feeds.module находим функцию uc_feeds_set_target(). Добавляем в начало функции три строки, которые из массива с одним элементом делают простую переменную.

function uc_feeds_set_target($source, $node, $target, $value) {
  if (is_array($value) && sizeof($value)==1) {
      $value = $value[0];
  }
  if (!is_array($value)) {
    ...
  }

Небольшое пояснение:
Как видно, функция не работает с переменной $value в случае если она массив. Но самая засада кроется в методе FeedsProcessor->mapToTarget(). Именно из этого метода вызывается uc_feeds_set_target() и в нем содержится следующий код:

      ...
      // All target callbacks expect an array.
      if (!is_array($value)) {
        $value = array($value);
      }
      ...

ЗЫ Буду рад, если кто предложит более красивое решение, или укажет на моменты которые я не учел.