LOGO-CMS-CONTENTSTACK

API Penyambung CMS CONTENTSTACK Berisi

API-Penyambung-CMS-CONTENTSTACK-Contentful-IMAGE-PRODUK

Spesifikasi
  • produk: API Penyambung CMS – Berisi
  • Penerangan: Pakej migrasi-berisiti memudahkan proses pemindahan data daripada Contentful kepada Contentstack CMS dengan menyediakan fungsi utiliti untuk mengekstrak jenis kandungan, memetakan medan dan mengendalikan lokasi.

API Penyambung CMS – Berisi
Dokumen ini menggariskan fungsi dan penggunaan pakej migration-contentful, yang direka untuk memudahkan proses pemindahan data daripada Contentful kepada Contentstack CMS. Ia menyediakan fungsi utiliti utama untuk mengekstrak jenis kandungan, memetakan medan dan mengendalikan lokasi, memastikan proses migrasi yang lancar dan cekap. Bahagian berikut memperincikan pemasangan, fungsi yang tersedia dan tingkah laku khususnya.
Pakej yang memenuhi keperluan migrasi

Berakhirview

Pakej migration-contentful digunakan untuk memudahkan proses pemindahan data daripada Contentful kepada CMS Contentstack. Ia membantu dalam pengekstrakan jenis kandungan, pemetaan medan dan pengendalian lokasi. Pakej ini mengandungi fungsi utiliti utama untuk memudahkan tugasan ini.

Pemasangan

Dalam package.json anda, anda merujuk pakej ini daripada local anda file sistem seperti ini:

  • JavaScript
  • "kebergantungan": {
  • “berpuas hati dengan penghijrahan”: “file:berpuas hati dengan penghijrahan”
  • }

Ini menjadikan pakej yang mengandungi migrasi tersedia secara tempatan tanpa perlu mengambilnya daripada pendaftaran luaran seperti npm.

Fungsi Utama

Anda boleh mengimport fungsi berikut daripada pakej untuk digunakan dalam projek anda:

  1. ekstrakJenisKandungan:
    • Fungsi ini mengekstrak jenis kandungan daripada data Contentful yang dieksport dan menyimpannya secara setempat.
    • Ia memproses data untuk mencipta format berstruktur yang boleh digunakan untuk migrasi ke CMS lain. const { extractContentTypes } = require('migration-contentful');
  2. buatPemetaInisial:
    • Sebaik sahaja jenis kandungan diekstrak, fungsi ini akan mengubahnya menjadi skema pemetaan. Skema ini membantu dalam memindahkan data dengan memastikan medan dipetakan dengan betul antara sistem. const { createInitialMapper } = require('migration-contentful');
  3. ekstrakTempatan:
    • Fungsi ini mengekstrak maklumat penempatan (data bahasa dan wilayah) daripada eksport Contentful. Ini penting untuk memindahkan kandungan dengan variasi bahasa ke CMS baharu. const { extractLocale } = require('migration-contentful');

Cara Penggunaan

Untuk menggunakan fungsi dalam kod anda, hanya importnya seperti ini:

  • JavaScript
  • const { extractContentTypes, createInitialMapper, extractLocale } = memerlukan('penghijrahan-berisi');

Fungsi-fungsi ini akan membolehkan anda:

  • Ekstrak jenis kandungan daripada eksport Contentful.
  • Cipta pemetaan medan berdasarkan data yang diekstrak.
  • Ekstrak dan uruskan penempatan untuk memindahkan data bahasa

Fungsi ekstrakJenisKandungan

Berakhirview
Modul ini menyediakan utiliti untuk mengekstrak dan menyimpan definisi jenis kandungan Contentful berserta antara muka editor yang berkaitan. Data diproses dan disimpan sebagai JSON berstruktur. files untuk digunakan dalam saluran paip migrasi atau penyegerakan CMS.

Fungsi: ekstrakJenisKandungan(fileLaluan, awalan)

Penerangan

  • Jika anda mempunyai sebarang pertanyaan, sila hubungi tso-migration@contentstack.com.
  • Membaca a file yang mengandungi jenis kandungan yang berkonten dan antara muka editor, memprosesnya dan menyimpan setiap jenis kandungan dalam format berstruktur.

Parameter:

  • fileLaluan (rentetan): Laluan ke file yang mengandungi model Kandungan Berisi yang dieksport.
  • awalan (rentetan): Awalan pada ruang nama atau labelkan definisi medan yang disimpan.

Pulangan:

Janji : Menyelesaikan apabila jenis kandungan berjaya diproses dan disimpan.

Kelakuan:

  1. Memeriksa sama ada folder di contentfulFolderPath wujud. Jika tidak, ia akan menciptanya.
  2. Membaca input file dan mengekstrak contentTypes dan editorInterfaces.
  3. Jika contentTypes wujud, ia mewakilkan pemprosesan kepada saveContentType(). Jika tidak, ia akan mencatat "Tiada jenis kandungan ditemui".

Lontaran:
Melog dan membuang ralat jika membaca file atau penyimpanan data gagal.

Fungsi: simpanJenisKandungan(JenisKandungan, AntaraMukaEditor, awalan)

Penerangan:
Memproses setiap jenis kandungan dan medannya dengan memadankannya dengan kawalan editor masing-masing dan menyimpan data ke JSON files.

Parameter:

  • Jenis kandungan (Array ): Susunan definisi jenis kandungan.
  • Antara Muka Editor (Array ): Tatasusunan konfigurasi editor untuk medan.
  • awalan (rentetan): Digunakan untuk melabelkan data medan.

Pulangan:

kekosongan: Fungsi ini menulis files dan tidak mengembalikan apa-apa.

Kelakuan:

  1. Menukar sys.id setiap jenis kandungan kepada snake_case.
  2. Mencari antara muka editor yang sepadan dengan membandingkan ID jenis kandungan.
  3. Menggabungkan definisi medan dengan maklumat widget/editornya.
  4. Menyimpan setiap jenis kandungan sebagai .json yang dicantikkan file dalam folder sasaran.

Keluaran File

Setiap jenis kandungan mendapat .jsonnya sendiri file dinamakan sempena tajuknya yang telah dibersihkan (aksara khas dialih keluar, huruf pertama ditulis dengan huruf besar).

Format Output (setiap medan):
Setiap tatasusunan JSON yang disimpan mengandungi objek dengan kekunci berikut:

  • awalan
  • contentUid
  • kandunganKeterangan
  • ID yang memuaskan
  • id, nama, jenis, disetempatkan, diperlukan, pengesahan, dinyahdayakan, diabaikan (daripada definisi medan)
  • widgetId (daripada antara muka editor)
  • contentNames (senarai semua ID jenis kandungan)

Fungsi createInitialMapper

Berakhirview

  • Fungsi createInitialMapper membaca data model kandungan yang dieksport daripada Contentful, mengubah setiap model kepada format skema yang serasi dengan Contentstack dan mengembalikan pemetaan lengkap jenis kandungan.
  • Ia biasanya digunakan semasa migrasi CMS atau proses penyegerakan antara Contentful dan Contentstack.

Tandatangan Fungsi

  • JavaScript
  • const createInitialMapper = async() => { … }

Input
Tiada satu pun yang diluluskan secara langsung.

Membaca filedari:

  • JavaScript
  • laluan.selesaikan(proses.cwd(), `${config.data}/${config.contentful.contentful}`)
  • di mana setiap file mengandungi definisi medan untuk jenis kandungan Berisi.

Keluaran
Objek dalam struktur berikut:

  • JavaScript
  • Jenis kandungan: [ … ] // tatasusunan objek pemetaan jenis kandungan

Setiap objek contentType mengandungi:

Padang taip Penerangan
 

status

 

nombor

 

Menunjukkan keadaan aktif (1 = aktif)

 

Dikemas kini

 

boolean

 

Sama ada pemetaan telah dikemas kini

 

kemas kiniPada

 

rentetan

 

Masa Terkiniamp (dibiarkan kosong pada mulanya)

 

TajukCmslain

 

rentetan

 

Tajuk jenis kandungan daripada Contentful

 

otherCmsUid

 

rentetan

 

UID daripada Contentful (contentfulID)

 

kandungantimbunanTajuk

 

rentetan

 

Tajuk yang diubah untuk Contentsstack (Huruf Besar)

 

kandunganUid

 

rentetan

 

UID untuk Contentstack, dibetulkan dengan

uidPembetul()

 

taip

 

rentetan

 

Sentiasa 'jenis_kandungan'

Pemetaan medan tatasusunan Pelbagai definisi medan, termasuk sistem

padang

Logik Dalaman

Baca Files

  • JavaScript
  • const files = menunggu fs.readdir(…);

Mendapatkan semua JSON files mewakili jenis kandungan yang berkontentif.

Ulang Files

  • JavaScript
  • untuk (konstanta file of files) { … }

Untuk setiap file:

  • Membaca definisi medan
  • Memperoleh tajuk jenis kandungan daripada filenama

Bina Objek Skema
Setiap objek merangkumi:

  • Metadata tentang jenis kandungan
  • Medan lalai (tajuk dan url) ditambah secara manual
  • Medan tersuai dijana melalui contentTypeMapper()

Jana Medan

  • JavaScript
  • const contentstackFields = […uidTitle, …contentTypeMapper(data)].filter(Boolean);
  • uidTitle: Medan lalai berkod keras untuk tajuk dan url
  • contentTypeMapper(data): Memetakan medan Contentful secara dinamik kepada skema Contentstack

Padam Folder Sementara

  • padamFolderSync(laluan.selesai(…));
  • Mengalih keluar folder data selepas diproses untuk mengelakkan penggunaan semula atau konflik.

Hasil Pulangan
Mengembalikan senarai akhir jenis kandungan yang dipetakan untuk kegunaan selanjutnya.

Pengendalian Ralat

Sebarang kesilapan semasa file bacaan, transformasi atau pemadaman folder ditangkap dan direkodkan: js

SalinSunting
console.error('Ralat menyimpan jenis kandungan:', ralat);

Example Return

  • JavaScript
  • “Jenis kandungan”: [
  • "status": 1,
  • "dikemas kini": palsu,
  • “kemas kiniAt”: “”,
  • “otherCmsTitle”: “blogPost”,
  • “otherCmsUid”: “IDPostblog”,
  • “contentstackTajuk”: “BlogPost”, “contentstackUid”: “blog_post”, “type”: “content_type”,
  • “Pemetaan medan”: [
  • “uid”: “tajuk”,
  • “contentstackJenisField”: “teks”, …
  • },

Fungsi Berkaitan

  • contentTypeMapper: Menukar setiap medan Contentful kepada skema Contentstack.
  • Pembetul uid: Menormalkan UID medan.
  • ekstrakLanjutanMedan: Menyuntik metadata (cth., wajib, unik).
  • padamPenyegerakanFolder: Membersihkan direktori sementara setempat.

Fungsi contentTypeMapper

Berakhirview
Fungsi contentTypeMapper ialah utiliti pemetaan komprehensif yang mengubah struktur model kandungan (biasanya daripada CMS seperti Contentful) kepada tatasusunan skema yang sesuai untuk CMS lain (seperti Contentstack). Berikut ialah pecahan cara ia berfungsi dan fungsi setiap bahagian — sesuai untuk digunakan dalam dokumentasi pembangun:

Fungsi Tujuan
Fungsi contentTypeMapper mengambil tatasusunan definisi medan kandungan (data) dan mengembalikan tatasusunan objek skema ternormal yang diformat untuk Contentstack. Ia menyokong pelbagai jenis medan, konfigurasi widget dan metadata lanjutan.

Tandatangan Fungsi

  • JavaScript
  • const contentTypeMapper = (data) => { … };
  • Input: data – Tatasusunan objek definisi medan, biasanya dieksport daripada sumber CMS.
  • Output: schemaArray – Tatasusunan objek medan yang diubah yang distrukturkan untuk Contentstack.

Logik Teras (Cara Ia Berfungsi)

Lelaran Melalui Data Input

  • data.reduce((acc, item) => { … }, []);
  • Setiap medan (item) dalam tatasusunan data diproses berdasarkan jenis dan widgetIdnya.
  • Jika anda mempunyai sebarang pertanyaan, sila hubungi tso-migration@contentstack.com.

Kendalikan Jenis Medan yang Berbeza

  • Teks kaya
    • Panggilan arrangeRte untuk menyelesaikan rujukan.
    • Menggunakan createFieldObject dengan jenis json.
  • Simbol, Teks
    • Mengendalikan widget seperti singleLine, urlEditor, slugEditor, berbilangBaris, penurunan harga, lungsur turun, radio, tagEditor dan listInput.
  • Nombor, Integer
    • Memetakan editor kepada nombor atau memetakan semula kepada juntai bawahNumber, radioNumber, dsb.
  • tarikh
    • Dipetakan terus kepada isodat.
  • Tatasusunan, Pautan
    • Aset (Imej, Files): Dipetakan kepada file, dengan .multiple = true jika ia merupakan satu tatasusunan.
    • Entri (Rujukan):
    • Menghuraikan linkContentType daripada pengesahan.
    • Memperoleh rujukan (referenceFields) menggunakan logik pembantu.
    • Menggunakan createFieldObject dengan jenis rujukan.
    • kotak semak, Tag Editor, Input Senarai: Dipetakan dengan sewajarnya.
  • Boolean
    • Dipetakan kepada boolean.
  • Objek
    • Jika widgetId ialah objectEditor, ditandakan sebagai jenis aplikasi.
    • Jika tidak, memperkayakan nama menggunakan metadata aplikasi daripada appDetails.
  • Lokasi
    Mencipta medan kumpulan serta submedan untuk lat dan lon.

Fungsi Pembantu: createFieldObject
Ini menyeragamkan output medan skema:

  • JavaScript
  • {
  • uid,
  • MedanCmslain
  • JenisCmslain,
  • contentstackMedan,
  • kandunganFieldUid,
  • contentstackJenisMedan,
  • JenisMedanSandaran,
  • sandaranFieldUid,
  • maju

Di mana advanced berasal dari extractAdvancedFields, memberikan butiran seperti:

  • wajib
  • unik
  • tidak Boleh Dilokalisasikan
  • Medan rujukan (jika berkenaan)

Logik Khas

  • uidCorrector() digunakan untuk menyeragamkan ID untuk keserasian.
  • Pemeriksaan bersyarat pada item.items, pengesahan dan widgetId memastikan pemeta mengendalikan medan bersarang yang mendalam atau berstruktur longgar dengan anggun.
  • Rujukan dinyahduplikasi dan dihadkan untuk prestasi (slice(0, 9) atau length < 25).

Pembalakan Konsol
Untuk widget seperti tagEditor atau listInput, console.info() dipanggil — mungkin untuk tujuan penyahpepijatan.

Ringkasan
Fungsi ini penting dalam memindahkan atau mengubah definisi model kandungan daripada satu CMS kepada CMS yang lain. Ia memastikan:

  • Logik khusus widget dihormati
  • Hubungan rujukan dipelihara
  • Medan diperkaya dengan metadata yang diperlukan
  • Widget kompleks seperti Lokasi, Objek dan Rujukan dikendalikan dengan betul

Fungsi ekstrakLocale

Penerangan
Fungsi ini mengekstrak kod penempatan unik (cth., en-us, fr-fr) daripada eksport JSON Contentful dan mengembalikannya dalam tatasusunan. Kod penempatan ini kemudiannya dihantar ke pangkalan data melalui API bahagian belakang untuk menyokong penyetempatan dalam CMS baharu seperti Contentstack.

Kebergantungan

  • jsonFileLaluan: Laluan ke JSON yang dieksport file daripada Contentful.
  • fs (Node.js terbina dalam): Digunakan untuk membaca file kandungan.

Fungsi: ekstrakLocale

Tujuan

  • Mengekstrak dan mengembalikan senarai kod lokasi unik yang digunakan dalam CMS legasi. Parameter
  • jsonFileLaluan (rentetan) – File laluan kepada data Contentful yang dieksport (format JSON).

Pulangan
Susunan – Senarai kod lokasi unik.

Example:

  • JavaScript
  • ['en-us', 'fr-fr']
  • Mengembalikan array kosong [] jika:
    • Tiada lokasi ditemui.
    • The file hilang atau tidak sah.

Tingkah laku

  • Mengesahkan file laluan dan struktur JSON.
  • Menghuraikan JSON dan mengekstrak nilai daripada tatasusunan locales.
  • Mengumpul kod lokasi unik (locale.code).
  • Mengendalikan dan merekodkan ralat dengan anggun.

Example Penggunaan

  • JavaScript
  • const ekstrakLocale = memerlukan('./libs/ekstrakLocale');
  • (async () => {
  • const locales = await extractLocale('./legacy-export.json'); console.log('Locales ditemui:', locales);
  • })();

Pengesah Berisi

Berakhirview
Pengesah Contentful mengesahkan bahawa model kandungan JSON yang dieksport daripada Contentful mengandungi semua sifat yang diperlukan seperti yang ditakrifkan dalam skema konfigurasi (contentful.json). Ia digunakan sebagai langkah pra-pengesahan sebelum mengubah atau memindahkan model kandungan ke dalam CMS lain seperti Contentstack.

Fungsi: contentfulValidator(data: string)

Penerangan:
Mengesahkan rentetan JSON mentah yang dieksport daripada Contentful terhadap definisi skema yang diperlukan yang disediakan dalam contentful.json.

Parameter:  data (rentetan): Model kandungan JSON mentah sebagai rentetan (daripada Contentful)

Pulangan:

  • benar jika:
    Semua sifat yang diperlukan yang disenaraikan dalam konfigurasi terdapat dalam objek JSON yang dihuraikan.
  • palsu jika:
    Mana-mana harta yang diperlukan hilang.
  • JSON rosak atau tidak boleh dihuraikan.

Logik Dalaman

  1. Huraikan input JSON
    • JavaScript
    • jsonData = JSON.parse(data);
      1. Percubaan untuk menghuraikan rentetan input ke dalam objek JavaScript yang sah.
      2. Jika penghuraian gagal, fungsi tersebut akan mengembalikan nilai palsu.
  2. Lelaran Skema Konfigurasi
    • JavaScript
    • Objek.nilai(jsonConfig).setiap((prop: sebarang) => { … });
      1. Berulang melalui setiap medan yang ditakrifkan dalam skema contentful.json.
  3. Sahkan Setiap Hartanah
    • JavaScript
    • jika (jsonData?.hasOwnProperty(prop?.name)) {
    • kembali benar;
    • }
    • lain jika (prop?.required === 'benar') {
    • kembali palsu;
    • }
    • kembali benar;
      1. Memeriksa sama ada sifat yang diperlukan wujud dalam jsonData yang dihuraikan.
      2. Jika sifat yang diperlukan tiada, fungsi tersebut akan litar pintas dan mengembalikan nilai palsu.
  4. Pengendalian Ralat
    JavaScript
    cuba { … } tangkap (ralat) {
    kembali palsu;
    1. Fungsi ini mengendalikan semua ralat penghuraian atau masa jalan.
    2. Jika penghuraian gagal atau struktur data yang tidak dijangka ditemui, false dikembalikan tanpa membuang.

Example Penggunaan

  • JavaScript
  • import contentfulValidator daripada './validators/contentful-validator';
  • import fs daripada 'fs';
  • const rawData = fs.readFileSegerak('eksport-berisi.json', 'utf-8');
  • jika (contentfulValidator(rawData)) {
  • console.log('✅ Skema kandungan sah!');
  • } lain {
  • console.error('❌ Skema tidak sah: Medan yang diperlukan tiada atau JSON rosak.');

Menjalankan Projek muat naik-api pada Mana-mana Sistem Pengendalian

  • Arahan berikut akan membimbing anda menjalankan folder muat naik-api pada mana-mana sistem pengendalian, termasuk Windows dan macOS.
  • Jika anda mempunyai sebarang pertanyaan, sila hubungi tso-migration@contentstack.com.

Memulakan Projek muat naik-api

  • Terdapat dua kaedah untuk memulakan projek upload-api: Kaedah 1:
  • Jalankan arahan berikut dari direktori akar projek anda:
  • Shell
  • npm run upload
  • Arahan ini akan memulakan pakej upload-api secara langsung.

Kaedah 2:
Navigasi ke direktori upload-api secara manual dan jalankan pelayan pembangunan:

  • Shell
  • muat naik cd-api
  • npm run mula

Pendekatan ini memulakan upload-api dari dalam direktorinya sendiri.

Dimulakan Semula Selepas Penamatan
Jika projek ditamatkan secara tidak dijangka, anda boleh memulakannya semula dengan mengikuti langkah yang sama yang digariskan di atas. Pilih sama ada Kaedah 1 atau Kaedah 2 untuk melancarkan semula perkhidmatan.

Had

  1. Tidak mengendalikan kes penggunaan pemadaman tindanan destinasi sedia ada semasa masa jalan
  2. Modul pemeta kandungan | tindanan sedia ada | jenis kandungan sedia ada dipetakan | Blok modular, taksonomi medan ini boleh dipadankan dengan medan Kotak Teks Baris Tunggal
  3. Had Migrasi Jenis Kandungan dalam Tindanan Ujian
    Apabila memindahkan jenis kandungan dalam tindanan ujian, pengendalian rujukan yang dilampirkan bergantung pada had rujukan organisasi anda:
    • Organisasi dengan had rujukan 50: Migrasi data penuh disokong jika jenis kandungan mempunyai lebih daripada 10 rujukan.
    • Organisasi dengan had rujukan 10: Jika jenis kandungan mempunyai lebih daripada 10 rujukan, hanya 'tajuk' dan 'URL' medan akan dipindahkan.
  4. Isu: Penghijrahan data mungkin menghadapi masalah yang tidak dijangka jika data Contentful mengandungi UID pendua.

Jika anda mempunyai sebarang pertanyaan, sila hubungi tso-migration@contentstack.com.

Soalan Lazim

Apakah tujuan pakej yang memenuhi keperluan migrasi?

Pakej ini memudahkan penghijrahan data daripada Contentful kepada Contentstack CMS dengan menyediakan fungsi utiliti untuk pengekstrakan kandungan, pemetaan medan dan pengendalian penempatan.

Bagaimanakah saya memasang pakej yang mengandungi kandungan migrasi?

Anda boleh merujuk pakej dalam package.json anda file untuk menggunakannya secara setempat tanpa mengambil daripada pendaftaran luaran.

Apakah fungsi yang tersedia dalam pakej kandungan migrasi?

Fungsi utama termasuk extractContentTypes, createInitialMapper dan extractLocale untuk pengekstrakan jenis kandungan, pemetaan dan pengendalian penempatan.

Dokumen / Sumber

API Penyambung CMS CONTENTSTACK Berisi [pdf] Manual Pemilik
API Penyambung CMS Contentful, API Penyambung Contentful, API Contentful, Contentful

Rujukan

Tinggalkan komen

Alamat e-mel anda tidak akan diterbitkan. Medan yang diperlukan ditanda *