1

次のコードを含む sidebar というスニペットがあります。

<div id="ebook_offer">
{exp:channel:entries channel="test"}
<h3>Ebook</h3>
{/exp:channel:entries}
</div>

<div id="about_blog">
{exp:channel:entries channel="blog_sidebar"}
        <h3>About Obsia's Blog</h3>
{/exp:channel:entries}
</div>

<div id="testimonials">
</div>

<div id="demo" dynamic="no" limit="1">
</div>

<div id="recent posts">
{exp:channel:entries channel="blog" limit=5 offset=1}
        <h3>Recent Posts</h3>
                <li>{title}</li>
{/exp:channel:entries}
</div>

<div "connect">
</div>

<div = "subscribe">
{exp:mailinglist:form list="blog_list" form_id="blog_subscribe"}
        <h3>Subscribe</h3>
        <p>First Name <input type="text" name="first_name"="{first_name}"></p>
        <p>Email <input type="text" name="email" value="{email}"></p>
        <p><input type="submit" value="submit"></p>
{/exp:mailinglist:form}
</div>

このスニペットはブログ テンプレート グループの index.php テンプレート内で呼び出され、コードは次のようになります。

<div id="blog_display">
{exp:channel:entries channel="blog" limit="5"}
  <h2>{title}</h2>
  {author}
  {if blog_images} <img src="{blog_images}" alt="blog image {title}" class="some_class" />
  {/if}
  {teaser}
  <p>comments {comment_total} </p>
{/exp:channel:entries} 
</div>

{sidebar}

また、ebook_offer、about_blog、リキャスト投稿、証言、購読などのフィールドを備えたサイドバーと呼ばれるチャネルもあります。購読フォームを表示させることができます。Web ページで最近の投稿は表示されますが、about_blog フィールドに入力されたコンテンツが表示されません。

ブログ チャネルが機能する理由は誰でも知っていますが、私のサイドバー チャネルは機能しません。

4

2 に答える 2

3

すべてのコードが目の前にない限り、問題が正確に何であるかはよくわかりませんが、いくつかのことが考えられます. まず、ブログのホームページ テンプレートにタグがあり、そのタグ{exp:channel:entries}にスニペットを含めると、問題が発生します。別の内部にネストすることはできません。{exp:channel:entries}

また、チャネル エントリ タグはデフォルトで動的に設定されます。データベースからどのエントリを取得するかについてのヒントを得るために URL を調べます。dynamic="no"パラメータをサイドバーのエントリ タグに追加してみてください。詳細については、こちらを参照してください。これにより、タグがページの URL を無視するようになります。これが目的です。limit="1"サイドバー エントリが 1 つだけ表示されるようにするために、そのタグにもパラメータを追加することもできます。

どちらの回答も役に立たない場合はお知らせください。

于 2012-04-27T00:17:35.567 に答える
1

最良の戦略は、スニペットの内容を別のテンプレート ファイルに移動して、これを理解しようとすることです。サイドバーのスニペット コードで、私にはおかしいと思われる点がいくつかあることに気付きました。

<div id="ebook_offer">
{exp:channel:entries channel="test"}
<h3>Ebook</h3>
{/exp:channel:entries}
</div>

<div id="about_blog">
{exp:channel:entries channel="blog_sidebar"}
        <h3>About Obsia's Blog</h3>
{/exp:channel:entries}
</div>

これは、{exp:channel:entries} タグを使用する正しい方法ではないようです。「ebook_offer」はチャネル フィールドであるとおっしゃいました。しかし、ここでは HTML div の静的 ID として使用しています。「ebook_offer」がフィールドの場合、次のようになります。

<h3>Ebook</h3>
{exp:channel:entries channel="test"}
    {ebook_offer}
{/exp:channel:entries}

「about_blog」と同じ

<h3>About Obsia's Blog</h3>
{exp:channel:entries channel="blog_sidebar"}
    {about_blog}
{/exp:channel:entries}

また、チャネルの名前は「sidebar」でしたが、{exp:channel:entries} タグで「blog_sidebar」を使用しているとおっしゃっていました。あなたのチャンネルのショートコードは「サイドバー」と「ブログサイドバー」のどちらですか?

最後に、これは私には少しオフです

<div id="demo" dynamic="no" limit="1">
</div>

"dynamic" と "limit" は ExpressionEngine {exp:channel:entries} タグでのみ機能し、通常の HTML 要素 (DIV など) では機能しません。Bitmanic と Peter の提案をもう一度使用してみますが、次のように {exp:channel:entries} に適用します。

{exp:channel:entries channel="blog_sidebar" dynamic="off"}
...
{/exp:channel:entries}

ExpressionEngine を初めて使用する場合は、Ryan Ireland によるビデオとチュートリアルを強くお勧めしますhttp://eeinsider.com/videos

于 2012-04-29T19:49:54.663 に答える