Score:1

ฉันจะใช้ Feeds Tamper เพื่อประมวลผลคอลัมน์ CSV หลายคอลัมน์เป็นฟิลด์เดียวได้อย่างไร

ธง cn

ฉันมีไฟล์ CSV ที่ฉันนำเข้ามายังไซต์ของฉันโดยใช้ ฟีดการงัดแงะ.

ไฟล์ CSV มีคอลัมน์เช่น

  • เส้นทาง URL
  • ผักที่ชอบ
  • ผลไม้ที่ชอบ
  • พาสต้าของโปรด

ใน Drupal ประเภทเนื้อหาของฉันมี ฟิลด์ JSONและฉันต้องการนำเข้า "ผักที่ชอบ" "ผลไม้ที่ชอบ" และ "พาสต้าที่ชอบ" ลงในช่อง JSON

มีวิธีแมปคอลัมน์โปรดทั้งสามคอลัมน์ในไฟล์ CSV กับฟิลด์ Drupal JSON และรวมค่าในปลั๊กอิน Tamper หรือไม่ ฉันไม่พบวิธีดึงข้อมูลจากหลายแหล่ง (คอลัมน์ CSV สามคอลัมน์) ในปลั๊กอิน Tamper

นี่คือโครงสร้างของปลั๊กอิน Tamper

<?php

เนมสเปซ Drupal\tamper\Plugin\Tamper;

ใช้ Drupal\tamper\Annotation\Tamper;
ใช้ Drupal\tamper\TamperableItemInterface;
ใช้ Drupal\tamper\TamperBase;

/**
 * การใช้งานปลั๊กอินสำหรับการนำเข้า CSV คัดลอกมาจากปลั๊กอินเข้ารหัส
 *
 * @แทมเปอร์(
 * id = "json_import",
 * label = @Translation("นำเข้า JSON"),
 * คำอธิบาย = @Translation("นำเข้า JSON แบบกำหนดเอง"),
 * หมวดหมู่ = "ข้อความ",
 * handle_multiples = จริง
 * )
 */
คลาส JsonImport ขยาย TamperBase {

  /**
   * {@inheritdoc}
   */
  ฟังก์ชั่นสาธารณะ defaultConfiguration () {
    $config = parent::defaultConfiguration();
    ส่งคืน $config;
  }

  /**
   * {@inheritdoc}
   */
  การงัดแงะฟังก์ชั่นสาธารณะ ($data, TamperableItemInterface $item = NULL) {
    ส่งคืน $data;
  }

}
Score:3
ธง cn

ตกลง นี่คือวิธีที่ถูกต้องในการทำเช่นนี้

รับแหล่งที่มา () จะส่งคืนอาร์เรย์พร้อมคีย์สำหรับคอลัมน์ CSV ทั้งหมด

ชื่อคอลัมน์ถูกประมวลผลดังนี้:

  • คำเดียว: ตัวพิมพ์ใหญ่จะถูกเก็บไว้ (สีเหลือง, แปลก

  • หลายคำ: ช่องว่างจะถูกแทนที่ด้วย _ และตัวพิมพ์เล็กทั้งหมด (เมตาแท็ก กลายเป็น meta_tag)

    /**
     * {@inheritdoc}
     */
    การงัดแงะฟังก์ชั่นสาธารณะ ($data, TamperableItemInterface $item = NULL) {
      $csv_columns = $item->getSource();
    
      $json = [];
      $json['favoriteFruit'] = $csv_columns['favorite_fruit'];
      $json['favoriteVegetable'] = $csv_columns['favorite_vegetable'];
      $json['favoritePasta'] = $csv_columns['favorite_pasta'];
      $encoded_json = json_encode($json);
      ส่งคืน $encoded_json;
    }
    
Score:-1
ธง cn

ฉันไม่เข้าใจวิธีเข้าถึงคอลัมน์ CSV หลายคอลัมน์ แต่วิธีแก้ปัญหาอย่างหนึ่งคือใช้ Excel หรือซอฟต์แวร์สเปรดชีตอื่นๆ เพื่อสร้างคอลัมน์ใหม่และสร้างค่า JSON ใน Excel นี่ไม่ใช่แนวทางที่ดีเพราะคุณต้องทำการ Escape ทั้งหมดใน Excel ซึ่งไม่สนุกและเกิดข้อผิดพลาดได้ง่าย

ตัวอย่างเช่น ใน Excel คุณสามารถใช้สูตรดังนี้:

=CONCAT("{"+CHAR(34)+"favoriteFruit"+CHAR(34)+":"+CHAR(34)+J3+CHAR(34)+","+CHAR(34)+"favoriteVegetable"+ CHAR(34)+":"++CHAR(34)+K3+CHAR(34)+","+CHAR(34)+"พาสต้าจานโปรด"+CHAR(34)+":"+CHAR(34)+C3 +CHAR(34)+"}")

จากนั้นใน Feeds Tamper คุณต้องเพิ่ม เข้ารหัส ปลั๊กอินและ "ถอดรหัส JSON" ตามด้วยไฟล์ เข้ารหัส ปลั๊กอินอีกครั้งด้วย "เข้ารหัส JSON" ถ้า JSON ของคุณไม่มีข้อผิดพลาด มันจะถูกนำเข้าไปยัง Drupal

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา