Позиция плагина TYPO3

Как я могу программно определить позицию плагина на странице? Предполагая, что у меня есть два экземпляра одного и того же плагина на странице, мне нужно определить их положение, чтобы отобразить немного другой макет. Возможно ли это?

Спасибо!


person Jacek Francuz    schedule 19.11.2011    source источник
comment
Что вы имеете в виду под положением? Координаты X, Y в окне браузера клиента? Или порядок появления в HTML-коде (какой экземпляр плагина идет первым/вторым)?   -  person Jpsy    schedule 02.12.2011
comment
2-й вариант. Извините за неточность.   -  person Jacek Francuz    schedule 06.12.2011


Ответы (2)


Пусть ваше расширение хранит переменную-счетчик в $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;
}
person Jpsy    schedule 06.12.2011

Используйте рамки разделов:

  • Отредактируйте элемент содержимого, в который вы поместили свой плагин.
  • Перейти к внешнему виду
  • Выберите «Кадр 1» в «Отступы и рамки».

Во внешнем интерфейсе вы увидите, что модифицированный контейнер плагина теперь имеет дополнительный класс css, который можно использовать для другого макета:

<div class="csc-frame csc-frame-frame1" id="c123">

Подробнее об этом читайте здесь: Пользовательские фреймы для Элементы контента в Typo3

person Mateng    schedule 19.11.2011