পুরো নোড (টেমপ্লেট সামগ্রী সহ) ইমেল করুন


9

আমি আমার নিজস্ব কাস্টম node.tpl.php ফাইল তৈরি করেছি। আমি এখন পুরো নোডটি ইমেল করতে চাই, প্রত্যেকবার ব্যবহারকারী সেই সামগ্রীটির ধরণের একটি নতুন নোড তৈরি করে (আমি নিশ্চিত করেছি যে আমার নোড.tpl.php ফাইলে থাকা সমস্ত এইচটিএমএল ইমেল বান্ধব)

কিভাবে আমি এটি করতে পারব? নোড সংরক্ষণ করা হলে আমি ইমেলটি একটি নির্দিষ্ট ইমেল ঠিকানায় স্বয়ংক্রিয়ভাবে যেতে চাই I

আমি খুঁজে পেয়েছি যে বিধি এবং এইচটিএমএল মেলের সংমিশ্রণটি আমি যা চাই তা অর্জন করতে পারে। বাদে ... একটি নিয়ম ক্রিয়া তৈরি করার সময়, পুরো নোড (node.tpl.php সেগুলি সহ) ইমেল করার বিকল্প নেই। বিধিগুলি কেবলমাত্র নির্দিষ্ট নোড ক্ষেত্রগুলিকে ইমেল করার বিকল্প দেয় (সেগুলি না করে)।

কোন পরামর্শ সবচেয়ে প্রশংসা হবে!

উত্তর:


20

এখানে অন্য পদ্ধতি। (কোডটি এই স্যান্ডবক্সে উপলভ্য ।

nodemail.info

name = Nodemail
description = Sends node e-mails.
core = 7.x

nodemail.install '

<?php
function nodemail_enable() {
  $current = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
  $addition = array('nodemail' => 'NodemailMailSystem');
  variable_set('mail_system', array_merge($current, $addition));
}

function nodemail_disable() {
  $mail_system = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
  unset($mail_system['nodemail']);
  variable_set('mail_system', $mail_system);
}

nodemail.module

<?php
class NodemailMailSystem extends DefaultMailSystem {
  public function format(array $message) {
    $message['body'] = implode("\n\n", $message['body']);
    $message['body'] = drupal_wrap_mail($message['body']);
    return $message;
  }
}

function nodemail_mail($key, &$message, $params) {
  switch ($key) {
    case 'node_mail':
      $message['headers']['Content-Type'] = 'text/html; charset=UTF-8;';
      $message['subject'] = $params['subject'];
      $message['body'][] = $params['body'];
      break;
  }
}

function nodemail_node_insert($node) {
  if ($node->type == 'mycontenttype') {
    $params['subject'] = 'Node "' . $node->title . '" was created';
    $params['body'] = render(node_view($node));
    $to = variable_get('site_mail', '');
    $from = 'noreply@example.com';
    $lang = language_default();
    drupal_mail('nodemail', 'node_mail', $to, $lang, $params, $from);
  }
}

এই মডিউলটিকে এইচটিএমএল ই-মেইল প্রেরণের অনুমতি দেওয়ার জন্য ইনস্টল করা ফাইল সামগ্রী এবং নোডমেলমেল সিস্টেম সিস্টেম শ্রেণি ব্যবহৃত হয়। অন্য দুটি ফাংশন হুক_মেল () এবং হুক_নোড_ইনসার্ট () এর বাস্তবায়ন যা কোনও নোড mycontenttypeতৈরি হওয়ার পরে ইমেলগুলি প্রেরণের সাথে সম্পর্কিত । একটি জিনিস আপনাকে লক্ষ্য করতে হবে যে দ্রুপাল নোড প্রদর্শনের জন্য থিমের নোড টেমপ্লেট ফাইলটি ব্যবহার করবে যা নোড তৈরি পৃষ্ঠার জন্য ব্যবহৃত হবে (বা মূল নোড.tpl.php থিমটি না থাকলে) । আপনি এখানে ব্যবহৃত নোড_ভিউ () এবং ড্রুপাল_মেল () ফাংশনগুলিও দেখতে চাইতে পারেন। এই পুরো জিনিসটি ড্রুপাল 7 মূল কার্যকারিতা নিয়ে কাজ করা উচিত (কোনও অবদানের মডিউলগুলির প্রয়োজন নেই)।


ধন্যবাদ! এটি ব্যতীত কাজ করে ... আমার সাইটে, নোডের টেম্পলেটটি ট্যাক্সোনমি শব্দটি অনুসারে পরিবর্তিত হয়। সুতরাং ব্যবহারকারী যদি পদটি 1 দিয়ে নোড ট্যাগ করে তবে নোড রেন্ডার করতে টেমপ্লেট 1 ব্যবহার করা হয়। (দেখুন drupal.stackexchange.com/questions/23688/… )। আমি যখন আপনার কোড ব্যবহার করি, কেবলমাত্র ডিফল্ট নোড.tpl.php ফাইল ব্যবহার করা হয় (এবং নোড রেন্ডার করতে ব্যবহৃত টেম্পলেট নয়)। এই সমাধানের জন্য কোনো উপায় আছে কি? (দুঃখিত, যদি আমি এর আগে উল্লেখ না করার জন্য উপদ্রব মনে করি - আমি ভেবেছিলাম এটি কোনও সমস্যা হবে না কারণ রেন্ডার নোডে টেমপ্লেট রয়েছে)।
big_smile

@ বিগ_স্মাইল সমস্যাটি সম্ভবত আমি আমার উত্তরে উল্লেখ করেছি: অ্যাডমিন থিম যা নোড তৈরির জন্য ব্যবহৃত হচ্ছে। সম্ভাব্য সংশোধনগুলি যা আমি বর্তমানে বিবেচনা করতে পারি: 1) সামগ্রী সম্পাদনা / তৈরির জন্য আপনার ডিফল্ট থিমটি ব্যবহার করুন ('অ্যাডমিন / উপস্থিতি'তে চেকবক্সটি চেক করুন) 2) টেমপ্লেট.এফপি এবং নোড টেমপ্লেটগুলি থেকে প্রশাসক থিম ফোল্ডারে নকল করুন এবং সাফ ক্যাশে 3) ই-মেলগুলির জন্য আপনার মডিউলটিতে কাস্টম টেম্পলেট তৈরি করুন।
ম্যাডিস

6

আপনি একটি টোকেন তৈরি করতে পারেন যা রেন্ডার নোড ছিল বা একটি কাস্টম বিধি ক্রিয়া তৈরি করতে পারে যা রেন্ডার নোড প্রেরণ করবে।

আপনি দেখতে চান

$build = node_view($node);
$html = render($build);

কোড সহ আপডেট হয়েছে

এই কোডটি দেখায় যে সমস্ত নোডগুলিতে কীভাবে কোনও সম্পত্তি যুক্ত করা যায় যা নিয়মে অ্যাক্সেসযোগ্য করা যায়। আমি এটি বলে একটি মডিউল তৈরি করেছিgoogletorp

/**
 * Implements hook_entity_property_info_alter().
 */
function googletorp_entity_property_info_alter(&$info) {
  // Add the current user's shopping cart to the site information.
  $info['node']['properties']['rendered_node'] = array(
    'label' => t("Rendered_node"),
    'description' => t('The full rendered node.'),
    'getter callback' => 'googletorp_render_node',
  );
}

/**
 * Return a rendered node as HTML.
 */
function googletorp_render_node($node) {
  return render(node_view($node));
}

প্রথম ফাংশন হুক যা নোডে সম্পত্তি যুক্ত করে যেখানে কলব্যাকে ডেটা সরবরাহ করার জন্য সংজ্ঞায়িত করা হয়। দ্বিতীয় ফাংশনটি হ'ল আসল কলব্যাক যা রেন্ডার নোডটি দেয়।

এটি কাজ করার জন্য, আপনাকে সত্তা টোকেনস মডিউলটি ইনস্টল করতে হবে যা সত্তা এপিআই মডিউলের একটি অংশ , তবে যাইহোক বিধি দ্বারা এটি প্রয়োজনীয়।


ধন্যবাদ - এটাই আমার দরকার। তবে কীভাবে করবেন? আমি বিধি এবং টোকেন ডাউনলোড করেছি, তবে রেন্ডার নোডটি প্রেরণের কোনও বিকল্প নেই।
বিগ_স্মাইল

@ বিগ_স্মাইল আপনাকে এই কার্যকারিতাটি নিজে তৈরি করতে হবে - এটি করার বিভিন্ন উপায় রয়েছে।
googletorp

উত্তর দেওয়ার জন্য সময় দেওয়ার জন্য ধন্যবাদ। সত্যি কথা বলতে, আপনার উত্তরগুলি খুব বেশি সহায়ক নয়। যদি আমি নিজেই কীভাবে কার্যকারিতা তৈরি করতে জানতাম তবে আমি কোনও প্রশ্ন জিজ্ঞাসা করব না। স্পষ্টতই, আমি আশা করি আপনি সম্পূর্ণ উত্তর পোস্ট করবেন। তবে, আপনি যদি আপনার পরামর্শগুলি কীভাবে সম্পাদন করতে চান তার বিস্তৃত
সংস্থাগুলির

2
@ বিগ_স্মাইল তাই আপনি আমাকে নিচে রেখেছিলেন কারণ আমি আপনাকে খাওয়াতাম না? আপনি গুগল চেষ্টা করেছেন, আপনি কি প্রকল্পের হোমপেজ চেষ্টা করেছেন? আমি 30 সেকেন্ডে বিধি বিস্তৃত ডক্স পেয়েছি, আমি নিশ্চিত আপনিও এটি করতে পারেন। অলসতা করবেন না।
googletorp

1
আমি অলস না এবং খাওয়ানো আশা করি না। আপনার উত্তরটি খুব অস্পষ্ট ছিল এবং এটি মোটেই বোঝা যায় না যে উত্তরটি নিয়ম ডকটিতে পাওয়া যাবে। প্রকৃতপক্ষে, "আপনি নিজেরাই এই কার্যকারিতাটি তৈরি করতে" ইঙ্গিত দেয় যে আমাকে বিধিগুলির বাইরে থাকা কিছু উত্পাদন করতে হবে। এই কারণেই আমি আপনার জবাবকে অগ্রাহ্য করেছি - এটি সহায়ক হওয়ার পক্ষে খুব অস্পষ্ট ছিল। তবে আপনার প্রোফাইলটি দেখে আমি দেখতে পাচ্ছি আপনি খুব সহায়ক এবং এর ভিত্তিতে আমি মনে করি না যে এটি আপনার অস্পষ্ট হওয়ার উদ্দেশ্য। আমি ভাবি নি যে ডাউন ভোট খুব খারাপ হবে। আমি যদি পারতাম তবে তা উল্টো করে দিতাম। আমি আশা করি কোন শক্ত অনুভূতি নেই।
বড়_স্মাইল 10

1

অন্য বিকল্পটি আমার মডিউলটি এনটিটি 2 টেক্সট (ডিআরউপাল 7) ব্যবহার করবে।

এখনই এটি কোনও সত্তার প্রতিটি ভিউ মোডের জন্য একটি "টেক্সটেক্সপোর্ট" টোকেন দেয়। এটি অনেকগুলি ক্ষেত্রের ধরণের জন্য ভাল কাজ করে তবে অ্যাড্রেস ফিল্ডের মতো আরও জটিল সমস্যা রয়েছে।

আমি "htmlexport" যুক্ত করতে যাচ্ছি। আপনি যদি এই শাখার চেক আউট চেষ্টা করে দেখতে চান: http://drupalcode.org/project/entity2text.git/shortlog/refs/heads/7.x-1-htmlexport

আপনাকে এখনও বিধি এবং মাইমেল ব্যবহার করতে হবে (অথবা সম্ভবত উপরে বর্ণিত এইচটিএমএল)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.