2013-10-05 103 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數據庫嗎?請澄清你想做什麼,然後我將編輯我的答案,指出你正確的方向。