Kirim pemberitahuan email ketika komentar baru diposting

15

Saya menggunakan Drupal 8.1 dengan Aturan 8.x-3.0-alpha1.

Saya ingin membuat aturan untuk mengirim email ke pembuat node ketika komentar baru diposting ke node ini. Masalahnya adalah saya tidak mendapatkan alamat email penulis dengan aturan karena dataset memberi saya hanya nilai-nilai ini: @ node.node_route_context: node atau komentar tetapi di bawah komentar saya tidak menemukan apa pun seperti komentar: node: author. Di Drupal 7 saya punya data ini. Apa yang harus saya lakukan di Drupal 8?

lolhonk
sumber
Status alfa Aturan mungkin berarti bahwa fungsi ini belum diimplementasikan, mengharuskan Anda untuk menambalnya sendiri.
Bojan Zivanovic
1
Terima kasih tetapi tampaknya menjadi masalah modul token. Karena modul lain seperti pemberitahuan Entitas tidak mendapatkan penulis: surat juga. Token ini sepertinya rusak.
lolhonk

Jawaban:

5

Jawaban yang Diperbarui

Sementara menguji ini pada instalasi baru Drupal 8 dengan Aturan (Alpha 2) saya telah menemukan bug yang mencegah tes yang sukses ini, sementara pemilih data di bawah ini benar saya saat ini tidak dapat mereproduksi aturan kerja.

Laporan bug ada di sini: https://www.drupal.org/node/2770291 - Untuk meringkas masalah ini Aturan mengharapkan TO: parameter menjadi array dan akan melempar kesalahan ketika melewati token alamat email di bawah ini yang mengembalikan tali.

Jawaban awal saya berlaku untuk Drupal 7 namun untuk Drupal 8 situasinya tampak lebih sederhana dan bergantung pada satu fakta yang belum terdokumentasi dengan baik.

Di D7 kita terbiasa dengan sintaksis yang menyerupai: comment:node:author:mail

Dalam D8 pemilih yang sama (yang berfungsi) adalah: comment.entity_id.entity.uid.entity.mail.value

Semoga ini bisa membantu, saya akan meninggalkan jawaban sebelumnya di bawah jika itu membantu orang lain.

Jawaban Sebelumnya

* Secara umum dengan Aturan untuk menggunakan nilai bidang, aturan terlebih dahulu harus secara khusus memeriksa keberadaan bidang (yaitu bahwa bidang memiliki nilai dalam konteks aturan berjalan). Jika Anda belum mencoba ini, Anda mungkin ingin mencoba menambahkan kondisi "Entity has field" ke aturan untuk memeriksa keberadaan alamat email. Ini kemudian harus memperlihatkan token untuk bidang tersebut.

Saya pernah mengalami masalah serupa yang mengeksekusi aturan menggunakan hubungan entitas (yang lebih atau kurang apa yang Anda lakukan dengan mereferensikan penulis dari node) memeriksa keberadaan bidang (dalam kasus Anda kemungkinan besar cek bahwa entitas memiliki penulis (ini harus membuka akses ke objek pengguna) kemudian cek terhadap objek pengguna untuk memastikannya memiliki alamat email) membuka token bidang yang tersedia dari entitas yang direferensikan. *

HomoTechsual
sumber
Saya tertarik untuk melihat aturan kerja yang disertakan dalam jawaban ini yang benar-benar sesuai dengan pertanyaan ini ... untuk D8 . Dapatkah Anda memperbarui jawaban Anda untuk memasukkan contoh seperti itu (menggunakan versi terbaru D8 dari modul Rules ? PS: dari jumlah peningkatan pertanyaan ini, tampaknya ada pengguna lain yang juga mencari sesuatu yang serupa ...
Pierre. Vriens
Hal yang pasti dan ide bagus, Saya butuh sedikit waktu untuk membuat situs pengujian baru untuk menghasilkan ini.
HomoTechsual
Tidak sabar untuk segera melihat jawaban Anda yang diperbarui. Meskipun memutar situs yang sesuai hanya berjarak 1 klik saja ... gunakan https://simplytest.me/project/rules , terima versi 8.x-3.0-alpha2 (default) dan tekan " launch sandbox " - tombol. Setelah melakukannya, Anda memiliki semua yang Anda butuhkan untuk "dengan cepat" membangun Aturan yang ada dalam pikiran Anda. Kemudian ekspor, dan salin / tempel ekspor itu di jawaban Anda di sini. Lalu beri tahu saya (komentar tambahan?) Aturan Anda siap untuk ditinjau QA. Akan lebih baik jika Anda bisa mempostingnya di suatu tempat dalam beberapa hari mendatang ... jika Anda bisa.
Pierre.Vriens
Hai @ Pierre.Vriens Saya sudah mengedit komentar saya, setelah bermain dengan Aturan pada D8 sedikit lebih jauh ini ternyata menjadi kurang kompleks yang saya pikir dan lebih merupakan hasil dari penyeleksi yang berubah di D8.
HomoTechsual
Juga saya tidak yakin mengapa saya selalu melupakan SimplyTest.me
HomoTechsual
1

Ada contoh yang berfungsi dalam antrian masalah Peraturan yang diposting pada November 2016, jadi ini sudah dimungkinkan setidaknya sejak saat itu. Lihat https://www.drupal.org/project/rules/issues/2828422

Inilah versi yang sedikit dimodifikasi dari jawaban itu. Anda dapat mengimpor ini ke situs Anda dan melihatnya di UI untuk mempelajari cara mengkonfigurasi fungsi ini.

langcode: en
status: true
dependencies: {  }
id: 'email_node_author_on_new_comment'
label: 'Email Node Author on New Comment - Issue 2828422'
events:
  -
    event_name: 'rules_entity_insert:comment'
description: 'Sends email to Node Author when a New Comment is added.'
tags:
  - node
  - email
  - comment
config_version: '3'
expression:
  id: rules_rule
  uuid: b5276280-d0f2-4f64-9512-06f077793c58
  conditions:
    id: rules_and
    uuid: ebf212fc-d858-417d-977d-af1be2cfd886
    conditions: {  }
  actions:
    id: rules_action_set
    uuid: 88a78280-2bca-4367-a4d3-8bbda9397c2a
    actions:
      -
        id: rules_action
        uuid: 5e6e5aed-b75f-412a-9670-48327eb58ba6
        context_values:
          to:
            - '{{ comment.entity_id.entity.uid.entity.mail }}'
          subject: 'Your content {{ comment.entity_id.entity.title }} has a new comment.'
          message: 'Your content {{ comment.entity_id.entity.title }} has a new comment.'
          reply: ''
          language: ''
        context_mapping: {  }
        context_processors:
          to:
            rules_tokens: {  }
          subject:
            rules_tokens: {  }
          message:
            rules_tokens: {  }
          reply:
            rules_tokens: {  }
          language:
            rules_tokens: {  }
        provides_mapping: {  }
        action_id: rules_send_email
anonim
sumber