■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

ページ内の関数の自動変換対策

umeboshi > ページ内の関数の自動変換対策 @ 2011/12/27 12:25
こんにちは。
現在、試験用のサイトを構築しているため、関数の
<?php $baser->root()?>
をリンクに入れているのですが
一度ページを保存して再度編集しようとするとこの関数が自動的に変換されて出力されてしまうのです。

例:
【入力時】
<a href="<?php $baser->root()?>service">事業紹介</a>


【再編集時】
<a href="%3C%21--%7Bcke_protected%7D%3C%3Fphp%20%24baser-%3Eroot%28%29%3F%3E--%3Eservice">事業紹介</a>

これを阻止できるような、何かいい対策はありませんでしょうか?
ご教示よろしくお願い致します。

■ BaserCMSのバージョン:1.6.15
■ レンタルサーバー名:独自
■ スマートURLの利用:OFF
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:MySQL
■ PHPスキル(自己評価):全くわからない
ryuring > Re: ページ内の関数の自動変換対策 @ 2011/12/27 21:02
こんばんは。

HTMLタグ内に、PHPのタグを記述できないのは、baserCMSで利用しているエディタであるCKEditorの仕様です。
色々と手を考えてみたのですが残念ながらどうにもできないです。

という事で次のように書き換えてください。

<a href="<?php $baser->root()?>service">事業紹介</a>
  ↓
<?php $baser->link('事業紹介', '/service') ?>


また、テーマとして配布する予定がなく、設置階層が決まっているのであれば、シンプルに絶対パスで書くというのも手です。

<a href="/service">事業紹介</a>

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

umeboshi > Re: ページ内の関数の自動変換対策 @ 2012/1/13 12:56
遅くなりましたが、返信ありがとうございます。

提示いただいた方法で試してみたところ、文字化けせずに編集することができました。
これにclass属性をつけることは可能でしょうか?

加えて、画像の場合もrootをとってこれると大変助かります。可能でしょうか?

スマートURLがオフの場合でも、「index.php/」なしでトップページにアクセスできるかと思います。
この状態で絶対パスで指定したリンク先にアクセスしようとすると「Not Found」になってしまいます。
これは画像の場合も同じで、「index.php/」なしでトップページにアクセスすると、画像が表示されない状態です。

スマートURLがオンに出来れば解決する問題だと理解しているのですが。。
今一度ご教示いただければと思います。よろしくお願いします。
arata > Re: ページ内の関数の自動変換対策 @ 2012/1/19 11:29
umeboshiさん、こんにちは!

「これ」というのは baser->link のことですか?
こんな風にして class を持たせる事はできまーす。
<?php $baser->link('事業紹介', '/service', array('class' => 'hoge')) ?>

また何かあったら質問して下さいねヽ(・∀・)ノ

■ 不明点解消できるかも。逆引きガイドもあります baserCMS公式wiki
■ Twitter:@arata

kenjicool > Re: ページ内の関数の自動変換対策 @ 2012/2/3 6:04
別の解決方法をひとつ

element内に以下のファイルを1つ作る
ファイル名:menu_service.ctp
<a href="<?php $baser->root()?>service">事業紹介</a>

んで、ページ内で、以下のように呼び出します。
<?php $baser->element('menu_service'); ?>

こうするとCKEDITORの勝手機能が回避可能です。

■応用として■
たとえば、こんな場合にも使えます。
<?php foreach($params as $param){ ?>
 <a href="<?php echo $param['url']; ?>"><img src="<?php echo $param['img_url']; ?>" /></a><br />
<?php } ?>

↓↓↓こうなってほしいが、勝手機能が邪魔して残念な結果に!
<a href="http://test1.org"><img src="/img/test1.img" /></a><br />
<a href="http://test2.org"><img src="/img/test2.img" /></a><br />
<a href="http://test3.org"><img src="/img/test3.img" /></a><br />


こういう表現の仕方って実は動的サイトを作ってるとすごく出くわすパターンなんですが・・・

以下↓のように書けるのかなと思ったら実はうまくいかないんですね(バグなのかな?)
<?php foreach($params as $param){ ?>
 <?php $baser->link($baser->img($param['img_url']),$param['url']); ?>
<?php } ?>

↓↓↓こんな感じになってしまいます(^^;;
<a href="http://test1.org"></a><img src="/img/test1.img" /><br />
<a href="http://test2.org"></a><img src="/img/test2.img" /><br />
<a href="http://test3.org"></a><img src="/img/test3.img" /><br />
あれれ?


んで、あまり悩みたくないのでエレメントで回避します。
ファイル名:imglink.ctp
<?php foreach($params as $param){ ?>
 <a href="<?php echo $param['url']; ?>"><img src="<?php echo $param['img_url']; ?>" /></a><br />
<?php } ?>

呼び出し側をこんな感じで

<?php $baser->element('imglink',array('params'=>$params)); ?>

これでCKEDITORの勝手機能を回避してやりたいことができます。

■BRの勝手削除回避とか■
ファイル名:br.ctp
<br style="clear:both;" />

ページで
<?php $baser->element('br'); ?>
ryuring > Re: ページ内の関数の自動変換対策 @ 2012/2/6 15:15
こんにちは。

加えて、画像の場合もrootをとってこれると大変助かります。可能でしょうか?


スマートURLオフの場合、画像タグは次のように出力されるのが正しい動作となります。

<img src="/app/webroot/themed/{テーマ名}/img/test.png" />


baserCMSのタグで書く場合次のようになります。

<?php $baser->img('test.png') ?>


Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
52 人のユーザが現在オンラインです。 (52 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 52