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

Re: グローバルメニューにページ内リンクを実装するには

funi > Re: グローバルメニューにページ内リンクを実装するには @ 2018/8/25 18:25
いつもお世話になっております。

配列の最終値のみを書き換える方法を思いついたので実装してみました

if ($content['Content']['type'] == 'ContentLink') {
$ContentLink = ClassRegistry::init('ContentLink');
$mylink = $ContentLink->field('url',
[
'ContentLink.id' => $content['Content']['entity_id'],
]
);
/* ここから */
$pageurl = explode("/", $content['Content']['url'] );
$myname = end($pageurl);
$liClass .= ' CLink';
$content['Content']['url']  = str_replace($myname, $mylink, $content['Content']['url']);
}


$mylink でDB上にあるリンク先を
$pageurl でリンク元(階層フォルダを含むリンク先を指定したページ)を
$myname でリンク元から階層フォルダを除いたものを指定し
str_replace でリンク元の最後の/から後の部分を$myname → $mylink に書き換え

と言う処理を行なってみました。
どこかに問題があったり、もっとスマートな方法があるかとは思いますが、
階層を移動しても問題なく動作しているようですので、取り急ぎご報告させて頂きました。

ご意見をお聞かせ頂ければ幸いです。

宜しくお願い致します。

<追記>
本来のContentLink 機能が必要な場合(外部に関連ページがあるなど)には、
例えば 上記の $myname が change を含む文字列だったら書き換え処理を行なうとかにしても良いかと思います。

■ BaserCMS Ver:3.0.6.1 〜 4.1.0.1
■ サーバー名:lolipop
■ スマートURLの利用:ON
■ 設置フォルダ:サブフォルダ、サブドメイン等
■ 利用しているDB:SQLite

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


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

検索

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

フォーラムガイド


関連リンク

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

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