سؤال

لدي مشكلة في مسارات Drupal في طريقة عرض واحدة أقوم بإنشاءها. الآن عرضي لديه هذا النموذج: المحتويات / 2/6.

حيث 2 و 6 هي معرفات العقدتين، أود التعامل مع هذه المعرفات لترجمةها دعنا نقول عنوان تلك العقد.

لا أستطيع القيام بذلك من الرأي لأنني أرسل هذه القيم إلى لوحة، ويجب أن يتم تلقي اللوحة معرفات العقد.

حتى تلخص، أريد فقط إعادة كتابة (مثل Pathauto) هذه المعرفات إلى العنوان، هل يمكنني القيام بذلك؟ هل هناك وحدة محددة لهذا؟

شكرا!

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

المحلول

إذا فهمت لك بشكل صحيح، فأنت تريد الاحتفاظ بمحتوى المسارات الأصلية / [NID_X] / [NID_Y]، ولكن إضافة أسماء أسماء عناوين URL إضافية لأولئك الذين لديهم عناصر مسار "التحدث" أكثر من العقد (مثل العناوين). إذا كان هذا صحيحا، فسيكون لديك خياران:

أولا، يمكنك أن تفعل ذلك يدويا عن طريق تحديد اسم مستعار URL للمحتوى / [NID_X] / [NID_Y] "ضمن" المشرف / الإنشاء / المسار / الإضافة ". هذا سهل القيام به، ولكن ربما لا ما تبحث عنه، إذا كنت بحاجة إلى العديد من تلك الأسماء المستعارة.

ثانيا، يمكنك أن تفعل ذلك برمجيا عن طريق path_set_alias() وظيفة. باستخدام الوظيفة مستقيم جدا إلى الأمام - قد تكون المشكلة الوحيدة هي أين تؤدي إليها. من الوصف الخاص بك، ليس من الواضح بالنسبة لي أين / عندما يتم إنشاء هذه الآراء، لذلك من الصعب التوصل إلى اقتراح - ربما يمكنك تحرير سؤالك لتكون أكثر تحديدا على ذلك.

إذا كنت ترغب في إنشاء اسم مستعار عنوان URL لمجموعات محددة من العقدة، فيمكنك محاولة استخدام "إدراج" و "تحديث" وعمليات "حذف" hook_nodeapi() لتحريك إنشاء الاسم المستعار. من الواضح أن هذا لن يعمل إلا إذا كانت هناك قاعدة متماسكة تتيح لك أن تقرر من التعليمات البرمجية التي تؤدي إلى إنشاء اسم مستعار أم لا.

بمجرد أن يكون لديك اسم مستعار URL في مكان لطريق معين، سيتم استخدامه بدلا من النسخة الأصلية كلما تم إنشاء رابط لهذا المسار عبر ل () وظيفة. لذلك، على سبيل المثال، إذا قمت بإنشاء إدخال قائمة مشيرا إلى "المحتوى / 2/6"، فإن عنوان URL المستخدم سيكون تلقائيا الاسم المستعار الذي قمت بإنشائه لهذا المسار.


تحرير: فقط في حالة انتهاء صلاحية الأسماء المستعارة برمجيا - إذا كنت تستخدم Pathauto على أي حال، يمكنك / يجب استخدامها pathauto_cleanstring()وظيفة (من "Pathauto.inc") للتأكد من أن عناوين URL التي تم إنشاؤها بشكل صحيح / إعادة كتابة / إعادة كتابة الأحرف المسموح بها.

نصائح أخرى

هناك طريقة لاستخدام وظيفة عنوان URL المخصص لإنشاء عناوين URL مخصصة مخصصة. إذا كنت تستخدم لوحات رغم أنني لست متأكدا مما إذا كنت ترغب في القيام بذلك بهذه الطريقة لأنها ثابتة للغاية.

function custom_url_rewrite($op, $result, $path) {

  if ($op == 'alias') {
    if (preg_match('|^[node_id#_here](/{0,1}.*)|', $path, $matches)) {
      return '[desired_alias]'. $matches[1];
    }
  }

  if ($op == 'source') {
    if (preg_match('|^[node_id#](/{0,1}.*)|', $path, $matches)) {
      return '[desired_source]'. $matches[1];
    }
  }

  return $result;

}

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

ربما مفيدة aswell:

تغيير الروابط البدء باستخدام طريقة عرض لبناء الرابط باستخدام استبدال الرمز المميز <a href="nodeview/[title]/nid" title="[title]">link tekst</a> والتعامل مع العقدة في عرض مع المسار exa nodeview و الحجج null null، null، nid fi

لمزيد من الروابط الملتوية لنا حقل View PHP لبناء السلسلة ..

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