jPlayerディレクトリを「/Default/MediaGallery」ではなく「/MyFolder/CurrentMedia/」というフォルダに設定する必要があります。
誰かがjPlayerで設定を変更する方法を見つけるのを手伝ってくれますか-バージョン:1.0.1
よろしく
jPlayerディレクトリを「/Default/MediaGallery」ではなく「/MyFolder/CurrentMedia/」というフォルダに設定する必要があります。
誰かがjPlayerで設定を変更する方法を見つけるのを手伝ってくれますか-バージョン:1.0.1
よろしく
名前がハードコードされているようです。jPlayer モジュールは Orchard Media 機能を使用しているため、パスの「/Default」部分を取り除く方法はありません。この機能には、各テナントにちなんで名付けられたデフォルトのルート フォルダがあります (これはマルチテナントに適したモジュールです)。上記のリンク先のファイルの 12 行目の名前 ( MediaGalleries ) を変更することで、そのパスの次の部分のみを変更できます。
@PiotrSzmydは正しいです。部分的にハードコードされています。「デフォルト」は のフィールドから取得Name
さOrchard.Web\App_Data\Sites\Default\Settings.txt
れ、パスは でハードコーディングされていOrchard\FileSystems\Media\FileSystemStorageProvider.cs
ます。残念ながら、このクラスの動作をハンドラーなどで変更する方法はありません。現在2つのオプションがあります
IStorageProvider
必要に応じて (メディア ストレージ パスが Orchard ディレクトリ構造の外にあることを意味します)、この問題を回避します。\\<server>\Files$\<build_configuration>\Media
2 番目のオプションを使用して、メディア ストレージ パスを に変更しました。
まず、 の重要な部分は次のIStorageProvider
とおりです。
カスタムIStorageProvider
実装
[Orchard.Environment.Extensions.OrchardSuppressDependency("Orchard.FileSystems.Media.FileSystemStorageProvider")] // adopted from AzureBlobStorageProvider.cs
public class FileSystemStorageProvider : Orchard.FileSystems.Media.IStorageProvider
{
private Orchard.FileSystems.Media.FileSystemStorageProvider mFileSystemStorageProvider;
public FileSystemStorageProvider(Orchard.Environment.Configuration.ShellSettings settings)
{
// use Orchard's default IStorageProvider for implementation
mFileSystemStorageProvider = new Orchard.FileSystems.Media.FileSystemStorageProvider(settings);
var lFileSystemStorageProviderType = mFileSystemStorageProvider.GetType();
// get media storage path, e.g. from configuration file
var lStoragePath = GetMediaStoragePath();
lStoragePath = System.IO.Path.Combine(lStoragePath, settings.Name);
// _storagePath is private read-only, so change it the hard way by using reflection
lFileSystemStorageProviderType
.GetField("_storagePath", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.SetValue(mFileSystemStorageProvider, lStoragePath);
string lVirtualPath = "~/Files/" + settings.Name + "/";
lFileSystemStorageProviderType
.GetField("_virtualPath", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.SetValue(mFileSystemStorageProvider, lVirtualPath);
string lPublicPath = mFileSystemStorageProvider.GetPublicUrl(null).Replace("/Media/" + settings.Name + "/", "/Files/" + settings.Name + "/");
lFileSystemStorageProviderType
.GetField("_publicPath", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
.SetValue(mFileSystemStorageProvider, lPublicPath);
}
#region Implementation of IStorageProvider
public bool FileExists(string aPath)
{
return mFileSystemStorageProvider.FileExists(aPath);
}
...
#endregion
}
このカスタム実装マップ
\\<server>\Files$\<build_configuration>\Media
~/Files/Default/
/Files/Default/
今問題があります。Orchard はメディア URL を次のようにレンダリングしますwww.mysite.de/Files/Default...
が、Orchard ディレクトリ構造には Files というディレクトリはありません。これで、カスタム ルートが機能します。
カスタムルート
public class Routes : Orchard.Mvc.Routes.IRouteProvider
{
public System.Collections.Generic.IEnumerable<Orchard.Mvc.Routes.RouteDescriptor> GetRoutes()
{
Orchard.Mvc.Routes.RouteDescriptor[] lRoutes =
new Orchard.Mvc.Routes.RouteDescriptor[]
{
new Orchard.Mvc.Routes.RouteDescriptor()
{
Name = "Custom route for media files",
Priority = 10000,
Route = new System.Web.Routing.Route(
"Files/{*aRelativePath}",
new System.Web.Routing.RouteValueDictionary()
{
{"area", "MyModule"},
{"controller", "Media"},
{"action", "GetFile"}
},
new System.Web.Routing.RouteValueDictionary() {},
new System.Web.Routing.RouteValueDictionary() { {"area", "MyModule"} },
new System.Web.Mvc.MvcRouteHandler()
)
}
};
return lRoutes;
}
public void GetRoutes(System.Collections.Generic.ICollection<Orchard.Mvc.Routes.RouteDescriptor> arRoutes)
{
foreach (var lRouteDescriptor in GetRoutes())
arRoutes.Add(lRouteDescriptor);
}
}
www.mysite.de/Files/Default...
このルート実装により、次のような特定のメディア コントローラーへのリダイレクトが保証されます。
メディアコントローラー
public class MediaController
{
public MediaController(Orchard.FileSystems.Media.IMimeTypeProvider aMimeTypeProvider)
{
mMimeTypeProvider = aMimeTypeProvider;
}
public System.Web.Mvc.ActionResult GetFile(string aRelativePath)
{
string lMediaStoragePath, lErrorMessage;
// get media storage path, e.g. from configuration file
if (GetMediaStoragePath(out lMediaStoragePath, out lErrorMessage))
{
string lFilename = System.IO.Path.Combine(lMediaStoragePath, aRelativePath);
string lMimeType = mMimeTypeProvider.GetMimeType(lFilename);
return File(lFilename, lMimeType);
}
else
return Content(lErrorMessage);
}
// private
private Orchard.FileSystems.Media.IMimeTypeProvider mMimeTypeProvider;
}