空タグを消すために。  【解決済み】

質問全般・改善要望
返信する
yasu
メンバー
メンバー
記事: 103
登録日時: 2009年9月09日(水) 17:54

空タグを消すために。

投稿記事 by yasu »

こんにちは!
梅雨に入りジメジメした季節ですが、頭の中も湿って前に進みません。。

チャンクでの記述と空タグについてお伺いします。

テンプレート変数に入力された記事を、チャンクでフロントページに表示するように設定していますが、
テンプレート変数に何も入力していない時は、空タグだけフロントページに残って、
CSSで設定している背景画像なども表示されてしまいます。
定期的に期間限定で表示させたいので、このような仕様にしています。

テンプレート変数に何も入力されていない時は、自動的に空タグを出力しないようにしたいので、
Escape MODx Tags 1.0 http://modxcms.com/extras/package/614
を使ってみました。

バージョン1.0.2J ではちゃんと機能したのですが、0.9.6.3 では、空タグは消えたのですが、
チャンクコール?がフロントページに表示されるようになりました。
サーバーの環境は、それぞれ違います。

何か解決策はあるのでしょうか?
また、他の方法があれば、よろしくお願いします。

コード: 全て選択


テンプレート変数
[*hogehoge*] [*majimaji*]

チャンク
<div id="topInfo">
<h2>[*hogehoge*]</a></h2>
<p>[*majimaji*]</p>
</div>

sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: 空タグを消すために。

投稿記事 by sama55 »

yasu さんが書きました:バージョン1.0.2J ではちゃんと機能したのですが、0.9.6.3 では、空タグは消えたのですが、
チャンクコール?がフロントページに表示されるようになりました。
サーバーの環境は、それぞれ違います。
分かる範囲で構いませんので、フォーラムルールに沿って記述していただくようお願いします。
yasu
メンバー
メンバー
記事: 103
登録日時: 2009年9月09日(水) 17:54

Re: 空タグを消すために。

投稿記事 by yasu »

すみません。失礼いたしました。

[modx] バージョン:1.0.2J ←こちらが問題なく表示された方です。
[サーバ]
 ホスト:ハッスルサーバー
 ネットワーク:インターネット
 PHPバージョン:5.2.9
 DB:5.0.88
[クライアント]
 ブラウザ:Firefox3.6.3、googlechrome5.0.375


[modx] バージョン:0.9.6.3 ←こちらが上手くいかない方です。
[サーバ]
 ホスト:シーサイドネット パーソナルプラン
 ネットワーク:インターネット
 Webサーバー:Apache1.3.41
 PHPバージョン:5.2.6
 DB: 4.0.24
[クライアント]
 ブラウザ:Firefox3.6.3、googlechrome5.0.375

分かる範囲で、こんな感じです。
よろしくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 空タグを消すために。

投稿記事 by yama »

フロントページに残る「空タグ」というのは具体的には何でしょうか?
yasu
メンバー
メンバー
記事: 103
登録日時: 2009年9月09日(水) 17:54

Re: 空タグを消すために。

投稿記事 by yasu »

空タグって分かりにくかったですね。
テンプレート変数に何も入力していなければ、ソース内に下記のように何もはいっていないタグだけが
チャンクによって吐き出されてしまうので、これを回避するために Escape MODx Tags 1.0 を
使ってみました。

<div id="topInfo">
<h2></h2>
<p></p>
</div>


チャンクコールを{{topinfo}}にしているのですが、
「Escape MODx Tags 1.0」を導入した0.9.6.3では、ソース内に{{topinfo}}というチャンクコールが残り、
フロントページに表示されてしまいます。
上記のHTMLタグは吐き出されていません。


こんな感じで伝わまりすか?
よろしくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 空タグを消すために。

投稿記事 by yama »

Escape MODx Tagsはどういうふうに使ってますか?
これは{{topinfo}}という文字列を表示するためのプラグインではないのでしょうか?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 空タグを消すために。

投稿記事 by yama »

「テンプレート変数に何も入力されてない場合はチャンクの内容を出力しない」ということであれば、

if( !empty($modx->documentObject['変数名1'][1] ) && !empty($modx->documentObject['変数名2'][1]) )
{
return $modx->getChunk('チャンク名');
}

という感じのスニペットを作るとよいかな?と思います。
yasu
メンバー
メンバー
記事: 103
登録日時: 2009年9月09日(水) 17:54

Re: 空タグを消すために。

投稿記事 by yasu »

返信が遅くなりまして、申し訳ありません。

yama様のご指摘のとおり、Escape MODx Tagsの使い方を間違っていました。
再度、見直したらバージョン:1.0.2Jでも、チャンクが無効になっていませんでした。
とんだ勘違いから、読まれた方を含めてご迷惑おかけして、すみません。

「テンプレート変数に何も入力されてない場合はチャンクの内容を出力しない」ということであれば、

if( !empty($modx->documentObject['変数名1'][1] ) && !empty($modx->documentObject['変数名2'][1]) )
{
return $modx->getChunk('チャンク名');
}
単純に、上記のコードを書いたスニペットを作るだけではダメですよね?
コードに追加しないといけないと考えて試行錯誤していますが、いまだに上手くいきません。
申し訳ないのですが、ヒントをいただけないでしょうか?

「チャンクをスニペットに呼び出して、テンプレートにはスニペットコールを記述する」という方向で良いのでしょうか?


modxとPHPの理解不足でご迷惑をお掛けしています。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 空タグを消すために。

投稿記事 by yama »

たぶん設置は間違えてないと思うので僕の書いたコードにミスがありそうです。あとで自分で試してみます。
これって、[*majimaji*]の中身だけ見て判断すればよいですか?もしかするとタイトルの[*hogehoge*]だけでいいケースもあるのかなと。
yasu
メンバー
メンバー
記事: 103
登録日時: 2009年9月09日(水) 17:54

Re: 空タグを消すために。

投稿記事 by yasu »

ありがとうございます。

今の使い方は、[*majimaji*]と[*hogehoge*]の両方をセットで出力しています。
[*majimaji*]の中身がなければ、チャンクを無効にするという事でも良いかもしれません。

よろしくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 空タグを消すために。

投稿記事 by yama »

こうかな?

「インフォメーションのタイトル」「インフォメーション本文」というテンプレート変数を作って、

コード: 全て選択

<div id="topInfo">
<h2>[*インフォメーションのタイトル*]</a></h2>
<p>[*インフォメーション本文*]</p>
</div>
これを「インフォメーションのテンプレート」というチャンク名で保存して、

コード: 全て選択

<?php
if(!empty($modx->documentObject['インフォメーションのタイトル'][1]))
{
return $modx->getChunk('インフォメーションのテンプレート');
}
?>
スニペット名は「インフォメーションブロック」。

で、トップページ用のテンプレートに [*インフォメーションブロック*] と書く。
いちおうPHP文には違いないですが、見た目でなんとなく意味は分かるのではと。
yasu
メンバー
メンバー
記事: 103
登録日時: 2009年9月09日(水) 17:54

Re: 空タグを消すために。  【解決済み】

投稿記事 by yasu »

ありがとうございした。
無事に、空タグも消えて解決いたしました。

本当に、丁寧にご対応いただき感謝いたします。
今後ともよろしくお願いします。
返信する