it-swarm.asia

تجاوز node.tpl.php في وحدة نمطية

لقد أنشأت وحدة يمكن أن تكون قادرة على عرض محتوى نوع محتوى معين. العرض معقد نوعًا ما ولإمكانية تشغيله وتجميع كل شيء معًا ، قمت بإنشاء وحدة نمطية لذلك.

ولكن في النهاية يجب أن يتجاوز فقط node.tpl.php العادي بملف .tpl.php مخصص. عندما أضع الملف في مجلد القالب الخاص بي ، يتم انتقاؤه وتظهر الصفحات على النحو المنشود ، ولكن لا يمكنني تشغيله عندما يكون الملف في مجلد الوحدة النمطية.

قرأت الكثير من الأشياء حول تسجيل ملف .tpl والمعالجة المسبقة ولكن لا شيء يجمع بين القطع التي أحتاجها.

هذا ما لدي حتى الآن

function apps_theme($existing, $type, $theme, $path) {
    $items = array(
        'node--app' => array(
            'template' =>  drupal_get_path('module', 'app') . '/node--app',
            'variables' => array('node' => (object)array())
        )
    );
    return $items;
}

function apps_preprocess_node(&$vars) {
    $variables['theme_hook_suggestions'][] = 'node__app';
}
8
dazz

ليس من الواضح في سؤالك ما إذا كنت تضع القالب الخاص بك في sites/all/custom/modules ، أو في sites/all/custom/modules/the_name_of_mymodule. يجب أن يكون في وقت لاحق.

ومع ذلك ، إذا كنت:

  • ضع القالب الخاص بك في المكان المناسب.
  • زار admin/appearance مسار لفرض تحديث تسجيل السمة.
  • تم محو جميع مخابئ التخزين الخلفية.

... ولكن لا يزال لا يوجد الزهر ، يمكنك دائما تحديد في تنفيذ hook_theme () theme_path المفتاح:

<?php
function apps_theme($existing, $type, $theme, $path) {
    $items = array(
        'node_app' => array(
            // Don't specify the path in the template name.
            // Unless you have your template inside a directory within this module.
            'template' =>  'node--app',
            'variables' => array('node' => (object)array()),
            // If you want to put the tpl in another location, you can use this key.
            'theme path' => drupal_get_path('module', 'another_module'),
        ),
    );
    return $items;
}
3
amateur barista

أعتقد أنني سأقوم بنشر الحل الذي وجدته:

function MYMODULE_theme($existing, $type, $theme, $path) {
  return array(
    'node__NODETYPE' => array(
      'render element' => 'content',
      'base hook' => 'node',
      'template' => 'node--NODETYPE',
      'path' => drupal_get_path('module', 'MYMODULE') . '/templates',
    ),
  );
}
3
Aronanda
2
dazz