外部リンクに target="_blank"

2017年7月28日 at 18:04

ご覧いただきありがとうございます。

http://concrete5-japan.org/community/forums/development/post-4268/
(画像ブロックのカスタマイズ)
を参考にしながらいろいろやってみたのですが、解決できなかったのでご教授いただければ幸いです。

標準の画像スライダーブロックで、リンクを他のページにした場合はそのままで良いのですが
「外部URL」を選択してURLを入力した場合に、吐き出されるHTMLに「 target="_blank"」が自動的に入るようにしたいです。

Designer Contentで・・・って言わないでください。笑
標準の画像スライダーブロックで実現したいです。
よろしくお願いいたします。

# concrete5 Version
Core Version - 8.1.0
Version Installed - 8.1.0
Database Version - 20170123000000

# concrete5 Packages
None

タグ:

Re: 外部リンクに target="_blank"

2017年7月28日 at 18:39
標準のview.phpを元にカスタムテンプレートで出来るかと思います。

画像スライダーの
外部URLが選択されている場合のロジックも極めてシンプルですので、
view.phpを参照してみては如何でしょうか?
 

Re: 外部リンクに target="_blank"

2017年7月28日 at 18:57
多摩勉強会/遠藤様

ありがとうございます。
確かにカスタムテンプレートを使えば target="_blank"付きバージョンを作れるのですが、例えばスライドショーが3枚あるとして、1枚目と2枚目はサイト内リンクなのでそのままでOKなのですが、3枚目だけ外部リンクなので target="_blank"を付けたい・・・という要望なのです。
 

Re: 外部リンクに target="_blank"

2017年7月28日 at 19:53
$rowにどのような値が設定されているか確認されていますか?
 

Re: 外部リンクに target="_blank"

2017年7月28日 at 21:26
はい。
view.phpの話ですよね?
リンクは$rowにlinkURLが設定されていますが、link_typeなど他には何もないので、link_type == 2の場合は…って内容のコードを新たに付け足さないといけないんだろうな?と思うのですが…
controller.phpやform_setup_html.phpも見ながらさわってみたのですが、分からないので質問しました。
 

Re: 外部リンクに target="_blank"

2017年7月28日 at 21:57
内部or外部へのリンクが設定された場合は
linkURLにリンク先が登録されています。
登録されていない場合、string(0)

さらに外部URLの場合は
internalLinkCIDに1バイトの文字列"0"が設定されます。

controller見れば、view側にどんな(ローカル)変数を渡しているか判るので、
その変数にどんな値をセットしているかも、controller内に書かれていますよ〜

画像スライダーのcontrollerは、編集モードで編集した全ての値を$rowにセットしてviewに渡していますので、基本的にはview側のみで全てやりくりできると思いますので、ご覧いただければと思います。
 

Re: 外部リンクに target="_blank"

2017年7月28日 at 22:18
分かりました。
もうちょっと頑張ってみます。汗
 

Re: 外部リンクに target="_blank"

2017年7月29日 at 15:07
オプションの項目を参考にしたり、RSS表示ブロックのリンクを新しいウインドウで開くの部分を参考にして「リンクを新しいウインドウで開く」のチェックを作って…とか自分なりにいろいろやってみたのですが、うまくいかないので諦めます。

全てのブロックで外部URLを入力するところには、RSS表示ブロックのような「リンクを新しいウインドウで開く」のチェックが標準で付いたらいいのにな~。
 

Re: 外部リンクに target="_blank"

2017年7月29日 at 18:39
「外部URL」を選択してURLを入力した場合に、吐き出されるHTMLに「 target="_blank"」が自動的に入る

上記が要件なら、viiew.phpでaタグを出力している箇所を以下のように変更すればいいですよね?

<?php if ($row['linkURL']) {
if ($row['internalLinkCID'] === "0") {
?>
<a href="<?php echo $row['linkURL'] ?>" class="mega-link-overlay" target="_blank"></a>
<?php
} else {
?>
<a href="<?php echo $row['linkURL'] ?>" class="mega-link-overlay"></a>
<?php
}
?>
<?php
}
 

Re: 外部リンクに target="_blank"

2017年7月30日 at 10:47
なるほど~!
こうなるんですね!
希望通りになりました!
勉強になります。

何度も申し訳ありませんでした…
本当にありがとうございました!