2015-10-06 2 views
1

У меня проблема с drupal _preprocess_block(&$variables) с bean-шаблоном. У меня есть модуль:Как использовать переменные в шаблоне bean

function kcc_related_releases_preprocess_block(&$variables) { 
    // select Bean Blocks and ignore other Blocks 
    if (!empty($variables['block']->module) && isset($variables['elements']['bean'])) { 
    $bean_array  = $variables['elements']['bean']; 
    $child_key_array = element_children($bean_array); 
    if(isset($child_key_array)&&!empty($child_key_array)) { 
     $bean = $bean_array[$child_key_array[0]]; 
     if(!empty($bean['#bundle'])&&$bean['#bundle']=='related_press_releases_block') { 
     $bean_entity = $bean['#entity']; 
     $bean = bean_load($bean_entity->bid); 
     $tax_terms = $bean->field_tax_term; 
     $related_array = array(); 
     foreach ($tax_terms as $tax_term) { 
      $name = $tax_term[0]['taxonomy_term']->name; 
      $tid = $tax_term[0]['tid']; 
      $tax_term_links[] = theme('tax_term_link', 
      array(
       'name' => $name, 
       'tid' => $tid, 
      )); 
      // Get related content. 
      $query = db_select('node', 'n'); 
      $query->join('field_data_field_tax_term', 'fc', 'n.nid = fc.entity_id'); 
      $query->fields('n', array('nid', 'title', 'uid')) 
       ->condition('fc.field_tax_term_tid', $tid) 
       ->condition('n.status', 1) 
       ->range(0,5); 
      $result = $query->execute()->fetchAllAssoc('nid'); 
      if ($result) { 
      $related_array = array_merge($related_array, $result); 
      } 
     } 
     // Tags rendered array. 
     $variables['tax_term_links'] = implode(', ', $tax_term_links); 
     // Related rendered array. 
     foreach ($related_array as $key => $related) { 
      $related_links_array[$key]['title'] = l($related->title, url('node/' . $related->nid)); 
     } 
     if (isset($related_links_array) && !empty($related_links_array)) { 
      $variables['related_terms'] = $related_links_array; 
     } 
     else { 
      $variables['related_terms'] = NULL; 
     } 
     } 
    } 
    } 

} 

И шаблон:

if (!empty($related_terms)): ?> 
    <h4 class="related-title"><?php print render($title); ?></h4> 
    <div class="related"> 
    <?php foreach($related_terms as $rel_item): ?> 
     <div class="item"> 
     <div class="title"><?php print render($rel_item['title']); ?></div> 
     </div> 
    <?php endforeach; ?> 
    </div> 
<?php endif; ?> 

, но это не работает, в шаблоне, когда я использую print_r($variables); я могу найти $ related_terms пожалуйста, помогите мне

+0

Я знаю, что это не очень чисто, но вы можете напрямую переместить свой код в файл шаблона. И почему вы не используете модуль views? Это намного проще, чем писать ваши собственные запросы ... – MilanG

+1

После пары проверок и поисков я нашел эту функцию hook HOOK_process_entity (& $ variables) {', и это решило мою проблему после того, как в моих переменных шаблона добавлено по-разному. Надеюсь, это поможет кому-то –

+0

Прохладный. Теперь вы должны ответить на свой вопрос и пометить как разрешенный. – MilanG

ответ

1

После пары проверок и Я нашел эту функцию hook HOOK_process_entity(&$variables) {, и это решило мою проблему после того, как в мои шаблонные переменные добавлены по-разному. Надеюсь, это поможет кому-то.

Смежные вопросы