GoogleSheets. События, MIGX и интеграция с другими компонентами.
Приветствую, друзья!
Накопилось очень много пунктов в TODO списке по компоненту и нашлось время несколько пунктов зачеркнуть.
Итак, что нового в этом обновлении:
Первом делом в импорте убрана синхронизация, как написал @Иван Кизименко здесь она не логична, так как компонент синхронизирует только таблицу с сайтом, а наоборот пока не умеет. Синхронизация есть только в экспорте, ловим изменения на сайте и записываем в гугл таблицу. А вообще, нужна ли эта обратная синхронизация, если есть крон?
Данную идею подкинул пользователь 696050, так как я очень люблю migx-таблицы, то решил ее реализовать.
Окно настройки:
Параметры:
Рассмотрим вариант:
Есть форма на сайте для отзывов. Все отзывы сохраняются в migx таблице.
Чтобы занести новый отзыв в migx таблицу вам потребуется написать свой сниппет — это отличный вариант для тех кто умеет это делать. А для тех кто не умеет и установлен компонент:
— Добавляем к форме хук GoogleSheetsSaveForm и новые отзывы будут сохраняться в гугл таблице.
— Импортировать данные в migx таблицу:
Стоит отменить, что работать можно только с migx-таблицей, у которой все поля одинаковые.
Список всех событий указаны в документации.
Ранее в импорте и экспорте были условия, по которым фильтровались данные. Теперь вместо этих условий пришли события, что позволит не только фильтровать данные, но и менять их.
Несколько примеров:
1. Фильтруем ресурсы перед импортом и сразу же устанавливаем значения по умолчанию.
@Miša Bulic
@Леонид
Я вас услышал)
2. Выбираем ресурсы с определенным шаблоном
3. Прибавляем 10% к цене, а текущую цену записываем в старую цену.
4. Менять значение самого поля. Например, мы добавили поле template, которое выведет id шаблона, но мы хотим чтобы было в таком формате: Название шаблона (id).
Результат:
Больше примеров вы сможете найти в документации
Цена компонента пока остается без изменения — всего 990 руб. Купить можно в modstore
Хорошей всем недели! Не болейте, желаю всем 36.6.
Накопилось очень много пунктов в TODO списке по компоненту и нашлось время несколько пунктов зачеркнуть.
Итак, что нового в этом обновлении:
- Улучшен Импорт/Экспорт
- Добавлен Импорт/Экспорт MIGX таблиц
- Добавлены события
- Поддержка других компонентов
Импорт
Первом делом в импорте убрана синхронизация, как написал @Иван Кизименко здесь она не логична, так как компонент синхронизирует только таблицу с сайтом, а наоборот пока не умеет. Синхронизация есть только в экспорте, ловим изменения на сайте и записываем в гугл таблицу. А вообще, нужна ли эта обратная синхронизация, если есть крон?
MIGX экспорт/импорт
Данную идею подкинул пользователь 696050, так как я очень люблю migx-таблицы, то решил ее реализовать.
Окно настройки:
Параметры:
- URL таблицы — ссылка гугл таблицы
- Лист таблицы — название листа в гугл таблице
- Ресурс — id ресурса
- MIGX — дополнительное поле с типом migx
Рассмотрим вариант:
Есть форма на сайте для отзывов. Все отзывы сохраняются в migx таблице.
Чтобы занести новый отзыв в migx таблицу вам потребуется написать свой сниппет — это отличный вариант для тех кто умеет это делать. А для тех кто не умеет и установлен компонент:
— Добавляем к форме хук GoogleSheetsSaveForm и новые отзывы будут сохраняться в гугл таблице.
— Импортировать данные в migx таблицу:
- В ручную в админке
- По крону
- При отправке формы через js
$.ajax({
url: '/assets/components/googlesheets/action.php',
type: "POST",
data: {
id: 5, // id импорта
mode: 'import', // import or export
auth_code: 'значение системной настройки googlesheets_auth_code'
},
success: function(data, textStatus, jqXHR){ console.log(JSON.parse(data)) },
dataType: 'text'
});
- Можно и в хуке добавить импорт:
$GoogleSheets->process('import', 5);
Стоит отменить, что работать можно только с migx-таблицей, у которой все поля одинаковые.
События
Список всех событий указаны в документации.
Ранее в импорте и экспорте были условия, по которым фильтровались данные. Теперь вместо этих условий пришли события, что позволит не только фильтровать данные, но и менять их.
Несколько примеров:
1. Фильтруем ресурсы перед импортом и сразу же устанавливаем значения по умолчанию.
@Miša Bulic
@Леонид
Я вас услышал)
if($modx->event->name == 'gsOnImportValues') {
if($range == 'ImportResources') {
$values = array_filter($values, function($v){
return $v['id'] != 5;
});
foreach($values as $idx => $value) {
$values[$idx] = array_merge(array(
'template' => 10,
'menutitle' => $value['pagetitle'],
),$value);
}
$modx->event->params['values'] = $values;
}
}
2. Выбираем ресурсы с определенным шаблоном
<?php
if($modx->event->name == 'gsOnBeforeGetResource') {
$query->where(array('template' => 3)); // 3 - id шаблона
}
3. Прибавляем 10% к цене, а текущую цену записываем в старую цену.
<?php
if($modx->event->name == 'gsOnGetProducts') {
$modx->event->params['products'] = array_map(function($product){
if(isset($product['old_price']) && !empty($product['price'])) {
$product['old_price'] = $product['price'];
}
if(!empty($product['price'])) {
$product['price'] = $product['price'] * 1.1;
}
return $product;
},$products);
}
4. Менять значение самого поля. Например, мы добавили поле template, которое выведет id шаблона, но мы хотим чтобы было в таком формате: Название шаблона (id).
<?php
if($modx->event->name == 'gsOnBeforeExportValues') {
$modx->event->params['values'] = array_map(function($value) use (& $modx){
if(!empty($value['template'])) {
// Получаем нужный нам шаблон
if($template = $modx->getObject('modTemplate', $value['template'])) {
$value['template'] = $template->get('templatename') . ' (' . $value['template'] . ')';
}
}
return $value;
},$values);
}
Результат:
Больше примеров вы сможете найти в документации
Цена компонента пока остается без изменения — всего 990 руб. Купить можно в modstore
Хорошей всем недели! Не болейте, желаю всем 36.6.
Поблагодарить автора
Отправить деньги
Комментарии: 4
А можно ли добавить импорт MIGX-таблицы не в один ресурс? А несколько? Плагином определяя id (например, первая колонка в файле)? Экспорт тоже работет из MIGX поля?
А можно ли добавить импорт MIGX-таблицы не в один ресурс?Пока нет.
Экспорт тоже работет из MIGX поля?Да
Через плагин динамически подставлять id импорта тоже не получится?
Через плагин можно все
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.