в ТДС информационной системы перед показом добавляем:
// добавляем окружающие элементы
// Если мы находимся на странице новости
if ($Informationsystem_Controller_Show->item) {
$oInformationsystem_Item = Core_Entity::factory('Informationsystem_Item', $Informationsystem_Controller_Show->item);
// Текущий элемент
$cur_elem = $Informationsystem_Controller_Show->item;
// Текущая группа
$cur_group = $oInformationsystem_Item->informationsystem_group_id;
// SELECT * FROM informationsystem_Items WHERE informationsystem_Items.id < $cur_elem ORDER BY informationsystem_Items.id DESC LIMIT 1
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
->select('informationsystem_items.path','informationsystem_items.name')
->from('informationsystem_items')
->open()
->where('informationsystem_items.id', '<', $cur_elem)
->setAnd()
->where('informationsystem_items.informationsystem_group_id', '=', $cur_group)
->setAnd()
->where('informationsystem_items.deleted', '=', '0')
->close()
->clearOrderBy()
->orderBy('id', 'DESC')
->limit(1);
$prev = $oCore_QueryBuilder_Select->execute()->asAssoc()->current();
$prev = $prev['path'];
$prev_name = $oCore_QueryBuilder_Select->execute()->asAssoc()->current();
$prev_name = $prev_name['name'];
// SELECT * FROM informationsystem_Items WHERE informationsystem_Items.id > $cur_elem ORDER BY informationsystem_Items.id LIMIT 1
$oCore_QueryBuilder_Select = Core_QueryBuilder::select()
->select('informationsystem_items.path','informationsystem_items.name')
->from('informationsystem_items')
->open()
->where('informationsystem_items.id', '>', $cur_elem)
->setAnd()
->where('informationsystem_items.informationsystem_group_id', '=', $cur_group)
->setAnd()
->where('informationsystem_items.deleted', '=', '0')
->close()
->clearOrderBy()
->orderBy('id')
->limit(1);
$next = $oCore_QueryBuilder_Select->execute()->asAssoc()->current();
$next = $next ['path'];
$next_name = $oCore_QueryBuilder_Select->execute()->asAssoc()->current();
$next_name = $next_name['name'];
$Informationsystem_Controller_Show
->addEntity(Core::factory('Core_Xml_Entity')
->name('neighboring_items')
->addEntity(Core::factory('Core_Xml_Entity')->name('prev_item')->value($prev))
->addEntity(Core::factory('Core_Xml_Entity')->name('prev_item_name')->value($prev_name))
->addEntity(Core::factory('Core_Xml_Entity')->name('next_item')->value($next))
->addEntity(Core::factory('Core_Xml_Entity')->name('next_item_name')->value($next_name))
);
}
// добавляем окружающие элементы
в XSL в нужное место вставляем:
<!-- Получаем ID родительской группы и записываем в переменную $group -->
<xsl:variable name="group" select="/informationsystem/group"/>
<!-- окружающие элементы -->
<xsl:variable name="link_path" select="/informationsystem//informationsystem_group[@id=$group]/url"/>
<xsl:variable name="prev_item" select="/informationsystem/neighboring_items/prev_item"/>
<xsl:variable name="next_item" select="/informationsystem/neighboring_items/next_item"/>
<xsl:variable name="prev_item_name" select="/informationsystem/neighboring_items/prev_item_name"/>
<xsl:variable name="next_item_name" select="/informationsystem/neighboring_items/next_item_name"/>
<div class="navigator">
<xsl:choose>
<xsl:when test="$prev_item != ''">
<a href="{$link_path}{$prev_item}/">< Предыдущий элемент (<xsl:value-of select="$prev_item_name" />)</a>
</xsl:when>
<xsl:otherwise>
<span class="previous">< Предыдущий элемент</span>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$next_item != ''">
<a href="{$link_path}{$next_item}/">(<xsl:value-of select="$next_item_name" />) Следующий элемент ></a>
</xsl:when>
<xsl:otherwise>
<span class="next">Следующий элемент ></span>
</xsl:otherwise>
</xsl:choose>
</div>
<!-- /окружающие элементы -->