我希望我能很好的幫你。爲了達到你想要什麼,你需要創建兩個前端模塊,listModule和detailsModule和兩頁,末頁和detailsPage因此在後端(網站結構)創建這兩個頁面。您將添加listModule到listPage和detailsModule到detailsPage。
除非沒有選項,否則不要硬編碼頁面標識。
讓我們開始瞭解如何通過創建listModule並將其添加到末頁鏈接到detailsPage
- 創建
/system/modules/my_module/dca/tl_module.php
- 添加以下代碼並保存
$GLOBALS['TL_DCA']['tl_module']['palettes']['my_module'] = '{title_legend},name,headline,type,linkToDetail;{protected_legend:hide},protected;{expert_legend:hide},guests,cssID,space';
$GLOBALS['TL_DCA']['tl_module']['fields']['linkToDetail']=array( 'label' => &$GLOBALS['TL_LANG']['tl_module']['linkToDetail'], 'exclude' => true, 'inputType' => 'pageTree', 'foreignKey' => 'tl_page.title', 'eval' => array('fieldType'=>'radio'), 'sql' => "int(10) unsigned NOT NULL default '0'", 'relation' => array('type'=>'hasOne', 'load'=>'eager') );
這將創建自定義表中的列,你將使用它以後訪問模板的頁面ID
- 運行安裝工具。
- 處理任何可能出現的錯誤。如果沒有,請轉到下
按照這個網址Front end module
在compile
功能做如下
protected function compile(){
$objItems = $this->Database->execute("SELECT * FROM my_custom_table");
if (!$objItems->numRows)
{
return;
}
$arrItems = array();
// Generate item rows
while ($objItems->next())
{
$objPage = \PageModel::findPublishedById($objItems->linkToDetail);
$arrItems[] = array
(
'linkToDetail' => $objPage->getFrontendUrl('itemId='.$objItems->id),
);
}
$this->Template->items = $arrItems;
}
請注意創建前端模塊itemId參數添加到網址
創建模板/system/modules/my_module/templates/my_template.html5
,你將能夠輕鬆地訪問項目
<?php if($this->items): foreach ($this->items as $item): ?>
<div class="item">
<?php if ($item['linkToDetail']): ?>
<a href="<?php echo $item['linkToDetail']; ?>">Please take me to the details page</a><?php endif; ?>
</div>
<?php endforeach; endif; ?>
現在轉到themes -> modules ->new module
並創建一個新的模塊。我假設你已經按照該鏈接中關於如何將模塊添加到模塊列表的說明進行操作。假設你添加到其他組,選擇你的模塊。你會看到一個標籤爲'linkToDetail'的頁面選擇器。選擇您在開始時創建的詳細信息頁面。
轉到articles -> listPage -> new
選擇'模塊'作爲元素類型,並選擇您的列表模塊以上。我們在這裏很好。預覽你的頁面,你應該很好。
現在讓我們建立detailsModule,並把它添加到detailsPage
- 按照細節模塊的
compile
函數只以上所有步驟,您將選擇相關內容作爲follows``
$objItemDetails = $this->Database->execute("SELECT * FROM my_custom_table where id=".\Input::get('itemId'));
步驟7,8和9是相同的。
這將有助於在詳細信息頁面在ID時間更改的情況下。它使它足夠動態。
希望這會有所幫助
非常好。非常感謝。 – Michel