0

<article>ファイル内の子要素のみにアクセスできるとし/public/articles.htmlます。

   ...
   <article class="clj-article">
        <h1 class="clj-title"></h1>
        <p class="clj-date"></p>
        <ul>
            <li class="clj-tag"></li>
        </ul>
    </article>
    ...

<article>親要素を知らずに反復するにはどうすればよいですか? (defsnippet内にdeftemplate)

(def articles [{:title "title1"
                :date "date1"
                :tags ["tag1" "other tag1"]}
               {:title "title2"
                :date "date2"
                :tags ["tag2" "other tag2"]}])

(e/defsnippet show-articles "public/articles.html" [:.clj-article] [articles]
  [:.clj-article]
    (e/clone-for [a articles]
      [:.clj-title]
        (e/content (:title a))
      [:.clj-date]
        (e/content (:date a))
      [:.clj-tag]
        (e/clone-for [t (:tags a)]
          [:.clj-tag] (e/content t))))

私のスニペットは必要な出力を提供し、それをテンプレートに挿入したいと思います(articles.htmlの他の部分の他のスニペットと同様に)親要素についてわからないので.clj-article、それをターゲットにしてみました:

(e/deftemplate index "public/articles.html" []
  [:.clj-article]
       (e/append (show-articles articles)))

<article>希望する出力が得られますが、他のパターンと子パターンにラップされています。

<article class="clj-article">
    <h1 class="clj-title"></h1>
    <p class="clj-date"></p>
    <ul class="clj-tags">
        <li class="clj-tag"></li>
    </ul>
    <article class="clj-article">
        <h1 class="clj-title">title1</h1>
        <p class="clj-date">date1</p>
        <ul class="clj-tags">
            <li class="clj-tag">tag1</li>
            <li class="clj-tag">other tag1</li>
        </ul>
    </article>
    <article class="clj-article">  <h1 class="clj-title">title2</h1>
        <p class="clj-date">date2</p>
        <ul class="clj-tags">
            <li class="clj-tag">tag2</li>
            <li class="clj-tag">other tag2</li>
        </ul>
    </article>
</article>

どうすればそれを防ぐことができますか?

ありがとう!

4

1 に答える 1

0

Christophe Grand は、すばらしいチュートリアルで答えを見つけました。 https://github.com/cgrand/enlive/wiki/Table-and-Layout-Tutorial,-Part-3:-Simple-Transformations#whole-tag-transformations

親要素にスニペットを追加または追加する代わりに、次を使用して実際の要素を上書きしますe/substitute

(e/deftemplate index "public/articles.html" []
  [:.clj-article]
       (e/substitute (show-articles articles)))
于 2014-08-08T02:08:36.313 に答える