Мультиязычность и ...tpl.php (РЕШЕНО)

Главные вкладки

Аватар пользователя Холод Холод 25 сентября 2017 в 8:44

Вот имеем тему "aqua", соответствующий тип материала (portfolio) и модуль i18n .
В типах материала "portfolio" выводятся ссылки (+ ещё поля) на другие ноды того же типа в виде слайдера. На сайте используются три языка.
При переключении языка отображаются ссылки на всех трёх языках. Можно ли как-то добавить фильтрацию по языкам (взаимодействие с i18n) в node--portfolio.tpl.php ?

Вот нужный кусок, который вызывает проблемы:

<?php
$nids 
db_query("SELECT n.nid FROM {node} n WHERE n.status = 1 AND n.type = :type AND n.nid <> :nid ORDER BY RAND() LIMIT 0,12", array(':type' => 'portfolio'':nid' => $node->nid))->fetchCol();

$nodes node_load_multiple($nids);
?>
<?php 
if (!empty($nodes)): ?>

  <div class="row">
    <h2 class="title"><span><?php print t('More Portfolio Items'); ?></span></h2>
    <div class="clear"></div>
    <div class="half_padded_block carousel_section">
      <div class='carousel_arrows_bgr'></div>
      <ul id="portfolio_carousel">

        <?php foreach ($nodes as $node) : ?>
          <?php $field_image field_get_items('node'$node'field_image'); ?>
          <?php if (!empty($field_image)): ?>
            <li class="four columns portfolio_item">
              <a href="<?php print url('node/' $node->nid); ?>" title="<?php print $node->title?>">
                <span class="pic"><?php print theme('image_style', array('style_name' => 'portfolio_item''path' => $field_image[0]['uri'])); ?><div class="img_overlay"></div></span>
                <h5><?php print $node->title?></h5>
              </a>
            </li>    
          <?php endif; ?>
        <?php endforeach; ?>
      </ul>
    </div>
  </div>
<?php endif; ?>

Лучший ответ

Аватар пользователя Холод Холод 16 октября 2017 в 10:27

В конце концов сделал всё в bx-slider и views.

Комментарии

Аватар пользователя dgastudio dgastudio 25 сентября 2017 в 10:05
<?php
   
global $language;
   
$query = new EntityFieldQuery();
   
$query->entityCondition('entity_type''node''=')
         ->
entityCondition('bundle''content_type''=')
         ->
propertyCondition('language'$language->language'=');
   
$nids $query->execute();
   
$nodes =  entity_load('node'array_keys($nids['node']));
?>
Аватар пользователя Холод Холод 25 сентября 2017 в 13:14

Не работает.
А в эту форму можно как-то язык подставить?

<?php
$nids 
db_query("SELECT n.nid FROM {node} n WHERE n.status = 1 AND n.type = :type AND n.nid <> :nid 
ORDER BY RAND() LIMIT 0,12"
, array(':type' => 'portfolio'':nid' => $node->nid))->fetchCol();

$nodes node_load_multiple($nids);
?>
Аватар пользователя bumble bumble 25 сентября 2017 в 13:28

Логика в шаблонах - зло! В особенности - запросы в БД.

Реализация должна проходить в файле темы (templates.php), в шаблоне уже только учитываться.