web-dev-qa-db-ja.com

メディアギャラリーモジュールのパス構成

Media galleryモジュールを使用してギャラリーを作成し、pathautoモジュールを使用してURLを生成しています。

ギャラリーページの場合、このパターンをURLに使用します

photo-gallery/[node:title]

ユーザーが写真をクリックするとき。別のページにその画像を表示しています。

しかし、単一の画像が表示されるページのパスを設定する方法がありません。

自動でこのようなURLを生成します

/media-gallery/detail/356/460

これを回避する方法はありますか?どんな助けでもありがたいです。

4
Rupesh Pawar

Letharionが投稿したソリューションは問題なく機能しますが、パスをautoと統合することは、彼が書いた(s)のようなより良いソリューションです。

これはそれほど難しくはありませんが、初めて行うのは少し難しいかもしれません。

それを行うには、いくつかの手順が必要です。

  1. 最初に、エイリアスの外観の設定を取得するためにhook_pathautoを実装する必要があります。ここでは、パスの置換などに使用できるトークンのタイプに関する情報を提供できます。

  2. 次に、エイリアスの生成に使用できる関数を作成する必要があります。次のようになります。

    function foo_pathauto_update_alias($file, $op, array $options = array()) {
      module_load_include('inc', 'pathauto');
      $path = media-gallery/detail/' . $file->bid . '/' . $file->fid
      pathauto_create_alias('aug_product', $op, $path, array('file' => $file));
    }
    

    パスの自動はエンティティに基づいています。したがって、単一のエンティティからパスを生成できる必要があります。この場合、作成されるファイル。上記の関数構造を使用することにより、単一の関数を使用して、パスの自動機能を維持したまま、定期的な更新だけでなく、一括更新にも利用できます。

  3. 最後に、ファイルが作成または更新されたときに更新関数を呼び出す必要があります。これは、パスエイリアスの作成を処理します。このようにすると、データが変更された場合にパスエイリアスを更新して、エイリアスを変更することもできます(必要な場合)。この設定は、パスの自動モジュールにあります。

  4. おまけに、一括更新機能を作成することを選択できます。これにより、作成されたファイルのエイリアスを使用できます。多少の作業は必要ですが、うまく機能するはずです。

この方法で行うことに注意してください。エンティティのようなファイルを処理できるため、ファイルエンティティモジュールを使用することをお勧めします。

5
googletorp

Media-galleryは「media-gallery/detail /%node /%file」パスを登録します。つまり、そこにエイリアスを追加できます。

ギャラリーを保存するときに、form_alterを使用して、各ギャラリー画像のパスエイリアスを作成し、問題を解決することができます。

function hook_form_ID_alter($form) {
  foreach($form['images'] as $image) {
    path_save(array('sources' => $image->path, 'dest' => 'pretty-url'));
  }
}

より優れたソリューションは直接パスオート統合ですが、それを機能させるために何が必要かを説明するのに十分な知識はありません。

2
Letharion