Как проверить, имеет ли сообщение Blogger указанную c метку, когда метка скрыта? - PullRequest
0 голосов
/ 09 марта 2020

Все мои сообщения Blogger имеют Ярлыки , но я решил не показывать их на моем сайте Blogger. На моей панели инструментов Blogger -> Сообщения я все еще могу видеть все свои ярлыки для каждого сообщения и фильтровать их по ярлыкам, что я и хочу. Но когда я пытаюсь проверить, имеет ли текущее сообщение указанную метку c (которая у него есть), следующий код не работает (прямо перед </body>):

<b:section id="testSection" name="Test Section">

        <b:if cond='data:posts any (p => p.labels any (l => l.name == "Label1"))'>
          <script type="text/javascript">
              console.log("Label1");
          </script>
          <link href='post-style-for-label1.css' rel='stylesheet' type='text/css'/>
        </b:if>

    </b:section>

Я прочитал ответ здесь о том, что мы не можем проверить data:post.labels вне виджета блога , но когда я помещаю его в виджет, он говорит, что виджет не может содержать <b:if> - это Вот почему я поместил его под <b:section>. Но, в конце концов, я все еще не могу заставить свой код обнаруживать Label1 . Я попробовал следующий код, но он тоже не работает:

<b:if cond='data:post.labels any (label => label.name == "Label1")'>
    <script type="text/javascript">
        console.log("Label1");
    </script>
    <link href='post-style-for-label1.css' rel='stylesheet' type='text/css'/>
</b:if>

Если я правильно помню, я удалил код, который отображает ярлыки, но необходимо ли отображать ярлыки на сайте, чтобы код для работы? Я сомневаюсь, потому что у Blogger есть все мои ярлыки для каждого поста. Как я могу заставить мой код работать? Заранее спасибо.

1 Ответ

1 голос
/ 09 марта 2020

Тема Blogger предоставляет несколько типов виджетов, таких как заголовок, блог, профиль ... (26 типов), и каждый тип имеет свои теги данных. В вашем примере data:post.labels принадлежит типу виджета Блог , поэтому его нельзя использовать вне тегов виджета.

Кроме того, виджет может содержать только теги b:includeable (аналогично функциям в Javascript)

Если в вашей теме уже есть виджет блога, поместите код в тег b:includable с помощью id='main', в противном случае создайте такой, как показано ниже:

<b:widget id='Blog1' type='Blog'>

    <b:includable id='main'>

      <b:loop values='data:posts' var='post'>

        <b:if cond='data:post.labels any (label => label.name == "Label1")'>
          <script type="text/javascript">
             console.log("Label1");
          </script>
        </b:if>

      </b:loop>

    </b:includable>

</b:widget>
...