Вот имеем тему "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; ?>
Комментарии
<?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']));
?>
Не работает.
А в эту форму можно как-то язык подставить?
<?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);
?>
все прекрасно работает
просто нужно не просто код копировать, а еще и читать его.
В том и проблема.
Логика в шаблонах - зло! В особенности - запросы в БД.
Реализация должна проходить в файле темы (templates.php), в шаблоне уже только учитываться.
Приходится с тем что есть голову ломать.
В конце концов сделал всё в bx-slider и views.