【发布时间】:2011-11-19 12:16:35
【问题描述】:
如何以编程方式确定插件在页面上的位置?假设我在一个页面上有两个相同插件的实例,我需要确定它们的位置以显示略有不同的布局。可行吗?
谢谢!
【问题讨论】:
-
“位置”是什么意思?客户端浏览器窗口中的 X,Y 坐标?还是 HTML 代码中出现的顺序(哪个插件实例先/后出现)?
-
第二个选项。抱歉不准确。
如何以编程方式确定插件在页面上的位置?假设我在一个页面上有两个相同插件的实例,我需要确定它们的位置以显示略有不同的布局。可行吗?
谢谢!
【问题讨论】:
让您的扩展程序在 $TSFE 中存储一个计数器变量。
此类变量将在插件实例之间存在,并可用于计算存在于同一页面中的实例。
根据该计数器,您可以更改扩展程序的输出。
示例
在你的函数 main 中做这样的事情:
// init counter var in the very first plugin instance
if(!isset($GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_'.$this->extKey.'_pi1.']['myCounter'])){
$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_'.$this->extKey.'_pi1.']['myCounter'] = 0;
}
// increment counter var in each plugin instance
// and execute code depending on the count
switch(++$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_'.$this->extKey.'_pi1.']['myCounter']){
case 1:
...
break;
case 2:
...
break;
case 3:
...
break;
}
【讨论】:
使用剖面框架:
在前端你会发现修改后的插件容器现在有一个额外的 css 类,可以用于不同的布局:
<div class="csc-frame csc-frame-frame1" id="c123">
【讨论】: