it-swarm.asia

اسم ملف قالب صفحة المرشح لإدخال نوع محتوى مخصص معين

أنا أعمل على موقع Drupal 7. لقد أنشأت نوع محتوى مخصص للأعمال. لدي العديد من الحقول ، وبعضها مرتبط بتخطيط الصفحة مثل صفحة معينة لكل إدخال. لذا أحتاج إلى صفحة مخصصة. tpl لنوع المحتوى المحدد.

لذلك قمت بتنشيط وحدة Developer Theme وفتحها ، ثم نقرت على منطقة النص للحصول على اسم المرشح لإدخال صفحة نوع المحتوى المحدد. وتعطيني الشاشة أدناه والتي لا تعني لي أي شيء:/عندما أنقر فوق منطقة العقدة ، فلا بأس ، إنها تعطي العقدة - work.tpl.php ، لكني أحتاج إلى الصفحة. حاول "صفحة - work.tpl.php" ، لم يعمل.

ماذا ينقصني؟

enter image description here

11
Drupal guy
function mytheme_process_page(&$variables) {
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
}

بافتراض أن اسم نوع المحتوى المقروء آليًا هو "عمل" ، صفحة - work.tpl.php ستعمل.

الرجوع إلى هذا الموضوع لمزيد من المعلومات.

12
mingos

في template.php ، أضف:

function themeName_preprocess_page(&$vars) {
  if (isset($vars['node'])) {
    // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--',    $vars['node']->type);
  }
}

يمكنك حذف str_replace() ؛ اختبر الإصدار الأفضل لك.

بعد ذلك ، قم بإنشاء ملف قالب يكون اسم الملف هو page –- [content_type] .tpl.php. (استبدل [content_type] باسم الجهاز لنوع المحتوى.)

انظر http://drupal.org/node/1089656#comment-442679 .

2
Mołot

إذا كنت تريد معرف العقدة أيضًا ، فاستخدم هذا.

function mytheme_process_page(&$variables) {
  if (isset($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
    $variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->nid;
  }
}
1
rcastera

إن وجود قالب مختلف لكل نوع من أنواع المحتوى ليس ممارسة جيدة وفقًا لرفاق Drupal. هذا هو السبب في أنك لا تجد page--work.tpl.php في قائمة ملفات القالب المرشح. يشعرون أن ملفات قالب العقدة فقط يجب أن تكون مختلفة. ولكن إذا كنت تريد الاختراق ، فتابع.

استخدم اسم المسار المستعار لإعداد مسار بناءً على نوع المحتوى. ثم أدخل هذا الرمز

 if (module_exists('path')) {
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $vars['template_files'][] = $template_filename;
      }
    }
  }

في وظيفة phptemplate_preprocess_page(&$vars) في template.php في مجلد السمة.

يمكنك تعديل الكود قليلاً لجعله أكثر كفاءة بالرغم من ذلك.

0
Gokul N K