шаблон править надо (если ваш не предусматривает)
любой off-canvas подразумевает два разных (или больше) div - в одном из которых меню, в другом весь остальной контент
1. откройте файл шаблона и сразу после тега <body> поставьте кусочек
<div class="off-canvas-menu" id="off-canvas-menu">
<button class="close-button" id="close-button">Закрыть меню</button>
<nav>
<jdoc:include type="modules" name="off-canvas-menu" style="none" />
</nav>
</div>
2. в файле templateDetails.xml шаблона найдите позиции (<positions>) модулей и вставьте
<position>off-canvas-menu</position>
3. в файле стилей CSS шаблона накидайте нечто вроде:
body {
overflow-x:hidden;
}
.off-canvas-menu {
position: fixed;
z-index: 999999;
width: 300px;
height: 100%;
background: black;
color:white;
-webkit-transform: translate3d(-320px,0,0);
transform: translate3d(-320px,0,0);
-webkit-transition: transform 0.5s;
transition: transform 0.5s;
}
.off-canvas-menu.open {
-webkit-transform: translate3d(0,0,0);
transform: translate3d(0,0,0);
-webkit-transition: transform 0.2s;
transition: transform 0.2s;
}
по своему вкусу делайте анимацию и эффекты
4. далее вставляем кнопку куда вам надо на сайте - триггер для меню
<button class="open-button" id="open-button">Открыть меню</button>
5. далее, нам нужен обработчик триггера для меню, чтобы оно выплывало, ищем файл скриптов шаблона, или же внутри какого либо модуля можно вставить код
а. если на сайте есть jQuery то
$("#open-button, #close-button").click(function() {
$("#off-canvas-menu").toggleClass("open");
});
б, если нет jQuery то "ванилла"
возвращаемся к пункту 4, правим кнопку
<button class="open-button" id="open-button" onclick="openmenu()">Открыть меню</button>
кнопку закрытия (пункт 1) тоже изменим
<button class="close-button" id="close-button" onclick="closemenu()">Закрыть меню</button>
вставляем javascript код
function openmenu(){
document.getElementById('off-canvas-menu').classList.add('open');
}
function closemenu(){
document.getElementById('off-canvas-menu').classList.remove('open');
}
важно чтобы код скрипта был после загрузки jQuery и ниже самого элемента-кнопки
вот вкратце все. есть куча еще способов, и даже без javascript а чисто на css3
возможно есть ошибки в коде, опечатки могли быть, сама логика должна быть понятна