首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用typoscript设置模板

使用typoscript设置模板
EN

Stack Overflow用户
提问于 2013-01-29 21:47:07
回答 2查看 745关注 0票数 0

可以用typoscript设置页面的模板吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 23:04:28

看看TemplaVoila是如何配置页面的:

代码语言:javascript
复制
page = PAGE
page.typeNum = 0
page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page
page.shortcutIcon = {$faviconPath}

它们通过page.userFunc调用类tx_templavoila_pi1main_page函数:

代码语言:javascript
复制
/**
 * Main function for rendering of Page Templates of TemplaVoila
 *
 * @param   string      Standard content input. Ignore.
 * @param   array       TypoScript array for the plugin.
 * @return  string      HTML content for the Page Template elements.
 */
function main_page($content,$conf)    {
    $this->initVars($conf);

        // Current page record which we MIGHT manipulate a little:
    $pageRecord = $GLOBALS['TSFE']->page;

        // Find DS and Template in root line IF there is no Data Structure set for the current page:
    if (!$pageRecord['tx_templavoila_ds'])  {
        foreach($GLOBALS['TSFE']->tmpl->rootLine as $pRec)  {
            if ($pageRecord['uid'] != $pRec['uid']) {
                if ($pRec['tx_templavoila_next_ds'])    {   // If there is a next-level DS:
                    $pageRecord['tx_templavoila_ds'] = $pRec['tx_templavoila_next_ds'];
                    $pageRecord['tx_templavoila_to'] = $pRec['tx_templavoila_next_to'];
                } elseif ($pRec['tx_templavoila_ds'])   {   // Otherwise try the NORMAL DS:
                    $pageRecord['tx_templavoila_ds'] = $pRec['tx_templavoila_ds'];
                    $pageRecord['tx_templavoila_to'] = $pRec['tx_templavoila_to'];
                }
            } else break;
        }
    }

        // "Show content from this page instead" support. Note: using current DS/TO!
    if ($pageRecord['content_from_pid']) {
        $ds = $pageRecord['tx_templavoila_ds'];
        $to = $pageRecord['tx_templavoila_to'];
        $pageRecord = $GLOBALS['TSFE']->sys_page->getPage($pageRecord['content_from_pid']);
        $pageRecord['tx_templavoila_ds'] = $ds;
        $pageRecord['tx_templavoila_to'] = $to;
    }

    return $this->renderElement($pageRecord, 'pages');
}

此函数检查当前页面或通过根目录(TSFE)搜索已配置的页面模板。这个脚本根本不检查任何TypoScript设置,所以我想现在TemplaVoila还不支持它。

用一个可以检查一些TypoScript设置的自定义函数来扩展这个类应该不会太难。

票数 0
EN

Stack Overflow用户

发布于 2014-10-09 16:10:21

我已经解决了这个问题:

代码语言:javascript
复制
includeLibs.lang = fileadmin/user_tvtest.php

page.1 = USER_INT
page.1.userFunc = user_tvtest->main

page.10 = USER_INT
page.10.userFunc = tx_templavoila_pi1->main_page
page.10.disableExplosivePreview = 1

在fileadmin/user_tvtest.php中:

代码语言:javascript
复制
class user_tvtest
{

    function main($content, $conf)
    {

        if (is_mobile()) 
        {

            $GLOBALS['TSFE']->page['tx_templavoila_to'] = 7;
            //$GLOBALS['TSFE']->page['tx_templavoila_ds'] = 7;

        }

    }

}

http://daschmi.de/templavoila-template-domainbezogen-umschalten-gleicher-seitenbaum/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14584472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档