画像ボタンにリンクを付けたい

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
hamatatsu
記事: 5
登録日時: 2009年10月15日(木) 19:01
お住まい: 横浜市

画像ボタンにリンクを付けたい

投稿記事 by hamatatsu » 2009年10月22日(木) 19:11

こんばんは。

CMSD初心者なのですが、ご指導頂ければ幸いです。

URLリンクをテキストリンクで表示するのではなく、「画像ボタン」を表示してリンクするようにしたいと考えております。

現在のデザイン定義(一部抜粋)は、以下のとおりです。(テキストリンクの状態)

<tr>
<th class="midashi">リンク</th>
<td class="text_even"><xsl:value-of select="url" disable-output-escaping="yes" /></td>
</tr>


試しに、下記のような方法を試してみましたが、
うまくいきませんでした。。。

<a href="{url}" target="_blank"><img src="images/×××.gif"></a>

ご回答をお待ちしております。
宜しくお願い致します。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2009年10月23日(金) 00:58

現状でエラーなど出ていませんか?
もし出ているなエラー情報と使っているスキーマ、デザイン定義、埋め込みタグなどをそのまま載せていただけると、他の方も対応しやすいと思われます

コード: 全て選択

<a href="{url}" target="_blank"><img src="images/aaaa.gif" /></a>
これでどうですか?
XMLでは閉じタグが必ず必要になると思うのですが

hamatatsu
記事: 5
登録日時: 2009年10月15日(木) 19:01
お住まい: 横浜市

投稿記事 by hamatatsu » 2009年10月23日(金) 11:24

tsu さん

早速のご連絡有り難うございます。 :o

ご指摘頂いたとおり、XMLの閉じタグを入れたら「画像ボタン」は表示出来ました♪

しかし、下記のような症状が出てしまいます。

・管理画面でURLを入力しない(リンク無し)場合
 画像ボタンをクリックすると、なぜかリンク設定をしていないのに、弊社サイトのページが表示されていまします。

http://www.弊社サイト.jp/aaa.php

URLを入力しない場合は、上記のような動きにならないようにしたいです。
またリンク指定が無い場合は、画像ボタンを非表示にすることは出来ますか?


現在、設定しているスキーマは以下のとおりです。

コード: 全て選択

<?xml version="1.0" encoding="UTF-8"?>
<schema name="aaa" caption="商品用スキーマ" >
	<data name="itemname" type="textarea" output="text2" caption="商品名" />
	<data name="manufacturer" type="text" output="text2" caption="メーカー名" />
	<data name="price" type="text" output="text2" caption="メーカー希望価格" />
	<data name="price_02" type="text" output="text2" caption="販売価格" />
	<data name="url" type="textarea" output="text2" caption="リンク" />
	<data name="comment" type="textarea" output="text2" caption="コメント" autolink="True" />
   <data name="photo" type="img" caption="画像" />
</schema>

現在、設定しているデザイン定義は以下のとおりです

コード: 全て選択

<table>
<tr>
<th class="midashi">商品名</th>
<td class="text_odd"><xsl:value-of select="itemname" disable-output-escaping="yes" /></td>
</tr>
<tr>
<th class="midashi">メーカー名</th>
<td class="text_even"><xsl:value-of select="manufacturer" /></td>
</tr>
<tr>
<th class="midashi">メーカー希望価格</th>
<td class="text_odd"><xsl:value-of select="price" /></td>
</tr>
<tr>
<th class="midashi">販売価格(税込み)</th>
<td class="text_price"><xsl:value-of select="price_02" /></td>
</tr>
<tr>
<th class="midashi">リンク</th>
<td class="text_odd"><a href="{url}" target="_blank"><img src="images/abc.gif" /></a></td>
</tr>
<tr>
<th class="midashi">コメント</th>
<td class="text_even"><xsl:value-of select="comment" disable-output-escaping="yes" /></td>
</tr>
</table>
現状で、リンク項目以外の部分は、正しく動作しているのですが。。。

分かりづらい説明で申し訳御座いませんが、ご指導頂ければ幸いです。

宜しくお願い致します。

tsu
パワーユーザー
記事: 208
登録日時: 2006年1月16日(月) 12:00
お住まい: さいたま

投稿記事 by tsu » 2009年10月23日(金) 23:18

なんで御社のurlが自動で出力されているのかはよくわかりませんが、

〜の中身があったら表示〜の中身が無かったら非表示という方法で対応可能です
リファレンスマニュアルの5.5.6を後で読んでみてください

コード: 全て選択

<xsl:if test="not(url='')">
   <a href="{url}" target="_blank"><img src="images/abc.gif" /></a>
</xsl:if>
こんな感じでurlの値が空じゃなければ<a href〜を表示とします
空だったら表示しませんのでこれを入れてあげればいいと思います
空の場合の表示を別にしたいのであればnot()を外して空だったら〜という処理を書けばOKです

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entrylist">

entry一覧(テスト)

<xsl:for-each select="entry">

<table> 
<tr> 
<th class="midashi">商品名</th> 
<td class="text_odd"><xsl:value-of select="itemname" disable-output-escaping="yes" /></td> 
</tr> 
<tr> 
<th class="midashi">メーカー名</th> 
<td class="text_even"><xsl:value-of select="manufacturer" /></td> 
</tr> 
<tr> 
<th class="midashi">メーカー希望価格</th> 
<td class="text_odd"><xsl:value-of select="price" /></td> 
</tr> 
<tr> 
<th class="midashi">販売価格(税込み)</th> 
<td class="text_price"><xsl:value-of select="price_02" /></td> 
</tr> 
<tr> 
<th class="midashi">リンク</th> 
<td class="text_odd">

<xsl:if test="not(url='')"><!--#1 urlの中身が空じゃなければ処理 -->
   <a href="{url}" target="_blank"><img src="images/abc.gif" /></a>
</xsl:if><!--#1 ここまで -->

</td> 
</tr> 
<tr> 
<th class="midashi">コメント</th> 
<td class="text_even"><xsl:value-of select="comment" disable-output-escaping="yes" /></td> 
</tr> 
</table>

</xsl:for-each>

</xsl:template>
</xsl:stylesheet>
追記
閉じタグ忘れてたorz

hamatatsu
記事: 5
登録日時: 2009年10月15日(木) 19:01
お住まい: 横浜市

投稿記事 by hamatatsu » 2009年10月24日(土) 00:02

tsu さん

こんばんは :o

ご丁寧な回答を頂き、誠に有り難うございます。

無事、希望どおりの動作をするようになりました♪



CMSDについて、これからもっと勉強していきたいと思います。

また、ご指導ご鞭撻頂ければ幸いです。

本当に有り難う御座いました。

返信