Свои шаблоны в препроцессорах

Average: 5 (1 vote)
function sm_wall_preprocess_page(&$vars){

    if(!empty($vars['node'])) {
        $vars['theme_hook_suggestions'][] = 'page__node__' . $vars['node']->type;
        $vars['theme_hook_suggestions'][] = 'page__node__' . $vars['node']->type . '__' . $vars['node']->nid;
    }
}

/**
 * @param $vars
 */
function sm_wall_preprocess_node(&$vars) {
    if($vars['node']) {
        $vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->type;
        $vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->type . '__' . $vars['node']->nid;
    }
}

/**
 * Theme preprocess function for theme_field() and field.tpl.php.
 *
 * @see theme_field()
 * @see field.tpl.php
 * added custom template
 */
function sm_wall_preprocess_field(&$variables, $hook) {
    $element = $variables['element'];
    $template = 'field__'  .  $element['#field_name'];
    $variables['theme_hook_suggestions'][] = $template;

    $template = 'field__'  . $element['#view_mode'] . '__' . $element['#entity_type'];
    $variables['theme_hook_suggestions'][]= $template;

    $template = 'field__'  .  $element['#field_name']  . '__' . $element['#entity_type'] . '__' . $element['#view_mode'];
    $variables['theme_hook_suggestions'][] = $template;
    if(isset($element['#object']) && isset($element['#object']->type)){
        $template = 'field__'  .  $element['#field_name']  . '__' . $element['#entity_type'] . '__' . $element['#object']->type . '__' . $element['#view_mode'];
        $variables['theme_hook_suggestions'][] = $template;
    }
//    dpm($variables['theme_hook_suggestions']);
}

код пишем в template.php 

sm_wall - это название темы.

Этим кодом добавляем шаблоны в тему.

Чтобы включить режим дебага для темы: variable_set('theme_debug', TRUE);

Пи включении режима дебага в html верстку добавляется название шаблонов которые сейчас используются.

Поделитесь статьей