web-dev-qa-db-ja.com

部分的なURL文字変換?

URLエイリアスを部分的に音訳して、たとえば次のようにノードタイトルのケースを変更しないようにすることは可能ですか?

/this/is/my/transliterated/path/THIS-IS-UNCHANGED-Node-Title-888

その背後にある目的は、小文字と大文字の類似性が望ましくない製品シンボルを保持することです。

また、テンプレート関数やモジュールなどの完全に自動化された動作を意味します。

2
Artur

確かに、path_set_alias()(またはpath_save() in Drupal 7)を呼び出して、必要なものを設定できます。これらはnodeapi()(または_node_op....._ in Drupal 7)を使用してパスを設定します。ただし、drupal isn 「大文字と小文字を区別しないので、ここでは、「foo/bar/BAZ」は「foO/bAr/BaZ」と同じなので、注意する必要があります。

添加:

Pathautoでこれを実行したい場合、簡単なハックはpathauto.incを編集してこれを実行することです。

_  if (true) {
    $foo=drupal_strolower(dirname($output));
    $bar=basename($output);
    $output=$foo . '/' . $bar;
  } else {
    // Optionally convert to lower case.
    if (variable_get('pathauto_case', 1)) {
      $output = drupal_strtolower($output);
    }
  }
_

これはまさにこれを行います:

_// Optionally convert to lower case.
if (variable_get('pathauto_case', 1)) {
  $output = drupal_strtolower($output);
}
_

ただし、if(true)をさらに調整するかどうかはユーザー次第です。それ以外の場合は、エイリアスごとにこれを行います。

2
Jimajamma

私はDrupalに精通しておらず、ただ通り過ぎていました。

大文字と小文字の区別と非類似性が主な目的のように思われるので、次のコードのように、URLをPHPで分割ポイントとして「/」を使用して単純に文字列分割できると想像します。

$arrayFullofURLPieces = explode("/",$originalURL,32);

駒を使って好きなことができます。

0
JD123