Проблемы Drupal
Проблемы DrupalПроблема: Иногда бывает так, что после переноса сайта на хостинг, не применяются стили оформления темы.
Решение: на странице "Производительность"(/admin/config/development/performance) надо выключить объединение java и css файлов. Потом можно будет включить обратно.
Как сделать поле Model/SKU уникальным для feeds+uc_feeds
Как сделать поле Model/SKU уникальным для feeds+uc_feedsПравим файл 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Во время импорта товаров в 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);
}
...
ЗЫ Буду рад, если кто предложит более красивое решение, или укажет на моменты которые я не учел.