【问题标题】:Open ItemSelectControl on a custom page (not gui extension)在自定义页面上打开 ItemSelectControl(不是 gui 扩展)
【发布时间】:2012-03-19 14:22:46
【问题描述】:

我正在开发一个 Web 应用程序,它将作为自定义页面添加到 Tridion 中。

在自定义页面上,我想选择架构 X 的组件。我想为此目的使用 ItemSelectControl,但我不知道如何从自定义页面打开该控件,因为我无法访问任何 Tridions javascript 命名空间(例如 $model 或 $const)。我可以简单地打开一个带有指向 ItemSelectControl 的 url 的新弹出窗口并在 json 中创建我自己的过滤器,但我宁愿使用在 Tridions javascript 命名空间中定义的常量。

是否有一种简单的方法可以向我的 Web 应用程序添加引用或其他内容以访问 Tridions javascript 命名空间?如果没有,您有什么建议我应该如何解决这个问题?

有关自定义页面的更多信息:

  • CMS 服务器主机名:testcms

  • 一个空的 ASP.NET 项目,其中一个名为 Test.aspx 的 aspx 页面发布到路径 C:\TestPage\

  • 在 IIS 中,一个名为 TestPage 的 Web 应用程序位于 SDL Tridion 站点中,路径为 C:\TestPage\

  • 尝试在浏览器中使用 url:http://testcms/TestPage/Test.aspx访问页面

【问题讨论】:

    标签: tridion


    【解决方案1】:

    您可以通过为弹出窗口使用以下标记/代码来完成此操作。 (弹出页面必须是.aspx页面)

    <%@ Page Language="C#" AutoEventWireup="true" Inherits="Tridion.Web.UI.Controls.TridionPage" ClassName="DashboardView" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html class="tridion popup">
    <head>
        <!-- Tridion manager -->
        <cc:TridionManager runat="server" Editor="CME">
            <dependencies runat="server">       
                <dependency runat="server">Tridion.Web.UI.Editors.CME</dependency>
                <dependency runat="server">Tridion.Web.UI.Editors.CME.commands</dependency>
                <dependency runat="server">Tridion.Web.UI.Editors.CME.globalCommands</dependency>
                <dependency runat="server">Tridion.Web.UI.Controls.Popup</dependency>
            </dependencies>
        </cc:TridionManager>
    </head>
    <body>
        My popup
    </body>
    

    这意味着您的应用程序和 Tridion 之间存在依赖关系,因为您的弹出页面必须继承 Tridion.Web.UI.Control.TridionPage。如果你想要这个,这取决于你。我不知道添加 Tridion JavaScript 文件的另一种方法。 (PowerTools 项目中也使用了这种方法。在这里查看:http://code.google.com/p/tridion-2011-power-tools/

    【讨论】:

    • 感谢您的回复!恐怕我无法让您的示例标记起作用。我添加了对 Tridion.Web.UI.Core 的引用,但我收到一个错误,即找不到标签 cc。您是否能够在不从 Tridion 启动页面的情况下使您的示例正常工作?我正在尝试使用 http://[CMS_HOSTNAME]/[IIS_WEB_APPLICATION_NAME]/[PAGE_NAME].aspx,其中 PAGE_NAME 是带有您的标记示例的 aspx 文件的名称。
    • 添加新编辑器并将此编辑器用作您的自定义页面:(添加新编辑器的标准过程) 1. 在 IIS 的“编辑器”目录中添加新的虚拟目录。 2. 在 System.config 中添加您的新编辑器 3. 将您的自定义页面(和您的 popup.aspx)放在这个新的虚拟目录中。 4. 在 Tridion 中添加一个新的自定义页面。将其指向您的新编辑器。将“空”Editor.config 添加到新编辑器的配置目录中。
    • Andreas:“cc”前缀通常在 WebRoot\web.config 中定义。您的自定义页面很可能存储在其自己的 IIS 应用程序中,这就是您收到该错误的原因。因此,您需要将前缀添加到其 web.config 或在您的页面中内联定义它。
    • 彼得:谢谢!无论我尝试什么,我都无法访问 Tridion 命名空间。但无论如何感谢您的提示。我将创建一个 GUI 扩展,这些至少可以工作:)
    • 创建一个新编辑器并将其用作您的自定义页面,将所有 JavaScript 命名空间添加到您的页面。 (使用 时)
    【解决方案2】:

    如果您想开发自己的连接到 SDL Tridion 的 Web 应用程序(例如,您可以将其用作自定义页面或自定义 URL),您应该使用核心服务。这使您无需复制(部分) SDL tridion Web.Config 即可连接到 Tridion API。

    SDL Tridion World 上提供了如何使用核心服务的示例:Item Selector Custom URL eXtension

    此示例向您展示了使用核心服务构建的项目选择器。它专门设计用于自定义 URL(架构字段中的链接),但可以轻松转换为在您自己的 Web 应用程序或自定义页面中使用。

    只有在创建 SDL Tridion UI 扩展时,您才能(或应该)使用 Tridions javascript 命名空间。

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 1970-01-01
      • 2021-11-08
      • 2014-05-14
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      相关资源
      最近更新 更多