2013-10-05 147 views
0

有搜索网,但找不到任何修复/帮助。TYPO3包含PHP函数和SQL查询

进出口运行TYPO3第6节。 Extbase /流体im试图做2件事情。

  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扩展,但它不工作。

有人可以帮助我。

编辑:

我已经tryed这个代码,但IM没有得到任何数据..

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> 
} 
} 
+0

**首先**,问问自己是否真的需要自己的PHP方法从数据库中检索数据。 “CONTENT”或“RECORDS”对象不会伎俩吗? **第二**,除非你正在调试某些东西,否则你不应该尝试用'echo'或'print'输出内容。预计你的方法将返回输出。 **第三**,要输出特定内容元素的内容,您必须根据您的要求将其与该内容绑定。 – tmt

+0

'echo'或'print',@cascaval有什么问题?我在适当的PHP模板中一直这样做。 – maryisdead

+0

@maryisdead:我一般不是在谈论PHP项目,而只是谈论TYPO3。预计这些方法会返回值,因为TYPO3需要将它放在输出代码的正确位置。此外,它还需要进一步的后期处理(例如在HTML Tidy中)和缓存。 – tmt

回答

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> 
    } 
} 

这个对象,现在可以在Typo脚本访问:

page.20 < lib.GetMainCat 

或者在流体中的模板:

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

核心没有按”发布在内容元素中使用TypoScript对象的方法。如果你想像你的内容元素一样放置你的TypoScript对象,你将需要使用一个扩展名,如http://typo3.org/extensions/repository/view/tscobj 这是相当古老的,但它仍然应该工作。这是最快的,但可能不是最好的解决方案。

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

+0

好吧即时了解更好,所以你说什么(你不说),我为每一个页面制作FLUID模板,所以每个页面都有自己的FLUID模板,然后即时通讯工作模板并在其中添加F标签。 –

0

那么,为什么要使用打印()或回声()返回您的内容?这些结构在运行时输出一些内容,因此输出将在整个TYPO3输出之前。

只要将您的内容,比如$内容变量,然后使用返回$内容在用户功能。

不知怎的,我认为这将是更好地为您的kickstart一个自己的扩展,您将有充分的TYPO3 API可用。你想连接到TYPO3所在的同一个MySQL数据库吗?请澄清你想做什么,然后我将编辑我的答案,指出你正确的方向。