【问题标题】:include typoscript with php在 php 中包含打字稿
【发布时间】:2013-01-09 08:25:41
【问题描述】:

是否可以通过 php 包含打字稿文件? 通常我会在其中包含打字稿:

<INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/templates/typoscript/setup/1.ts">

但我只想使用 php 而不是打字稿来做到这一点。那可能吗?

我的目的:我想在我的页面中动态加载打字稿

【问题讨论】:

  • 也许你可以解释你想做什么。我想有更好的方法可以做。你知道 TypoScript 条件吗?常量?
  • 我不知道我想包含哪个打字稿文件。所以条件不会帮助我。我想尝试为打字稿文件制作一个自动加载器,以便文件名是动态的
  • 您尝试的方式非常不寻常。也许可以走 TYPO3 的方式。但在不知道您尝试归档什么的情况下,没有人能以不同的方式提供帮助。
  • 正如我所说.. 我想创建一个打字稿自动加载器.. 例如。我想要一个文件名像 15.ts 的目录,如果调用了 id 为 15 的页面,那么 autolaoder 应该自动包含打字稿 15.ts(或 page-15.ts)
  • 好吧,你可以把比放在一个文件中并使用 TypoScript Condition [userFunc = user_check_what_to_use({$a_constant}, 1)] ... [end] 所以把所有东西放在一个文件中并使用条件分开?

标签: php typo3 typoscript


【解决方案1】:

这可以通过在早期调用一致的函数来实现,例如在ext_localconf.php 中调用或委托它。例如,bookstrap package 在 PHP 中加载 TypoScript,如下所示:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(
    '<INCLUDE_TYPOSCRIPT: source="FILE:EXT:' . $_EXTKEY
    . '/Configuration/PageTS/Mod/Wizards/newContentElement.txt">'
);

请注意,TypoScript 在实际前端渲染开始之前被缓存。这意味着,如果您的插件类或控制器逻辑已被调用,则不应修改 TypoScript。

【讨论】:

    【解决方案2】:

    可能你需要从 php 函数中返回一个值,并使用打字稿条件来选择打字稿文件。

    【讨论】:

    • 我不想在 php 中使用条件来检查是否应该导入打字稿文件,我不知道打字稿文件的名称。我想从 php 动态获取打字稿文件的名称
    【解决方案3】:

    您可以尝试以下方法(如果我没记错的话):

    $typoscriptFile  .= file_get_contents($someFile);
    
    $parser  = t3lib_div::makeInstance('t3lib_TSparser');
    $parser->parse($typoscriptFile);
    
    $tsArray = $parser->setup;
    

    不过,我真的不知道这对与全球排版相关的任何事情会有多好。

    如果您想要一个完整正确的解析,如果您从 $GLOBALS['TSFE']-&gt;tmpl 填充一个新的 t3lib_TStemplate 实例,然后运行上面的代码,您可能能够完成类似的操作。可能有效,从未尝试过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2018-05-14
      • 2019-04-19
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多