في دروبال, كيفية تغيير القيم التي تم تمريرها إلى Pathauto?

StackOverflow https://stackoverflow.com/questions/2804781

  •  25-09-2019
  •  | 
  •  

سؤال

لدي Pathauto تكوين لتوليد مستعار استنادا إلى عنوان عقدة ، عن نوع محتوى معين.المشكلة هي أنني أريد أن إجراء تغييرات صغيرة في هذا العنوان قبل Pathauto يستخدم لتوليد الاسم المستعار.

أول تعليق في هذا المنصب تشير إلى استخدام hook_token_values ، ولكن لم أفهم كيفية استخدامها ، حتى بعد قراءة مستندات.في بلدي التجارب ، عندما كنت تنفيذ هذه هوك ، المستعار ولدت دائما "مجموعة" ، مما يعني أن أنا في عداد المفقودين شيء.

أي مساعدة ؟ شكرا

هل كانت مفيدة؟

المحلول

قد يكون من أن كنت غاب لتنفيذ hook_token_list وكذلك.توفير رمز جديد هو عملية من خطوتين:

  1. تنفيذ hook_token_list تعلن الرموز أنت ذاهب لتقديم.هذا سوف يكون مجرد اسم من الرموز, جنبا إلى جنب مع شرح قصير و المعلومات إلى أي نوع من الكائنات الرموز سيتم تطبيق (على سبيل المثالعقدة المستخدم ، والتصنيف،...)
  2. تنفيذ hook_token_value فعلا توليد المحتوى من الرموز.سيكون هذا يسمى عند الرموز يتم استبدال المحتوى الذي يجب أن تقف.

كما كنت ترغب فقط في توفير بديل نسخة من العنوان المميز الذي قدمته بالفعل رمز وحدة ، ربما يكون من الأفضل أن مجرد نسخ الأجزاء ذات الصلة من token_node.inc, جردت أسفل إلى القضايا ذات الصلة و تعديلها لاستخدامها في آخر وحدة:

/**
 * Implementation of hook_token_list().
 */
function yourModule_token_list($type = 'all') {
  if ($type == 'node' || $type == 'all') {
    $tokens['node']['yourModule-title'] = t('Node title (customized version by yourModule)');

    return $tokens;
  }
}

هذا ببساطة يقول أن yourModule يوفر رمز عقدة الكائنات اسمه yourModule-title, جنبا إلى جنب مع وصف قصير.العمل الرئيسي يحصل على القيام به في الأخرى هوك:

/**
 * Implementation of hook_token_values().
 */
function yourModule_token_values($type, $object = NULL, $options = array()) {
  $values = array();
  switch ($type) {
    case 'node':
      $node = $object;
      // TODO: Replace the check_plain() call with your own token value creation logic!
      $values['yourModule-title'] = check_plain($node->title);  
      break;
  }

  return $values;
}

هذا وسوف يطلق كلما الرموز عقدة الكائنات المطلوبة, مع عقدة في السؤال يتم تمريرها كما $object المعلمة (المستخدم رمزية ، $type سيكون 'المستخدم' ، $object سيكون كائن المستخدم, و ذلك على أنواع أخرى).ما يفعله هو خلق مجموعة من القيم ، مقفول من اسم رمزي ، مع استبدال هذا المنوال قيمة.رمز الأصلي من token_node.inc يعمل فقط من خلال العنوان check_plain(), لذا سيكون هذا المكان المناسب لإدراج الخاصة بك والمنطق.

نصائح أخرى

في دروبال 7, رمز الوظيفة قد تم نقله إلى الأساسية.الرموز التي يتم تنفيذها من قبل hook_tokens و hook_token_info الأساليب.للحصول على أمثلة الاستخدام اتبع الروابط الموجودة و ابحث عن ارتباطات إلى المهام التي تنفذ hook_tokens و hook_token_info... وجدت statistics_tokens و statistics_token_info وظائف مفيدة في فهم كيفية ربط هذا يعمل.

ربما من الجدير بالذكر أن هذا الخطاف يجب أن تنفذ من قبل وحدة... أول محاولة لي لقد تركت بلدي اختبار وظائف في الموضوع template.php إلا أن لا شيء يحدث على الإطلاق :-p

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top