ページ 11

特定の項目だけタグを無視して表示させる方法について

Posted: 2007年4月04日(水) 16:52
by bcacsato
マニュアルの6.3.7でタグを除去する方法について解説されていますが、
この方法ではページ全体がタグが除去されてしまいますよね?

そうではなく、ページ内の特定の項目だけタグを無視することは可能でしょうか?

例えば、詳細画面では<br>タグ通りに改行して表示するけど、
一覧画面では<br>を無視してタイトルを1行で表示する、といった場合です。

よろしくお願いいたします。

Posted: 2007年4月04日(水) 18:00
by tsu
substring-after/before関数で<と>をみつけ<br>飛ばして表示させる。
なんて簡単にできればいいんですけどね。。。

Posted: 2007年4月04日(水) 18:07
by bcacsato
tsuさん、ありがとうございます!

むむむ…substring-after/before関数??なにやら難しそうですね。

でも、多少面倒でも、実現できるなら試してみたいです。

webmaster様からのご回答もお待ちしておりますm(_ _)m

Posted: 2007年4月04日(水) 21:47
by tsu
あれからちょっと出掛けてまして、車の中で単純な解決方法が思い浮かびました。

xsltの関数にはタグを除去したりなんてものがないのでsubstring-after/beforeあたりでどうにかと考えたのですが面倒でした。
とりあえず二つ目の<br />の手前まではこれで取り出せます。

コード: 全て選択

<xsl:value-of select="substring-before(title, '<')" disable-output-escaping="yes" />
<xsl:value-of select="substring-before(substring-after(title, '>'), '<')" disable-output-escaping="yes" />
まったくもって使えません。

なので無理矢理CSSでやってみました。

コード: 全て選択

[CSS]
<style type="text/css" media="screen"><!--
#br_none br { display: none; }
--></style>

[デザイン定義]
<div id="br_none">
  <xsl:for-each select="entry">
    <xsl:value-of select="title" disable-output-escaping="yes" />
  </xsl:for-each>
</div>
セレクタをわかりやすくしておけばメンテナンスもしやすいでしょうし。
こんな感じになります。
http://cmsd.pdy.jp/sub_ba.php

もっといいやり方があるかもしれませんので参考までに。

ありがとうございます!

Posted: 2007年4月04日(水) 22:03
by bcacsato
tsuさま

なるほど、CSSで<br>を非表示にするとは思いつきませんでした:idea:
さっそく活用させていただきます。
本当にありがとうございました。

Re: ありがとうございます!

Posted: 2007年4月06日(金) 14:31
by webmaster
 bsacsatoさん、いつもご質問ありがとうございます。
 また、tsuさん、私が不在の間、大変的確な回答を頂いており、ありがとう
ございます。m(__)m

 tsuさんのご回答の通り、現在では実現が大変困難になっております。
 css活用がやはり、ベストな解決策となるかと思います。

 cssだけで問題が解決できなかった場合、再度ご連絡頂ければ幸いです。