无法使 Piranha CMS 管理器编辑页面正常工作
Unable to get the Piranha CMS manager edit page to work
我正在为现有站点添加博客功能,我认为 Piranha 可能是可行的方法。我添加了以下内容:
csproj
<ItemGroup>
<PackageReference Include="Piranha" Version="9.1.0" />
<PackageReference Include="Piranha.AttributeBuilder" Version="9.1.0" />
<PackageReference Include="Piranha.Data.EF.SQLServer" Version="9.1.0" />
<PackageReference Include="Piranha.Data.EF.SQLite" Version="9.1.0" />
<PackageReference Include="Piranha.ImageSharp" Version="9.1.0" />
<PackageReference Include="Piranha.Local.FileStorage" Version="9.1.0" />
<PackageReference Include="Piranha.AspNetCore" Version="9.1.0" />
<PackageReference Include="Piranha.AspNetCore.Identity.SQLServer" Version="9.1.0" />
<PackageReference Include="Piranha.AspNetCore.Identity.SQLite" Version="9.1.0" />
<PackageReference Include="Piranha.Manager" Version="9.1.0" />
<PackageReference Include="Piranha.Manager.TinyMCE" Version="9.1.0" />
</ItemGroup>
Startup.cs
services.AddPiranha(options =>
{
options.AddRazorRuntimeCompilation = true;
options.UseFileStorage(naming: Piranha.Local.FileStorageNaming.UniqueFolderNames);
options.UseImageSharp();
options.UseManager();
options.UseTinyMCE();
options.UseMemoryCache();
options.UseEF<SQLiteDb>(db =>
db.UseSqlite("Filename=./piranha.mvcweb.db"));
options.UseIdentityWithSeed<IdentitySQLiteDb>(db =>
db.UseSqlite("Filename=./piranha.mvcweb.db"));
});
...
App.Init(api);
App.CacheLevel = Piranha.Cache.CacheLevel.Full;
new ContentTypeBuilder(api)
.AddAssembly(typeof(Startup).Assembly)
.Build()
.DeleteOrphans();
Seed.RunAsync(api).GetAwaiter().GetResult();
Piranha.Manager.Editor.EditorConfig.FromFile("editorconfig.json");
app.UsePiranha(options => {
options.UseManager();
options.UseTinyMCE();
options.UseIdentity();
});
我还从示例 MVC 应用程序项目中复制了所有视图、模型、配置文件、控制器和静态资产,并将它们包含在内。
当我 运行 程序时,它加载示例主页,当我转到 /manager 时,它让我使用默认凭据登录。我可以看到默认页面已创建。但是,当我尝试编辑页面时,设计器从不加载。相反,当我检查 chrome 中的页面时,我收到一条错误消息:
"TypeError: Cannot read property 'filename' of undefined"
我附上了一张屏幕截图,显示了当时加载的内容以及错误发生的位置。任何帮助找到这个根源的人都将不胜感激。
filename
属性 很可能是测试页上图像块或其他媒体引用的一部分。我的猜测是当您复制数据时媒体资产没有正确创建并且页面上的引用已损坏。
尝试创建一个新页面,看看编辑器是否按预期加载,然后删除测试页面并创建您自己的内容。
我能够通过删除 services.AddPiranha()
之后我在 Startup 中对 services.AddMvc()
的调用来解决这个问题。看起来 AddPiranha
为您做了这个,而放入 AddMvc
会导致事情变得一团糟。
我正在为现有站点添加博客功能,我认为 Piranha 可能是可行的方法。我添加了以下内容:
csproj
<ItemGroup>
<PackageReference Include="Piranha" Version="9.1.0" />
<PackageReference Include="Piranha.AttributeBuilder" Version="9.1.0" />
<PackageReference Include="Piranha.Data.EF.SQLServer" Version="9.1.0" />
<PackageReference Include="Piranha.Data.EF.SQLite" Version="9.1.0" />
<PackageReference Include="Piranha.ImageSharp" Version="9.1.0" />
<PackageReference Include="Piranha.Local.FileStorage" Version="9.1.0" />
<PackageReference Include="Piranha.AspNetCore" Version="9.1.0" />
<PackageReference Include="Piranha.AspNetCore.Identity.SQLServer" Version="9.1.0" />
<PackageReference Include="Piranha.AspNetCore.Identity.SQLite" Version="9.1.0" />
<PackageReference Include="Piranha.Manager" Version="9.1.0" />
<PackageReference Include="Piranha.Manager.TinyMCE" Version="9.1.0" />
</ItemGroup>
Startup.cs
services.AddPiranha(options =>
{
options.AddRazorRuntimeCompilation = true;
options.UseFileStorage(naming: Piranha.Local.FileStorageNaming.UniqueFolderNames);
options.UseImageSharp();
options.UseManager();
options.UseTinyMCE();
options.UseMemoryCache();
options.UseEF<SQLiteDb>(db =>
db.UseSqlite("Filename=./piranha.mvcweb.db"));
options.UseIdentityWithSeed<IdentitySQLiteDb>(db =>
db.UseSqlite("Filename=./piranha.mvcweb.db"));
});
...
App.Init(api);
App.CacheLevel = Piranha.Cache.CacheLevel.Full;
new ContentTypeBuilder(api)
.AddAssembly(typeof(Startup).Assembly)
.Build()
.DeleteOrphans();
Seed.RunAsync(api).GetAwaiter().GetResult();
Piranha.Manager.Editor.EditorConfig.FromFile("editorconfig.json");
app.UsePiranha(options => {
options.UseManager();
options.UseTinyMCE();
options.UseIdentity();
});
我还从示例 MVC 应用程序项目中复制了所有视图、模型、配置文件、控制器和静态资产,并将它们包含在内。
当我 运行 程序时,它加载示例主页,当我转到 /manager 时,它让我使用默认凭据登录。我可以看到默认页面已创建。但是,当我尝试编辑页面时,设计器从不加载。相反,当我检查 chrome 中的页面时,我收到一条错误消息:
"TypeError: Cannot read property 'filename' of undefined"
我附上了一张屏幕截图,显示了当时加载的内容以及错误发生的位置。任何帮助找到这个根源的人都将不胜感激。
filename
属性 很可能是测试页上图像块或其他媒体引用的一部分。我的猜测是当您复制数据时媒体资产没有正确创建并且页面上的引用已损坏。
尝试创建一个新页面,看看编辑器是否按预期加载,然后删除测试页面并创建您自己的内容。
我能够通过删除 services.AddPiranha()
之后我在 Startup 中对 services.AddMvc()
的调用来解决这个问题。看起来 AddPiranha
为您做了这个,而放入 AddMvc
会导致事情变得一团糟。