Чтобы получить список тегов, разделенных запятыми, я бы рекомендовал использовать командную строку, встроенный построитель запросов AEM, curl
и jq
(https://stedolan.github.io/jq/).
Общий подход:
- Используйте построитель запросов, чтобы создать JSON-представление
/etc/tags
.
- Используйте
curl
, чтобы «загрузить» JSON
- Используйте
jq
для «анализа» JSON и создания CSV
Пример:
Экспорт всех тегов ниже /etc/tags
с их путем, заголовком и описанием будет выглядеть следующим образом:
curl \
--user admin:admin \
--silent \
"http://localhost:4502/bin/querybuilder.json?p.hits=selective&p.limit=-1&p.properties=jcr%3atitle%20jcr%3apath%20jcr%3adescription&path=%2fetc%2ftags&type=cq%3aTag" \
| jq --raw-output '.hits[] | [."jcr:path", ."jcr:title", ."jcr:description"] | @csv' \
> tags.csv
Это отправит запрос GET
на ваш локальный экземпляр AEM (http://localhost:4502
), аутентифицируется как пользователь admin
с паролем admin
(настройки по умолчанию для AEM), использует API построителя запросов (/bin/querybuilder.json
), чтобы получить все ресурсы с типом cq:Tag
ниже /etc/tags
и этих ресурсов. он "выберет" свойства jcr:path
, jcr:title
и jcr:description
.
Полученный JSON выглядит так:
{
"success": true,
"results": 2,
"total": 2,
"more": false,
"offset": 0,
"hits": [
{
"jcr:path": "/etc/tags/experience-fragments",
"jcr:description": "Tag structured used by the Experience Fragments feature",
"jcr:title": "Experience Fragments"
},
{
"jcr:path": "/etc/tags/experience-fragments/variation",
"jcr:description": "A tag used by the experience fragments variations",
"jcr:title": "Variation"
},
]
}
Затем приведенная выше команда передаст полученный JSON из построителя запросов в jq
, который будет использовать «запрос» .hits[] | [."jcr:path", ."jcr:title", ."jcr:description"]
для чтения только массива hits
и каждого элемента в этом массиве только jcr:path
, jcr:title
и jcr:description
. Результирующие массивы затем используются в качестве входных данных для @csv
"форматирования строк" jq
, который создаст правильный вывод с разделителями-запятыми.
JSON сверху будет отформатирован так:
"/etc/tags/experience-fragments","Experience Fragments","Tag structured used by the Experience Fragments feature"
"/etc/tags/experience-fragments/variation","Variation","A tag used by the experience fragments variations"
Последняя часть команды > tags.csv
просто перенаправит вывод в файл с именем tags.csv
вместо командной строки.
В AEM есть отладчик построителя запросов, который вы можете использовать для создания запросов, которые затем можно использовать в вашей команде командной строки:
http://localhost:4502/libs/cq/search/content/querydebug.html
Параметры запроса, которые я использовал выше, будут выглядеть в инструменте следующим образом:
path=/etc/tags
type=cq:Tag
p.hits=selective
p.limit=-1
p.properties=jcr:title jcr:path jcr:description
Вы можете добавлять свойства по своему усмотрению, но чтобы они отображались в CSV, вам также необходимо обновить запрос, используемый jq
.
Если вы добавите переводы в свои теги, они будут храниться в свойстве с именем jcr:title.<language-code>
. Например, если вы переведете свои теги на немецкий язык, у вас будет два свойства: jcr:title
и jcr:title.de
. Если вам нужен перевод, вы должны расширить p.properties
и добавить jcr:title.de
и т. д.
person
Jens
schedule
05.04.2019