2015-10-09 3 views
0

Я новичок в docpad. У меня есть что-то вроде фильтра в моем проекте. Существует несколько переключателей для фильтрации списка значков. После того, как пользователь нажмет на значок, необходимо указать информацию о выбранном элементе. Этот элемент находится в коллекции docpad. Как это реализовать? Каждый значок в списке имеет идентификатор, равный идентификатору отвечающего элемента в коллекции docpad. Есть ли способ сохранить идентификатор выбранного элемента в переменной onclick (чтобы использовать его в фильтре getCollection или getFileById в шаблоне eco)?Docpad: получите элемент коллекции динамически

+0

DocPad после поколения не имеет метода getCollection или getFileById, он генерирует статический контент и пытается заставить реактивность на стороне сервера, кажется, не очень хорошая идея. Возможно, сохраните файлы под/files/{{id}} и создайте список json тех файлов, которые вы будете использовать для их сортировки. – Sindis

ответ

1

Я не понимаю, чего вы хотите достичь. Если вы хотите фильтровать элементы на странице с помощью щелчка пользователя, что-то вроде макета/макета pinterest, то путь состоит в том, чтобы выводить все элементы коллекции на страницу, а затем фильтровать их с помощью JavaScript на стороне клиента. Если вы хотите отображать дополнительную информацию, когда пользователь нажимает на элемент, принцип тот же. Вывести все детали коллекции на страницу, но только сделать полную информацию видимой, когда пользователь нажимает на пользователя (снова используя скрипт на стороне клиента).

Теперь, если коллекция слишком велика или ее содержимое слишком длинное для вывода на страницу, и вам необходимо создать контент для пост-назад (т.е. динамически), тогда в метаданных может быть помечена dynamic = true. И вам также необходимо установить clean urls plugin

Edit:

В качестве примера фильтрации коллекции на динамически сгенерированной страницы с помощью системы шаблонов эко.

--- 
layout: simple 
dynamic: true 
--- 

<%collection = ['Aardvark',"Arrows","Armageddon","Buildings","Bats","Bob the builder"] %> 
<%query = @req.query%> 
<%-query.q%> 
<%filter = query.q%> 
<h1><%-(new Date()).toString()%></h1> 
<ul> 
<% for item in collection:%> 
<%if item[0].toLowerCase() == filter or !filter:%> 
    <li><%-item%></li> 
<%end%> 
<%end%> 
</ul> 

Это предполагает, что есть параметр запроса в виде q=a или q=b т.д. т.е. http://127.0.0.1:9778/?q=a. Я также написал дату, чтобы доказать, что страница обновляется по каждому запросу.

Оформить заказ metadata section документации DocPad.

+0

У меня такая же проблема: пользователи должны иметь возможность фильтровать список. Похоже, вы даете намеки, как это решить, но они слишком общие для меня, чтобы понять. Не могли бы вы связаться с документами или примерами при создании динамических страниц? – Alex

+0

Спасибо за ваш ответ. Пожалуйста, взгляните на эту [скрипку] (http://jsfiddle.net/B9Hnu/137/), чтобы увидеть, чего я хочу достичь. Это просто простой пример – mstmustisnt

+0

Теперь у меня есть какое-то решение. Целая коллекция загружается сразу. Но только детали первого пункта остаются видимыми, все остальные скрыты. Но это вызывает длительное время загрузки страницы ( – mstmustisnt