Мобильное меню — различия между версиями
Whoa (обсуждение | вклад) |
Whoa (обсуждение | вклад) |
||
Строка 22: | Строка 22: | ||
</xsl:stylesheet> | </xsl:stylesheet> | ||
</source> | </source> | ||
− | Далее в файле стилей нашего сайта пропишем стиль меню | + | Далее в файле стилей нашего сайта пропишем стиль меню: |
<source lang="css"> | <source lang="css"> | ||
/* mobile menu */ | /* mobile menu */ | ||
Строка 103: | Строка 103: | ||
</source> | </source> | ||
<br> | <br> | ||
− | После чего мы можем воспользоваться вызовом нашего меню в том месте шаблона где нам требуется<br> | + | После чего мы можем воспользоваться вызовом нашего меню в том месте шаблона, где нам требуется:<br> |
<source lang="php"> | <source lang="php"> | ||
<xsl:call-template name="mmenu1" /> | <xsl:call-template name="mmenu1" /> | ||
</source><br> | </source><br> | ||
− | ''Заметка. Вызов меню можно заключить в div для использования дополнительных действий, к примеру абсолютного или фиксированного позиционирования.''<br> | + | ''Заметка. Вызов меню можно заключить в div для использования дополнительных действий, к примеру, абсолютного или фиксированного позиционирования.''<br> |
− | '''Важно!''' Не забываем подключить созданный файл в наш шаблон | + | '''Важно!''' Не забываем подключить созданный файл в наш шаблон: |
<source lang="php"> | <source lang="php"> | ||
<xsl:include href="layouts/mobmenu.xsl" /> | <xsl:include href="layouts/mobmenu.xsl" /> | ||
</source><br> | </source><br> | ||
− | '''ВАЖНО!''' Данная сборка делалась на основе demodizzy (стандартного демо шаблона), если у вас отсутствует этот шаблон, было проведено обновление системы с версии Lite или у вас собственный шаблон то убедитесь, что содержимое файла \templates\ваш шаблон\xslt\modules\menu\common.xsl соответствует указанному<br> | + | '''ВАЖНО!''' Данная сборка делалась на основе demodizzy (стандартного демо-шаблона), если у вас отсутствует этот шаблон, было проведено обновление системы с версии Lite или у вас собственный шаблон то убедитесь, что содержимое файла \templates\ваш шаблон\xslt\modules\menu\common.xsl соответствует указанному:<br> |
<source lang="php"> | <source lang="php"> | ||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
Строка 140: | Строка 140: | ||
</xsl:stylesheet> | </xsl:stylesheet> | ||
</source><br> | </source><br> | ||
− | И что данный файл подключен в основном шаблоне<br> | + | И что данный файл подключен в основном шаблоне:<br> |
<source lang="php"> | <source lang="php"> | ||
<xsl:include href="modules/menu/common.xsl" /> | <xsl:include href="modules/menu/common.xsl" /> | ||
</source> <br> | </source> <br> | ||
[[category:Верстка в XSLT]] | [[category:Верстка в XSLT]] |
Версия 14:20, 7 мая 2018
Мы будем делать мобильное меню на основе menu draw.
Для этого нам понадобится следующее – небольшой файл с кодом вызова меню, стиль меню.
Важно! Меню будет вызываться из отдельного файла по причине возможности существования 2х и более шаблонов для страниц сайта.
Порядок работы.
Создадим меню в модуле Меню (для примера идентификатор меню выбран как verxm).
Напишем отдельный xsl файл для обработки меню. Назовем его mobmenu.xsl (файл создается в папке \templates\имя шаблона\xslt\layouts).
Содержимое файла будет следующим:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="mmenu1">
<nav>
<input type="checkbox" id="btn-menu" />
<label for="btn-menu"> Меню</label>
<ul class="list-menu">
<xsl:apply-templates select="document('udata://menu/draw/verxm')/udata" mode="info-pages-head" />
</ul>
</nav>
</xsl:template>
</xsl:stylesheet>
Далее в файле стилей нашего сайта пропишем стиль меню:
/* mobile menu */
.list-menu{
display: flex;
list-style: none;
}
.list-menu > li > a{
color: #000;
display: block;
padding: 5px 15px;
}
.list-menu > li > a:hover{
background: #fff;
}
#btn-menu{
display: none;
}
#btn-menu + label{
display: none;
position: relative;
color: #000;
height: 20px;
z-index: 1;
cursor: pointer;
}
#btn-menu + label:before{
content: '\f0c9';
display: inline-block;
font-family:'FontAwesome';
font-size: 22px;
}
#btn-menu:checked + label:before{
content: '\f00d';
color: #f00;
}
@media screen and (max-width: 800px) {
input.button.search {left: 5px;
position: absolute;
margin-top: -27px;}
#btn-menu + label{
display: inline-block;
font-weight: 600;
font-size: 21px;
}
#btn-menu + label + .list-menu{
display: none;
}
#btn-menu:checked + label + .list-menu{
display: block;
margin-top: 20px;
}
nav{
background: #fcd62d;
padding: 15px;
display:block!important;
position: relative;
top: 0;
width: 100%;
z-index: 99;
}
ul.list-menu li a {
padding: 10 20;
color: black;
text-decoration: none;
font-weight: 600;
width: 100%;
display: block;
text-transform: uppercase;
}
ul.list-menu li a:hover {color: white}
ul.list-menu li:hover {background: #0f55aa;}
}
nav {display:none}
После чего мы можем воспользоваться вызовом нашего меню в том месте шаблона, где нам требуется:
<xsl:call-template name="mmenu1" />
Заметка. Вызов меню можно заключить в div для использования дополнительных действий, к примеру, абсолютного или фиксированного позиционирования.
Важно! Не забываем подключить созданный файл в наш шаблон:
<xsl:include href="layouts/mobmenu.xsl" />
ВАЖНО! Данная сборка делалась на основе demodizzy (стандартного демо-шаблона), если у вас отсутствует этот шаблон, было проведено обновление системы с версии Lite или у вас собственный шаблон то убедитесь, что содержимое файла \templates\ваш шаблон\xslt\modules\menu\common.xsl соответствует указанному:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://mobile/i18n/constants.dtd:file">
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:umi="http://www.umi-cms.ru/TR/umi">
<!-- Header menu -->
<xsl:template match="udata[@module = 'menu']" mode="info-pages-head">
<ul>
<xsl:apply-templates select="item" mode="info-pages-head" />
</ul>
</xsl:template>
<xsl:template match="udata[@module = 'menu']/item" mode="info-pages-head">
<li>
<a href="{@link}">
<xsl:value-of select="node()" />
</a>
</li>
</xsl:template>
</xsl:stylesheet>
И что данный файл подключен в основном шаблоне:
<xsl:include href="modules/menu/common.xsl" />