当前位置: 首页 > 知识库问答 >
问题:

TYPO3 Extbase后端模块。模板路径问题

鲁滨海
2023-03-14

我在创建extbase/fluid扩展时遇到了一个奇怪的问题。我使用typo36.1

我在我的开发服务器上做了一个带有后端模块的扩展(与prod的配置/硬件相同)。该模块与模板的路径完美配合:

Myext_资源/私有/后端/模板

在此之后,我html" target="_blank">下载了我的扩展的zip在文本管理器,然后安装在prod服务器上。现在我不能使用我的扩展,因为模块找不到模板。我用同样的方法配置了扩展。模板在正确的路径上。

我测试将文件夹移动到父级:

MyText/Resources/Private/模板
Myext/Resources/Private/布局

这样可以工作,但在模块配置中,我指定了“Backend/”文件夹的正确路径。

我不想将我的文件夹移动到私人文件夹中,我希望它在私人/后端文件夹中运行。

我已经将扩展静态模板包括到网站根TS模板中。

以下是常数:

module.tx_myext {
    view {
        # cat=module.tx_myext/file; type=string; label=Path to template root (BE)
        templateRootPath = EXT:wng_myext/Resources/Private/Backend/Templates/
        # cat=module.tx_myext/file; type=string; label=Path to template partials (BE)
        partialRootPath = EXT:wng_myext/Resources/Private/Backend/Partials/
        # cat=module.tx_myext/file; type=string; label=Path to template layouts (BE)
        layoutRootPath = EXT:wng_myext/Resources/Private/Backend/Layouts/
    }
    persistence {
        # cat=module.tx_myext//a; type=string; label=Default storage PID
        storagePid =
    }
}

设置是这样的:

module.tx_myext {
    persistence {
        storagePid = {$module.tx_myext.persistence.storagePid}
    }
    view {
        templateRootPath = {$module.tx_myext.view.templateRootPath}
        partialRootPath = {$module.tx_myext.view.partialRootPath}
        layoutRootPath = {$module.tx_myext.view.layoutRootPath}
    }
}

共有3个答案

庄子平
2023-03-14

尝试清理所有缓存,即使是在typo3temp/Core/Cache(或类似的东西)中

郎聪
2023-03-14

正如@benjina-kott所解释的,需要首先加载TYPO3的后端模块配置。不幸的是,默认情况下,扩展的typoscript文件不会自动加载。

使TYPO3意识到此打字脚本文件的一种方法是在扩展名的根文件夹中创建两个文件:

>

<INCLUDE_TYPOSCRIPT: source="FILE:EXT:myext/Configuration/TypoScript/constants.txt">

ext\u打字稿\u设置。txt

<INCLUDE_TYPOSCRIPT: source="FILE:EXT:myext/Configuration/TypoScript/setup.txt">

(有点明显,但是:您应该用您的路径替换此路径)

添加此文件后,应重新安装扩展以查看更改。您可以使用打字脚本对象浏览器查看是否正在加载设置和常量。

谈琛
2023-03-14

主要问题是打字稿配置将无法加载到根路径中没有模板的存储文件夹或页面上。

解释:无论是在ext\u typoscript\u设置中,还是在静态模板中,还是通过php,您都将为扩展设置打字脚本配置。它始终需要在页面根目录中的某个位置设置系统记录模板。否则它将不会被渲染,并且不会为extbase扩展设置路径,因此默认的布局、模板和部分路径将被设置,脚本将在这里查找您的内容。

默认值为:

/Private/Resources/Layout/
/Private/Resources/Partials/
/Private/Resources/Templates/@Controllername/@Actionname

如果您需要为您的后端模块重写这些,您可以通过直接在控制器中注入视图的设置来解决这个问题。

<?php
namespace VendorKey\ExtensionName\Controller;

class SettingsController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

/**
 * Initializes the controller before invoking an action method.
 * @return void
 */
protected function initializeAction() {
    $this->setBackendModuleTemplates();
}

/**
 * Set Backend Module Templates
 * @return void
 */
private function setBackendModuleTemplates(){
    $frameworkConfiguration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
    $viewConfiguration = array(
        'view' => array(
            'templateRootPath' => 'EXT:extension_name/Resources/Private/Templates/Modules/',
            'partialRootPath' => 'EXT:extension_name/Resources/Private/Partials/Modules/',
            'layoutRootPath' => 'EXT:extension_name/Resources/Private/Layouts/Modules/',
        )
    );
    $this->configurationManager->setConfiguration(array_merge($frameworkConfiguration, $viewConfiguration));        
}

/**
 * action settings
 * @return void
 */
public function settingsAction(){

}

}

我希望这对格里茨·本吉有所帮助

 类似资料:
  • 问题内容: 我正在Windows 7环境中的http://docs.djangoproject.com/en/dev/intro/tutorial02/#intro-tutorial02上关注此教程。我的设置文件是: 我从本身的源代码(django / contrib / admin / templates)的默认Django admin模板目录中的模板中获取了该模板,并将其按照本教程的说明放入m

  • 问题内容: 我意识到,当我对node.js模块(带有-g标志)进行全局安装时,除非编写了整个路径,否则无法使用该模块。 我的意思是,如果模块已全局安装,则无法使用: 我必须写: 我如何对节点说必须在正确的路径中寻找模块? 谢谢。 问题答案: 总的来说,我建议让npm为您提供路径并按照上面的说明进行设置:

  • 在 fis 提供的三种语言能力中,并没有提供对声明依赖的资源进行加载的功能。因此在 YOG2 中,我们通过扩展 swig 后端模板引擎,来添加对资源的加载能力。 YOG2 会重写 html, head, body 标签用于搭建资源加载的总体框架,并且添加了 require, widget, script 标签用于处理静态资源和后端组件。 基础结构 一个基础的 YOG2 后端模板应该类似 <!doc

  • 问题内容: 我正在python 2.7中开发自己的模块。它位于而不是或中。内部结构为: 包括课程。我遇到导入问题: 我没有将PythonPath设置为包括我的,因此,当server.http尝试包含client.PyCachedClient时,它将尝试从相对路径加载它并失败。我的问题是- 我应该如何以良好的pythonic方式设置所有路径/设置?我知道每次打开控制台并尝试运行服务器时都可以在she

  • 问题内容: 我正在使用ui-router 0.2.8。我想根据设备宽度加载模板。我可以毫无问题地获得设备的宽度,将其设置在范围等,但我可以弄清楚如何将其绑定到$ stateParams。我在另一个控制器中有scope变量,可以访问该状态的控制器,但状态本身不可用。我试过了templateProvider,但这只是返回一个字符串。为了使它起作用,我还能尝试什么? 问题答案: 您可以在事件中访问状态参

  • 有人能帮我解决我遇到的自定义Prestashop模块1.6版本的文件路径问题吗? 以下内容在本地主机环境中非常有效: 但是不能在实时服务器上工作。以下方法确实有效: 这是不可接受的,因为有些客户不会使用默认的引导主题。 对此问题的任何帮助都将不胜感激。 谢谢