2014-01-28 2 views
0

У меня есть список ссылок на page.tpl.php, и я хотел бы иметь отображение одной ссылки на узлах, использующих один идентификатор таксономии. Идентификатор термина таксономии составляет 9.Распечатать ссылку на основе таксономического термина или идентификатора в Drupal 7

Ex.

<ul class="top-menu-new upper-menu-new"> 
<li> <a>NEWS</a>&nbsp;&nbsp;|&nbsp;&nbsp; </li> 
<li> <a href="">BLOG</a>&nbsp;&nbsp;|&nbsp;&nbsp; </li> 
<li> <a href="">FAQ</a>&nbsp;&nbsp; | &nbsp;&nbsp;</li> 

<?php if the node is using taxonomy term id 9 
<li><a href=">PRIVATE PAGE</a> </li> 
<?php else: ?> 
<li><a href="">PUBLIC PAGE</a> </li> 
<?php endif; ?> 

Может ли кто-нибудь помочь?

Спасибо!

+0

Drupal имеет различные способы контроля доступа к определенным страницам, я не уверен, что использование таксономии - лучший способ сделать это ... – PatrickS

ответ

0

В вашей теме template.php; Использование template_preprocess_page(), ваш код должен выглядеть этот

function [YOUR_THEME]_preprocess_page(&$vars) 
{ 
    if(isset($vars['node'])) 
    { 
     $node = $vars['node']; 
     $nodeLanguage = "und"; // or use any language 
     if(isset($node->field_YOUR_FIELD_REFERENCE[$nodeLanguage])) 
     { 
      foreach($node->field_YOUR_FIELD[$nodeLanguage] as $key => $val) 
      { 
       if($val['tid'] == "9") 
        $vars['found_my_term'] = true; 
      } 
     } 
    } 
} 

Затем в шаблоне страницы page.tpl.php:

<?php if($found_my_term) { ?> 
<li><a href=">PRIVATE PAGE</a> </li> 
<?php } else { ?> 
<li><a href="">PUBLIC PAGE</a> </li> 
<?php } ?> 

Код о проверке, если текущая страница является node page, а затем проверяет, является ли node has your taxonomy field reference (В этом примере кода я использовал field_YOUR_FIELD_REFERENCE в качестве имени поля) и, наконец, проверяет, имеет ли он значение 9.

И если да, вы сохраняете результат в переменной (я называл found_my_term), поэтому вы можете использовать его в своих шаблонах страниц.

+0

Спасибо, Мухаммад Реда. Ваше понимание верное. Я попробовал ваш код, но по какой-то причине он показывает только «ПУБЛИЧУЮ СТРАНИЦУ». Заметьте, что я исправил отсутствующий «в ссылке для ЧАСТНОЙ СТРАНИЦЫ». Я не уверен в идентификаторе термина, но это скриншот этого термина - http://screencast.com/t/1eZ3i0ew. Возможно, я ошибаюсь? Частный партнер "имеет/content/private/* в URL, а« PUBLIC PAGE »- нет. Еще раз спасибо! – liza

+1

@liza; В приведенном выше коде будет отображаться ссылка на« ЧАСТНАЯ СТРАНИЦА », только если вы используете таксономический термин 9 page 'YOUR_SITE_URL/таксономия/срок/9' –

+0

О, извините, я поместил неправильные инструкции. Мне бы хотелось, чтобы на всех страницах, использующих таксономический термин« Партнерский частный », отображалась ссылка« ЧАСТНАЯ СТРАНИЦА »и отображалась «PUBLIC PAGE», если это не так. Можете ли вы по-прежнему помогать мне в этом? Я не очень хорош в PHP. Спасибо! – liza