[РЕШЕНО] Оглавление страницы в шапке вида Views

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

Аватар пользователя darena13 darena13 10 октября 2012 в 1:05

Добрый день!

Хочу сделать простейшую вещь и не могу. Есть вьюс, в который выводится список статей по определённому критерию (использую таксономию). Формируется длинная страница-простыня с однотипным содержимым этих статей: title+body. Нужно в начале этой страницы поместить оглавление с якорными ссылками на заголовки этой страницы. Была идея запихнуть в шапку вьюса другой вьюс, состоящий в свою очередь из заголовков этих статей, но как сделать их якорными, а не обычными ссылками - не понятно. Модуль Table of Contents настроить и запихнуть в шапку тоже не удалось.

Подскажите, пожалуйста, способ, как в начало вьюса поместить оглавление страницы?

Комментарии

Аватар пользователя darena13 darena13 10 октября 2012 в 1:16

(Напрасно я использовала название тега в посте, конечно. Не аккуратно получилось.)
Минут 5 искала, как отредактировать пост. Прикольно.

Аватар пользователя darena13 darena13 10 октября 2012 в 15:02

ХулиGUN wrote:
"darena13" wrote:
Мне ваш комментарий ничего не сообщил, к сожалению.

В настройках поля для вьюхи есть пункт "переопределить вывод" там можно использовать различные токены.

Спасибо, что пояснили.

Для полей типа «Заголовок», «Body» есть блок Rewrite results - по смыслу похоже на "переопределить вывод" - там можно сделать поле «Заголовок» ссылкой, например. Но тогда мне нужно, чтобы в одном вьюсе заголовки сначала шли подряд (оглавление), а потом чередовались бы с body (уже сами статьи). По-моему, так сделать нельзя. Значит, надо в шапку вставлять другой вьюс, в котором будут эти же заголовки ссылками, и каждому заголовку вручную прописать ссылку на id нужного заголовка из основного вьюса. В основном вьюсе тоже надо каждому заголовку указать id, получается. При таком раскладе, когда всё делается вручную, использование модуля Views кажется излишним. Я надеялась, что есть более автоматизированный способ собирать оглавление.

Ещё для полей с текстом есть Formatter - список со способами отображения. Например, можно сделать возможность разворачивать большой текст по нажатию. Тоже не понимаю, как это использовать для оглавления.

Аватар пользователя darena13 darena13 10 октября 2012 в 19:44

ХулиGUN wrote:
"darena13" wrote:
При таком раскладе, когда всё делается вручную

Всмысле? один раз определить например для титла ссылку вида [title] ОДИН РАЗ!!!! и 1 раз соответственно для другого набора... nid то у одинаковых нод будет одинаковый...

Чтобы заголовки дополнительного вьюса ссылались на отдельные ноды со статьями, даже ничего не надо дополнительно определять - просто при создании вьюса галочку одну поставить. Мне же надо, чтобы они ссылались на куски страницы, сформированной основным вьюсом.

Страница выглядеть в идеале должна так:

Заголовок 1
Заголовок 2
Заголовок 3

Заголовок 1а
Текст

Заголовок 2а
Текст

Заголовок 3а
Текст

Заголовки в начале страницы должны быть ссылками на соответствующие им заголовки из второй части страницы. То есть жмём на «Заголовок 1», страница проматывается к «Заголовку 1а». Сейчас жмём на «Заголовок 1» и попадаем на отдельную страницу статьи, потому что ссылка имеет вид «http://bla-bla-bla.ru/node/18».

У меня проблема в том, что я, во-первых, не знаю, как задать уникальный id «Заголовку 1а», «Заголовку 2а» и «Заголовку 3а», а во-вторых, не знаю, как определить «Заголовку n» ссылку на этот id. Я даже не уверена, что так можно сделать и что это вообще делается именно так.

Аватар пользователя ser_house ser_house 10 октября 2012 в 20:08

Добавьте в запрос скрытый nid и перетащите его выше «Заголовка». Затем для «Заголовок1а-Заголовок3а» сделайте rewrite output вроде такого (условно):

<div><a id="teaser-[nid]" href="node/[nid]">[title]</a>[body]</div>

В дополнительном представлении сделайте то же самое, только вместо href="node/[nid]" поставьте teaser-[nid] (как там анкоры ставятся, не помню)

Аватар пользователя darena13 darena13 10 октября 2012 в 20:46

ser_house wrote:
Добавьте в запрос скрытый nid и перетащите его выше «Заголовка». Затем для «Заголовок1а-Заголовок3а» сделайте rewrite output вроде такого (условно):

<div><a id="teaser-[nid]" href="node/[nid]">[title]</a>[body]</div>

В дополнительном представлении сделайте то же самое, только вместо href="node/[nid]" поставьте teaser-[nid] (как там анкоры ставятся, не помню)

Вот! Что вы написали, мне понятно. Наконец-то. Сейчас попробую воплотить. Спасибо!

Аватар пользователя darena13 darena13 10 октября 2012 в 21:20

ser_house wrote:
Добавьте в запрос скрытый nid и перетащите его выше «Заголовка». Затем для «Заголовок1а-Заголовок3а» сделайте rewrite output вроде такого (условно):

<div><a id="teaser-[nid]" href="node/[nid]">[title]</a>[body]</div>

В дополнительном представлении сделайте то же самое, только вместо href="node/[nid]" поставьте teaser-[nid] (как там анкоры ставятся, не помню)

Кое-что получилось, но не до конца.

Сначала я добавила скрытое поле «Содержимое: Nid (Nid)» в основной вьюс, потом сделала Rewrite the output of this field для «Заголовка nа», переопределила на <a name="teaser-[nid]" href="node/[nid]">[title]</a>. И полдела сделано: у каждого заголовка теперь есть name, то есть якорь. Всё ок.

Потом во встроенном вьюсе я сделала то же самое для «Заголовка n», переопределила на <div><a href="#teaser-[nid]">[title]</a></div>. Но ссылки у этих заголовков все одинаковые, а именно: «http://bla-bla-bla.ru/node/18/#teaser-[nid]». То есть [nid] не заменяется на цифру.

///////
Хех, пока писала ответ, поняла, что второму вьюсу тоже нужно поле Nid. Добавила и всё заработало, как ожидалось.
Спасибо огромное за помощь! Вы понятно объясняете, это дорогого стоит. Кажется, я начинаю понимать логику модуля Views.

Теперь меня не устраивает только, что «Заголовок nа» имеет вид ссылки. Хотелось бы, чтобы он оставался просто текстом.

Аватар пользователя darena13 darena13 10 октября 2012 в 21:31

darena13 wrote:

Теперь меня не устраивает только, что «Заголовок nа» имеет вид ссылки. Хотелось бы, чтобы он оставался просто текстом.

Оставила заголовки как есть, добавила после поля «Содержимое: Nid (Nid)» ещё одно скрытое поле Global: Custom text, в котором текст: «<a name="teaser-[nid]"></a>». Теперь совсем красота.