Как создать PUG mixin, который будет автоматически создавать корректный путь к ссылке в зависимости от уровня страницы?

Как можно создать `mixin` под названием `link(l1, l2, path, content)`, который позволит создавать ссылки на разном уровне страницы с разными путями? Например, использовать его так: `+link("", "../", "index.html", "Какое-то название")`, где `l1` - путь относительно `index.html`, `l2` - путь ко `index.html` с другой страницы на том же уровне, `path` - название страницы, а `content` - текст ссылки. Можно ли создать что-то подобное? Например, создать миксин следующим образом: <br/> создать миксин(path, content) <br/> a(href=path)= content
  • 26 августа 2024 г. 16:04
Ответы на вопрос 1
Да, можно создать подобный миксин в Pug. Вот пример реализации:

```pug
mixin link(l1, l2, path, content)
  - var level = l1.split('/').filter(Boolean).length
  - var prefix = level === 0 ? l1 : l2
  a(href=`${prefix}${path}`)= content

+link("", "../", "index.html", "Какое-то название")
```

В данном случае `link(l1, l2, path, content)` принимает 4 параметра: `l1` - путь относительно `index.html`, `l2` - путь ко `index.html` с другой страницы на том же уровне, `path` - название страницы, а `content` - текст ссылки. 

Миксин вычисляет уровень страницы по пути `l1`, формирует соответствующий префикс пути и создает ссылку с учетом уровня страницы. 

Вызов `+link("", "../", "index.html", "Какое-то название")` создаст ссылку с путем `"../index.html"` на страницу "index.html" с текстом "Какое-то название". В зависимости от уровня текущей страницы, путь будет корректно сформирован.
Похожие вопросы