CONTENT MANAGEMENT SYSTEM
Blox Logo
Blox CMS — блочный метод сайтостроения
.
 
Blox Help

←→

Пакетный импорт данных (по столбцам)

В предыдущем способе импорта по строкам можно импортировать только текстовые данные. В данной же статье рассматривается способ, пригодный для вставки как текстовых, так и файловых данных (например, картинок).

Допустим, имеется блок фотогалерии с тремя полями: поле для фотографий, поле для названий фотографий и поле для описаний фотографий. В этот блок необходимо вставить 20 записей (фотографий с текстами).
Шаблон (photoGallery.tpl)Дескриптор (photoGallery.tdd)
<?php 
    foreach ($tab as $dat)
    echo "
        {$dat['edit']}
        <img src='dataFiles/$dat[1]'><br>
        <b>$dat[2]</b><br>
        $dat[3]<br>
        <br>
    " 
?>
<?php
    # Фотография
    $types[1]='file';
    # Название фотографии
    $types[2]='varchar(100)'; 
    # Описание фотографии
    $types[3]='text';         
    
    $params['isMultiRec'] = true;
?>

Если идти стандартным путем, то пришлось бы 20 раз повторять одну и ту же операцию, а именно: создавать новую запись (щелкнув по кнопке редактирования), выбирать на локальном компьютере фотографию, вставлять тексты для названия и описания.

Для таких случаев существует пакетный способ вставки данных, который заключается в том, что отдельно для каждого поля подготавливается пакет данных в виде zip-файла. Затем эти файлы просто закачиваются на сайт, где происходит автоматическая вставка данных.

Вернемся к нашему примеру. Допустим мы подготовили следующие файлы фотографий: 1.jpg, 2.jpg, ... 20.jpg. Имена файлов могут быть любые - нужно только помнить, что данные будут вставляться в алфавитном порядке имен файлов. Заархивируем все эти файлы в один zip-файл. Имя архивного файла на этот раз не играет никакого значения, пусть это будет файл f1.zip.

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

Чтобы импортировать пакет данных

  1. Войдите на сайт как администратор или редактор блока.
  2. Откройте страницу с нужным блоком.
  3. Щелкните по кнопке редактирования записи, начиная с которой вы хотите вставить данные.
    Если щелкнуть по кнопке новой записи, то после импорта будут созданы новые записи. Если же щелкнуть по кнопке редактирования существующей записи, то в этой и следующей за ней записях будут заменены данные полей, в которые производилось импортирование.
  4. Находясь в окне редактирования зайдите в меню: Блок > Импорт данных в блок > Пакетный (по столбцам). Откроется окно, похожее на окно редактирования, только вместо полей ввода значений данных, будут поля выбора пакета (файла на локальном компьютере).
  5. Выберите файлы пакетов данных для нужных вам полей.
  6. Щелкните по кнопке OK. После закачки файлов откроется страничка сайта с новыми данными.


В нашем пример нужно для поля 1 выбрать файл f1.zip. Перейдем к данным в остальных полях - они в отличие от первого поля являются не файловыми, а текстовыми. Поэтому дадим правила для подготовки любых пакетов данных.

Чтобы подготовить пакет данных

  1. Пакет данных относится только к одному полю блока.
  2. Пакет данных состоит из отдельных файлов, каждый из которых соответствует только одному данному.
  3. Данные будут последовательно вставляться в разные записи блока в алфавитном порядке имен файлов.
    Нужно иметь в виду, что порядок сортировки файлов на сервере может отличаться от порядка сортировки на вашем локальном компьютере, поэтому желательно, чтобы в именах файлов присутствовали только цифры и латинские буквы.
  4. Файловые данные, или данные типа file, (картинки, прайсы и т.п.) представляют сами себя.
  5. Файл текстового данного (mysql) представляет собой текстовый файл любого формата, например, .txt, в который записано это данное.
  6. Данные типа page, block, select не могут быть импортированы (они назначаются системой управления).
  7. Все файлы одного пакета должны быть заархивированы в один файл в формате zip (имя файла не важно).

Вернемся к нашему примеру. Следуя этим правилам, подготовим пакет для поля 3 (описания фотографий). То есть, создадим файлы 1.txt, 2.txt, ... 20.txt и заархивируем их в один файл, скажем, f3.zip.

Пакет для поля 2 (названия фотографий) сделаем несколько иначе. При создании пакета данных для этого поля пришлось бы создать также 20 текстовых файлов, каждый из которых содержал бы лишь одно-два слова. Согласитесь, это не очень удобно. Для текстовых данных существует альтернативный способ создания пакетов, когда все текстовые данные одного поля собираются в один текстовый файл. Он особенно удобен для коротких текстовых данных. В качестве пакета данных для названия фотографий мы создадим следующий текстовый файл из 20 строк:

f2.txt

Ксюша делает первые шаги
Ксюша на утреннике в детсаде
Ксюша идет в школу
...
Ксюша на выпускном балу
Ниже даны правила для альтернативного способа подготовки пакетов данных.

Альтернативный способ подготовки пакетов (все текстовые данные - в одном текстовом файле)

  1. Пакет данных представляет собой один текстовый файл (имя файла не важно).
  2. Каждая строка этого текстового файла представляет собой одно данное, то есть, перевод строки служит разделителем данных.
  3. Пустая строка означает пустое данное.
    Не забывайте о пустых строках в конце документа – они будут интерпертированы как данные, и в результате на странице в конце блока появятся пустые записи. Впрочем, пустые записи можно потом просто удалить.
  4. Данные будут вставляться в разные записи блока в порядке следования строк.
  5. Файл пакета может быть заархивирован в формате zip (имя файла не важно).
    Внимание! Если вы закачиваете файл .zip, представляющий собой архив, состоящий из одного текстового файла, то он будет интерпетирован как альтернативный пакет данных (с множеством текстовых данных), а не как пакет, состоящий из одного file-данного. Другими словами, если вы хотите вставить только одно текстовое данное методом импортирования, то не архивируйте текстовый файл перед его импортом. А лучше вставьте текстовое данное обычным способом, то есть, через окно редактирования записи.

Примечания

  • При пакетной вставке не обязательно подготавливать и вставлять данные для всех полей сразу - это можно (и даже нужно) делать в несколько заходов – отдельно для каждого поля.
  • На практике пакетный метод импорта чаще всего используется для вставки картинок, а тексты вводятся обычным способом (через окно редактирования) уже после вставки картинок.
  • Если вы не уверены, что на сайте данные пакета будут вставлены в правильном порядке, то данные можно вставлять небольшими пакетами, состоящими из файлов, в именах которых есть какая-то последовательность.