Как создать макрос, используя движок SimpleTemplate, который будет доступен в нескольких шаблонах? - PullRequest
3 голосов
/ 28 июля 2011

Мне нужно отформатировать ссылку в определенных местах моего приложения Бутылка.Ранее все ссылки были в одном файле SimpleTemplate, и я определил макрос, который выглядит следующим образом:

%def mylink(obj):
    <a class="mylink" href="{{ get_url('view', id=obj.id) }}">{{ obj.title }}</a>
%end

Везде, где мне нужно было отформатировать ссылку на obj, я использовал:

%mylink(some_obj)

Теперь мне нужно использовать форматирование таких ссылок в нескольких шаблонах.Я переместил определение шаблона в отдельный файл с именем macros.html, затем попытался %include вставить этот файл в шаблоны, где мне нужен макрос:

<!-- macros.html -->
%def mylink(obj):
    <a class="mylink" href="{{ get_url('view', id=obj.id) }}">{{ obj.title }}</a>
%end

<!-- somepage.html -->
%include macros
...
%mylink(some_obj)
...

Однако, Bottle не может разрешить имя mylinkв таком раскладе.

Я понимаю, что могу сделать это:

<!-- mylink.html -->
<a class="mylink" href="{{ get_url('view', id=obj.id) }}">{{ obj.title }}</a>

<!-- somepage.html -->
...
%include mylink obj=some_obj
...

Однако я не хочу этого делать, так как чувствую, что это не очень быстро (у меня многоссылки для форматирования на любой странице).

Не хватает ли других опций?

1 Ответ

0 голосов
/ 06 сентября 2011

Оператор %include немедленно отображает включенный шаблон.

Возможно, вы можете решить эту проблему с помощью команды %rebase, поместив ваш макрос в базовый шаблон.

...