Экспорт определенных полей в csv файл
Материал из Umicms
В модуле "Обмен данными" экспорт происходит всех полей, которые есть у объектов. С помощью быстрого экспорта в модулях системы выгружаются не все поля. Система устроена так, что при экспорте данных в csv файл, в экспорт попадают только поля прописанные в родительском типе данных модуля, плюс также некоторые поля заблокированы для экспорта. Обойти все ограничения можно изменив системные настройки какого-либо пользователя, который будет осуществлять экспорт. Будем использовать такой php код для редактирования настроек:
<?php header("Content-type: text/html; charset=utf-8"); include "standalone.php"; $type_id = umiObjectTypesCollection::getInstance()->getBaseType('users', 'user'); $type = umiObjectTypesCollection::getInstance()->getType($type_id); $field_id_settings_data = (int) $type->getFieldId('user_settings_data'); $permissions = permissionsCollection::getInstance(); $objects = umiObjectsCollection::getInstance(); $user_id = 14; $user = $objects->getObject($user_id); if($user instanceof umiObject == false) { throw new coreException("Can't get current user with id #{$user_id}"); } $settings_data = $user->getValue("user_settings_data"); //print_r($settings_data); echo "<br /><br />"; $settings_data_arr = unserialize($settings_data); $key_catalog = 'tree-catalog-tree'; $key_news = 'tree-news-lists'; $tag = 'used-columns'; echo $settings_data_arr[$key_news][$tag]."<br />"; /* $settings_data_arr[$key_news][$tag] = "publish_time[140px]|name[250px]|begin_time[100px]|end_time[100px]|anons_pic[100px]|content[100px]"; $settings_data_rec_1 = serialize($settings_data_arr); $sql = "UPDATE cms3_object_content SET text_val = '{$settings_data_rec_1}' WHERE obj_id = '{$user_id}' AND field_id ='{$field_id_settings_data}'"; $result = l_mysql_query($sql); if($result) echo "Запрос выполнен успешно"; */ ?>
данный код можно сохранить в файл csv.php и запустить через ваш домен: _http://домен/csv.php
В коде приведен пример изменения настроек пользователя с id = 14 (Супервайзер), для модуля новости. Для новостей необходимо изменить значения массива с индексами 'tree-news-lists' и 'used-columns', само значение получаем данным запросом:
$settings_data_arr[$key_news][$tag]
По умолчанию значение равно:
publish_time[140px]|name[250px]|begin_time[100px]|end_time[100px]
необходимо в него добавить дополнительные идентификаторы полей по аналогии с существующими, допустим для полей Анонс (anons) и Контент (content), необходимо добавить такую строку в закомментированной части кода:
|content[100px]|anons[100px]
Сделав нужные настройки, открываем закомментированную часть кода и снова запускам php скрипт, чтобы выполнился SQL запрос.
Данные ключи:
$key_catalog = 'tree-catalog-tree'; $key_news = 'tree-news-lists';
строятся по названию модуля и основного метода модуля, их можно увидеть в адресной строке, когда вы зашли на главную страницу модуля.
