Макеты Grails - тип вложенной задачи макета, условное содержимое - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть следующий (упрощенный) макет:

<header>
  ... more stuff here
  <nav id="nav">
    <div class="content_wrapper">
      <ul id="menu">
        <li>dashboard</li>
      </ul>
    </div>
  </nav>
</header>
<div id="main_content">
  <div class="content_wrapper">
    <g:layoutBody/>
  </div>
</div>

Моя проблема в том, что навигация "меню" зависит от того, что отображается в layoutBody.Мало того, что текст «панель инструментов» изменится на «логин», «поддержка» и т. Д., Но на некоторых страницах есть кнопки, ссылки и т. Д. Есть ли способ в Grails, без изменения макета страницы, динамически отображать этоNAV элемент на основе layoutBody?Я прочитал документы, в том числе раздел блоков контента, но они не решают проблему, потому что они все еще предопределены в основном макете.

1 Ответ

1 голос
/ 01 марта 2011

У меня та же проблема с моим приложением Grails. Вот способ, которым я решил это. В вашем макете:

<nav id="nav">
    <div class="content_wrapper">
      <ul id="menu">
        //Here you can insert whatever you have in all your pages
        //Then below you can insert custom content depending on main body
        <li><g:pageProperty name="page.nav-content"/></li>
      </ul>
    </div>
</nav>

Затем в ваших основных представлениях (например, home.gsp), требующих дополнительных модулей (например, модуль входа в систему), вы можете включить что-то вроде:

<content tag="nav-content">
   <g:include controller="nav" action="login"/>
</content>
...