Рассматривая это, я думаю, что это имеет мало общего с Sightly или даже с AEM. Кроме того, я не уверен, какой контент вы хотите переключить.
Ниже это рабочий HTML-фрагмент для переключая содержания (независимо от AEM):
<style>
.toggle-content {
display: block;
}
.toggle-content-hide,
.toggle-content-hidden .toggle-content-show {
display: inline;
}
.toggle-content-show,
.toggle-content-hidden .toggle-content-hide {
display: none;
}
</style>
<a href="#" class="toggle-content">
<span class="toggle-content-show">Show</span>
<span class="toggle-content-hide">Hide</span>
</a>
<div>Sample content 1</div>
<a href="#" class="toggle-content">
<span class="toggle-content-show">Show</span>
<span class="toggle-content-hide">Hide</span>
</a>
<div>Sample content 2</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
jQuery(function($) {
$('.toggle-content').click(function() {
$(this).toggleClass('toggle-content-hidden').next().toggle('slow');
return false;
})
});
</script>
Чтобы реализовать это в AEM, вы должны поместить встроенный CSS в CSS файл библиотеки клиента, и встроенный JS в JS-файл клиентской библиотеки. Обычно я рекомендую поместить их в одну и ту же клиентскую библиотеку внутри самого компонента, так что все, что относится к этому компоненту, находится в одной и той же папке. Но при этом важно иметь в виду, что на сервере публикации все запросы/приложения запрещены диспетчером по соображениям безопасности, поэтому все клиентские библиотеки, расположенные в/приложениях, должны быть объединены и минимизированы как один файл, который обычно расположенный где-то под/etc. Для этого вы можете использовать следующий репозиторий структуры узла:
/apps/
mysite/
components/
mycomponent/
mycomponent.html
красивый шаблон
clientlib/
jcr:primaryType
= cq:ClientLibraryFolder
categories
= [mysite.mycomponent]
css.txt
содержит только ссылку на style.css
style.css
содержит фрагмент кода в стиле
js.txt
содержит только ссылку на скрипт.CSS
script.js
содержит сценарий фрагмент
/etc/
designs/
mysite/
clientlib/
jcr:primaryType
= cq:ClientLibraryFolder
categories
= [mysite.publish]
embed
= [mysite.mycomponent, ...]
dependencies
= [mysite.jquery]
Свойство/etc clientlib сделает его объединенным и объединяет в пределах того же файла все клиентские листы, которые перечислены там. В отличие от клиентских библиотек, перечисленных под свойством dependencies
, которые не будут объединены и будут обслуживаться как отдельный файл. Вы можете играть с этими свойствами, чтобы построить структуру, необходимую для оптимизации вашего сайта. Существуют также настройки для автоматического минимизации или отсутствия этих файлов.
На странице вы затем включаете главный клиентский сервер mysite.publish
, расположенный под номером /etc
. Так что ваша страница <head>
элемент будет содержать что-то вроде следующего шаблона красивого:
<head data-sly-use.clientLib="/libs/granite/sightly/templates/clientlib.html">
<sly data-sly-call="${clientLib.all @ categories='sd-singtel.accordion_2'}" data-sly-unwrap/>
</head>
Если вы используете AEM 6.1, вы можете даже отказаться от data-sly-unwrap
, потому что <sly>
тега имеет тот же эффект.
После этого красивый шаблона компонента, расположенного под путем, как /apps/mysite/components/mycomponent/mycomponent.html
будет выглядеть следующим образом:
<div data-sly-test="${wcmmode.edit}">mycomponent name</div>
<a href="#" class="toggle-content">
<span class="toggle-content-show">Show</span>
<span class="toggle-content-hide">Hide</span>
</a>
<div>${properties.myContentProperty}</div>
Благодаря Gabriel ..... сделали требуемое решение ссылки года и он работал ... , – Shine