无法使 Piranha CMS 管理器编辑页面正常工作

Posted

技术标签:

【中文标题】无法使 Piranha CMS 管理器编辑页面正常工作【英文标题】:Unable to get the Piranha CMS manager edit page to work 【发布时间】:2021-09-26 05:46:22 【问题描述】:

我正在努力向现有网站添加博客功能,并认为 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"

我附上了一个屏幕截图,显示了加载到该点的内容以及发生错误的位置。任何帮助解决此问题的根源将不胜感激。

【问题讨论】:

【参考方案1】:

filename 属性很可能是测试页上图像块或其他媒体引用的一部分。我的猜测是,当您复制数据并且页面上的引用已损坏时,媒体资产尚未正确创建。

尝试创建一个新页面,看看编辑器是否正常加载,然后删除测试页面并创建您自己的内容。

【讨论】:

感谢 Hakan 我能够解决这个问题,请参阅上面的答案。希望它可以在未来对其他人有所帮助【参考方案2】:

我能够通过删除在services.AddPiranha() 之后的启动中对services.AddMvc() 的调用来解决此问题。看起来 AddPiranha 为您执行此操作,而输入 AddMvc 会导致事情变得一团糟。

【讨论】:

以上是关于无法使 Piranha CMS 管理器编辑页面正常工作的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 的 Piranha CMS 路由问题

Piranha CMS:如何查找页面的子页面

现有 MVC 5 站点上的 Piranha CMS

Piranha - 客户经理区

未找到 Piranha CMS 管理自定义控制器

piranha CMS 的 Sysparam 错误