Поскольку Apostrophe не передает эту информацию отдельным виджетам на уровне шаблона и даже не сообщает виджетам что-либо о чем-то внешнем для них, но информация видна в DOM, вы можете использовать решение с использованием внешнего интерфейса.Поскольку ссылки не имеют значения SEO, добавление их с помощью JavaScript на стороне клиента не повредит.
Вы можете написать play
метод для вашего типа виджета, который делает это.Это должно сделать это:
// in lib/modules/feature-widgets/public/js/always.js
apos.define('feature-widgets', {
extend: 'apostrophe-widgets',
construct: function(self, options) {
self.play = function($widget, data, options) {
var $anchor = $('<a data-my-anchor id="' + apos.utils.generateId() + '"></a>');
$widget.append($anchor);
var $next = $widget.closest('.apos-area-widget-wrapper').next().find('[data-apos-widget]:first');
if (!$next.length) {
return;
}
var $link = $('<a data-next href="#">Next</a>');
$widget.append($link);
$link.on('click', function() {
location.hash = '#' + $next.find('[data-my-anchor]').attr('id');
return false;
})
}
}
})
Обратите внимание, что нам не нужно знать, что такое индексы, мы просто назначаем якоря с идентификаторами для всех виджетов и обновляем хэш URL-адреса по мере необходимости на«следующие» клики.