0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NORENのアクションタグでForループを回すときのコツ

Last updated at Posted at 2021-07-28

NORENの記事が少ないので、少しでも役に立てればと思い、記事を執筆しました。

環境

CMS:NOREN6

1. NORENのForタグの特徴

NORENのForタグには使い辛い特徴があります。

例えば、PHPでfor文を回すときは次の様に書くと思います。

<?php
    $max = 3;
    for($i=0; $i<$max; $i++){
        // 処理内容
    }
?>

ですが、NORENの場合はこれが出来ません。
より詳しく言うと、Forタグでの変数展開が出来ません。
なので、上記のコードをNOREN場合はこうなります。

[[--ForStart,from:0,to:3--]]
    [[--- 処理内容 ---]]
[[--ForEnd--]]

まさかのループ回数が決め打ちです。
先述の通り、Forタグ内での変数展開は出来ないので、どうしてもこうなってしまいます。

そして、NORENの場合は配列変数を扱うことができない為、foreachに該当するアクションタグも活用できません。
(※厳密には違いますが…)

2. どうしてもForタグで変数を使いたい!

先程、NORENでは配列変数が扱えないため、foreachに該当するアクションタグも活用出来ないとお伝えしたのですが、力技でどうにかすることが出来ます。

まず、配列変数についておさらいですが、PHPの場合ですと下記の様になりますね。

<?php
   $a = [0, 1, 2, 3];
?>

では、NORENの場合はどうなるのか?
結論から言うと配列変数は存在しましません。

ですが、Forタグのin属性を活用することで、Forタグでのみ利用できる配列変数もどきを作ることが出来ます。

[[--- 配列変数の宣言(配列の値はセミコロンで区切ります) ---]]
[[--DefineStart,name:$array--]]0;1;2;3[[--DefineEnd--]]

[[--ForStart,name:$value,in:[%$array%]--]]
    [[--- 処理内容 ---]][[--Write,name:$value--]]
[[--ForEnd--]]

まず、Defineタグで変数を宣言します。
この際、セミコロンで区切ることで、配列のような変数を作ることが出来ます。
(※Forタグのin属性の区切り文字がセミコロンのため)

inタグは配列の変数展開が出来るので、この様に力技でfor文を回すことが出来ます。
これでとりあえずForループが回せるようになります。

コードは見づらくなりますが、色々と活用出来ると思います。
よろしければ、お使いください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?