TYPO3包括PHP函数和SQL查询


TYPO3 include PHP function and SQL query

搜索网络,但找不到任何修复/帮助。

我正在运行 TYPO3 v.6。Extbase/Fluid im试图做两件事。

  1. 包括一个 php 页面,并将其显示在页面上的内容元素中。
  2. 尝试从MySQL数据库获取一些数据,并将其显示在内容元素中。

我在 TS 页面中包含了一个 php 页面。

lib.timmers = USER_INT
lib.timmers {
includeLibs.time = fileadmin/templates/add/php/dates.php
    userFunc = custom_class->customfunction
}

然后安装了扩展 tscobj,它在 PHP 页面中使用 Return 命令,但不能使用 Echo 和 Print。如果我采用includeLibs.time并将其放在lib.timmer之外,那么它会显示php内容,但在HTML标签之前。

所以我在页面上的内容元素中包含 php 内容时遇到问题。

以及我如何添加 MySQL 连接并制作一些 HTML 代码/布局,以便我可以从内容元素内的数据库中获取记录,我已经尝试了扩展 ViewHelper,但它不起作用。

有人可以帮我吗?

编辑:

我已经尝试过这段代码,但我没有得到任何数据。

lib.GetMainCat = CONTENT
lib.GetMainCat {
wrap = <div class="p_filter"><div class="p_filter_container"><a class="p_cat_filter button" href="#" title="All Categories" data-filter="article.portfolio"><span>All Categories</span></a><ul class="p_filter"><li class="current"><a href="#" title="All Categories" data-filter="article.portfolio">All Categories</a></li>|</ul></div><div class="cl"></div></div>
table = tx_tbpdrills_domain_model_drillcategory
select {
    selectFields = *
            where = NOT deleted AND NOT hidden      
    orderBy = categorytitle ASC
}
renderObj >
renderObj = COA_INT
renderObj {     
    10 = TEXT       
    10.field = categorytitle
    10.wrap = <li><a href="#" title="###" data-filter="article.portfolio[data-category~='###']">|</a></li>
}   
}

您不需要设置 selectFields = *,因为它是默认值。很可能您忘记设置pidInList,因为如果未设置,它将使用当前页面的pid。

它可以这样工作:

lib.GetMainCat = CONTENT
lib.GetMainCat {
    wrap = <div class="p_filter"><div class="p_filter_container"><a class="p_cat_filter button" href="#" title="All Categories" data-filter="article.portfolio"><span>All Categories</span></a><ul class="p_filter"><li class="current"><a href="#" title="All Categories" data-filter="article.portfolio">All Categories</a></li>|</ul></div><div class="cl"></div></div>
    table = tx_tbpdrills_domain_model_drillcategory
    select {
        pidInList = 999 [page id where the records reside]
        where = NOT deleted AND NOT hidden      
        orderBy = categorytitle ASC
    }
    renderObj = COA_INT
    renderObj {     
        10 = TEXT       
        10.field = categorytitle
        10.wrap = <li><a href="#" title="###" data-filter="article.portfolio[data-category~='###']">|</a></li>
    }   
}

现在可以在 TypoScript 中访问此对象:

page.20 < lib.GetMainCat

或在流体模板中:

<f:cObject typoscriptObjectPath="lib.GetMainCat" />

核心不提供在内容元素中使用 TypoScript 对象的方法。如果要像放置内容元素一样放置TypoScript对象,则需要使用扩展名,例如 http://typo3.org/extensions/repository/view/tscobj它很旧,但它应该仍然可以工作。这是最快的,但可能不是最好的解决方案。

你可以编写一个自己的插件,基本上包含这个TypoScript对象。或者,您可以使用另一个流体部分或模板来包含它。

那么为什么要使用 print(( 或 echo(( 来返回你的内容呢?这些构造在运行时输出一些内容,因此输出将在整个 TYPO3 输出之前。

只需将内容扔到像 $content 这样的变量,然后在用户函数中使用 return $content。

不知何故,我认为您最好启动一个自己的扩展,在那里您将拥有完整的 TYPO3 API。您想连接到您的 TYPO3 所在的同一个 MySQL 数据库吗?请澄清你想做什么,然后我会编辑我的答案,为你指出正确的方向。