• TALINKS を 大文字、小文字、区別して出力したい#

  • p38siser Reply #1, 1 year, 1 month ago

    Reply
    A)タグを持つドキュメント a.html

    B)同じタグを持つドキュメントを一覧表示するためのドキュメント tags.html

    上記の様な構造で:

    A)に、で、リンクを出力しています。
    B)tags.html と言うドキュメント上で、該当するタグがh1で見出しとして表示されるようにしています。

    例えば、Smart Phoneと言うタグがある場合、

    <"a href="http://xxx.com/tags.html?tags=smart+phone">Smart Phone</a>

    と言うリンクが生成されます。
    この場合、B)で一覧表示された時、h1の見出しに「smart phone」と表示されてしまいます。
    これを本来のタグ名通り「Smart Phone」と表示したく思っています。
    A)上のタグリンクを大文字、小文字を区別して出力することは可能でしょうか?

    例:<"a href="http://xxx.com/tags.html?tags=Smart+Phone">Smart Phone</a>
      (パス内のSmart+Phoneを大文字、小文字区別したい)


    都合により、プラグインの追加等はできないため、
    スニペットや、パラメーター等で解決できる方法を探しています。

    アドバイスがあれば大変ありがたく思います。
    よろしくお願いします。


  • tkfm Reply #2, 1 year, 1 month ago

    Reply
    &caseSensitive=`1`


    ではダメでしょうか?


  • p38lpn Reply #3, 1 year, 1 month ago

    Reply
    こんにちは。
    ご返信どうもありがとうございます。

    すみません、説明が足りていませんでした。

    &caseSensitive=`1`

    はすでに試しているのですが、出力されるリンク先は全て小文字になってしまう状況です。

    ちなみにA)内は

    [[TagLinks? &id=`[+id+]` &tv=`tv_tags` &caseSensitive=`1` &separator=` | ` &path=`/tags.html`]]

    と言う様な記述にしています。


  • tkfm Reply #4, 1 year, 1 month ago

    Reply
    B)上で「<h1>~</h1>」はどう記述していますか?


  • p38lpn Reply #5, 1 year, 1 month ago

    Reply
    こんにちは。

    B)のほうは「<h1>[+tags+]</h1>」となっています。


    A)で生成されたリンクの小文字部分▼を

    http://xxx.com/tags.html?tags=smart+phone

    下記の様に変更してアクセスしてみると、「<h1>〜〜</h1>」もきちんと大文字小文字が区別されて表示されました。

    http://xxx.com/tags.html?tags=Smart+Phone

    よろしくお願いします。


  • tkfm Reply #6, 1 year, 1 month ago

    Reply
    TagLinksスニペットの以下の部分(リンクを生成しているところ)ですが…

    /**
    * Create a series of HTML anchors with hrefs if &format
    * is set to `a`.
    */
    if ($format == 'a'){
    $link .= "$label";
    	for ($x=0;$x<$cnt;$x++) {
    		$url = urlencode(trim($tvarray[$x]));
    		$cnd_separator = ($x!=($cnt-1)) ? $separator : '';
    	   $link .= '<a href="'.$doc_path.strtolower($url).'">'.trim($tvarray[$x]).'</a>'.$cnd_separator.$nl;	
    	}
    } else {
    
    /**
    * Otherwise genereate a series of list items with a hrefs if &format
    * is set to ordered or unordered list.
    */
    	$link .= '<'.$format.'>'.$nl;
    	$link .= '<li class="'.$style.'_label">'.$label.'</li>'.$nl;
    	for ($x=0;$x<$cnt;$x++) {
    		$url = urlencode(trim($tvarray[$x]));
    		$cnd_separator = ($x!=($cnt-1)) ? $separator : '';
    	   $link .= '<li><a href="'.$doc_path.strtolower($url).'">'.trim($tvarray[$x]).'</a>'.$cnd_separator.'</li>'.$nl;
    	}
    	$link .= '</'.$format.'>'.$nl;
    }
    


    ここに2箇所出てくる

    strtolower($url)


    の部分で強制的に小文字化してますね。

    URLとしてはこうするのが正解なのか、他に何の意図があるのか私には分かりませんが、
    strtolower()関数を外せば所望の結果を得られるのではないでしょうか?


  • p38lpn Reply #7, 1 year, 1 month ago

    Reply
    tkfmさん、

    こんばんわ。
    まさにその関数を外したらうまく動作するようになりました!
    自分の力ではとてもそこまで到達できませんでした。

    ありがとうございました。

    恐縮ながら追加で質問させてもらいたいのですが、

    B)で、複数のタグに属するドキュメントを表示したい場合、以下の様なURLでアクセスしたとします。

    URL:http://xxx.com/tags.html?tags=Smart+Phone,Top+Sellers

    上記の場合「<h1>〜</h1>」には「Smart Phone,Top Sellers」
    と表示されますが、このseparatorにあたる「,」の後にスペースを入れく思っています。

    「[+tags+]」に「&separator=`, `」の様なパラメーターを入れたいのですが、現状うまくいかずにいます。
    何か方法はあるでしょうか?
    初心者ですみません。

    ※補足
    http://xxx.com/tags.html?tags=Smart+Phone,%20Top+Sellers 」と、URL側にスペースを入れてみましたがうまく行きませんでした


  • tkfm Reply #8, 1 year, 1 month ago

    Reply
    B)のドキュメントの[+tags+]はDittoが出力していると思います。
    今のDittoコールはどんなものになっていますか?

    Dittoの Tagging Extender でデリミタの指定ができます。
    http://ditto.modxcms.com/files/assets/snippets/ditto/extenders/tagging-extender-inc-php.html
    &tagDelimiter=`, `


    またリンクを生成する tagLinks スニペットコールの方は
    &separator=`, `

    でセパレータの指定ができますが、urlencodeが上手くかからないかも?