TYPO3包括PHP函数和SQL查询

时间:2013-10-05 17:52:27

标签: php typo3 typoscript fluid extbase

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

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

  1. 包含php页面,并在页面的内容元素中显示。
  2. 尝试从MySQL数据库中获取一些数据,并在内容元素中显示它。
  3. 我在TS页面中包含了一个php页面,如。

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

    然后安装了扩展tscobj,它在PHP页面中使用了返回命令,但没有使用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>
    }   
    }
    

2 个答案:

答案 0 :(得分:0)

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

只需将内容投放到$ content等变量中,然后在用户函数中使用return $ content。

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

答案 1 :(得分:0)

您不需要设置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对象的插件。或者您可以使用另一个Fluid partial或模板来包含它。