إعادة توجيه أو إعادة كتابة روابط دروبال
سؤال
لدي بنية مخصصة لتصفح المحتوى الذي تم تصميمه به hook_menu
ووجهات النظر. أرغب في توجيه روابط للمحتوى بواسطة نوع العقدة إلى الوجهة المناسبة في هيكيتي. لذلك أثناء النقر عادة على رابط العقدة ، يأخذك node/123
, ، بدلاً من ذلك أود أن أرسل إلى foo/123
(لأن العقدة 123 هي من النوع "فو").
لقد جربت Pathauto لكن الأمر لا يعمل على صنعه فقط foo/123
الاسم المستعار node/123
. بنية محددة ، علامات التبويب ، إلخ ... تم تصميمها باستخدام hook_menu
إلى عن على foo/123
. Pathauto (كما أفهمها) هو مجرد عرض فقط node/123
وهو مجرد عرض عقدة Drupal ، وليس ما أريد أن أظهره.
بدأت في التجميع hook_nodeapi
و drupal_goto
لإعادة توجيه بناء على نوع العقدة. [العمل على بعض المشكلات التي لا حصر لها ، لكنني متأكد من أنني أستطيع معرفة ذلك.] لكن هل أريد حقًا القيام بذلك؟ ألن يكون هناك ضربة سريعة للحصول على كل رابط على الموقع يمر عبر إعادة توجيه HTTP؟
ما هي الطريقة المثلى لعمل هذا؟
يحرر
في الواقع ، أعتقد أن المشكلة هي أن Pathauto لا يحترم Hook_Menu ، وربما ليس الأداة الصحيحة لهذا الوظيفة. مع عدم إعداد Pathauto حتى الآن ، لدي hook_menu تحدد صفحة لـ foo/123
حيث فو هو نوع العقدة. التنقل إلى foo/###
يعمل كما هو متوقع عرض الإصدار المخصص من Node ###.
الآن أريد إعادة التوجيه node/###
إلى foo/###
, ، أو وضع طريقة أخرى ، أريد جميع الروابط إلى node/###
ليتم كتابتها باسم foo/###
. يبدو هذا بمثابة مهمة واضحة لـ Pathauto حيث يكون نمطتي تحت نوع العقدة foo/[nid]
. إلا بعد إعداده ، لم يعد Hook_node يعمل. هذا بسبب الآن foo/###
يتم توجيهه إلى node/###
كما طلبت ذلك وما يتم عرضه هو عرض عقدة الفانيليا Drupal ، وليس Hook_Menu.
المحلول
في الواقع ، يمكن إعداد Pathauto لتحديد نوع المسار المخصص الخاص بك. يستخدم وحدة الرمز المميز للسماح لك بسهولة إعادة تكوين كيفية بناء المستعار ...
تحقق في صفحة الإدارة من Pathauto (المسؤول/البناء/المسار/pathauto).
يحرر
لتحرير ما سأفعله هو تنفيذ Hook_Menu_alter ، وسأقوم بتعديل رد الاتصال على صفحة العقدة/٪ إلى رد الاتصال المستخدم في Hook_Menu لتقديم صفحة Foo/123.