Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Обсуждение общих технических вопросов > Общие вопросы

Ответ
 
Опции темы Опции просмотра
Старый 22.08.2012, 12:55   #1
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Ну так как все таки формируете URL? Приведите код.
Просто если ваш плагин кэшируемый и вы формируете URL корректно через typolink, то к URL добавляется параметр cHash. Он позволяет кэшировать содержание страницы по URL, с учетом разных параметров.
Подробнее http://typo3.org/documentation/artic...ies-of-chash-1
Кстати при использовании RealURL cHash в ссылке не виден, но он есть.

Если вы формируете URL как-то сами минуя typolink (то есть там нет cHash), то ваш плагин будет работать нормально только если будет не кэшируемым (USER_INT). Иначе механизм кэширования TYPO3 будет вам "мешать".
спасибо, покурю доки в этом направлении
на данный момент линк формируется вручную так
Код:
$urlA = $this->pi_getPageLink($pageId).'\gallery\'.$gallery['alias'];

$urlP = $this->pi_getPageLink($pageId).'\page\'.$page;
Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Что касается условия, такой вариант пробовали?
Код:
plugin.tx_3tgallery_pi1.mode = GALERY
# если 3t_gallery[gallery] не задан, то показываем список
[globalVar = GP:3t_gallery|gallery = ]
plugin.tx_3tgallery_pi1.mode = LISTING
[GLOBAL]
не пробовал, спасибо за совет(ценно для саморазвития) но пока решил оставить рутинг режима на РНР

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Посмотри TSRef, в TS нет закрывающего тэга [end], есть тэг перехода в область глобальной видимости [GLOBAL]
информацию брал из доков typo3
Doc Core TS
Цитата:
So in this example the line “[GLOBAL]” is a condition (built-in, always returns true) and the line “[ condition 1 ][ condition 2]” is a condition. If “[ condition 1 ][ condition 2]” is true then the TypoScript in the middle would be parsed until [GLOBAL] (or [END]) resets the conditions and parses the TypoScript for any case again.
Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Еще дополню касательно условия в TS. Каждое TS условие создает в кэше страниц отдельную, так сказать, ветку кэша. Если сайт большой и страниц много, то кэш может сильно разрастаться. Поэтому я лично предпочитаю делать переключение режима плагина по условия вида "есть 3t_gallery[gallery]" в коде самого экста.
так и сделал пока
3ton вне форума   Ответить с цитированием
Старый 22.08.2012, 13:05   #2
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Ссылки вам нужно формировать так:

Код:
$urlA = $this->pi_getPageLink($pageId, '', array($this->prefixId => array('gallery' => $gallery_id)));
$urlP = $this->pi_getPageLink($pageId, '', array($this->prefixId => array('page' => $page_id)))
Тут предполагается что $this->prefixId у вас задан как 3t_gallery. Хотя обычно, после кикстартера и по хорошему тону TYPO3, он вида tx_3tgallery_pi1.

Ну а что-бы такие URL стали "красивыми", то нужен конфиг для RealURL. Хотя полагаю у вас он уже есть, ведь вы как-то получаете из красивого URL обратно 3t_gallery[gallery].
dmartynenko вне форума   Ответить с цитированием
Старый 22.08.2012, 13:18   #3
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Ссылки вам нужно формировать так:

Код:
$urlA = $this->pi_getPageLink($pageId, '', array($this->prefixId => array('gallery' => $gallery_id)));
$urlP = $this->pi_getPageLink($pageId, '', array($this->prefixId => array('page' => $page_id)))
спасибо, попробую... это решит проблемы с кешированием содержимого эксетншена подключенного через тупоскрипт???

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Тут предполагается что $this->prefixId у вас задан как 3t_gallery. Хотя обычно, после кикстартера и по хорошему тону TYPO3, он вида tx_3tgallery_pi1.

Ну а что-бы такие URL стали "красивыми", то нужен конфиг для RealURL. Хотя полагаю у вас он уже есть, ведь вы как-то получаете из красивого URL обратно 3t_gallery[gallery].
они описаны, но только в разделе postVarSets

Код:
    
'postVarSets' => array(
      '_DEFAULT' => array(
        'page' => array(
          array(
            'GETvar' => 'page'
          )
        ),
        'gallery' => array(
          array(
            'GETvar' => '3t_gallery[gallery]'
          )
        ),
      )
    ),
3ton вне форума   Ответить с цитированием
Старый 22.08.2012, 13:38   #4
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Решит, только если у вас в эксте прописано $this->pi_USER_INT_obj = 0. Я вас спрашивал что у вас с этим параметром, вы не ответили.

Что касается page, то в предложеном мной варианте нужно в конфиге RealURL сделать так:

Код:
'page' => array(
  array(
    'GETvar' => '3t_gallery[page]'
  )
),
Если не хотите для RealURL менять, то тогда ссылку сделайте так
Код:
$urlP = $this->pi_getPageLink($pageId, '', array('page' => $page_id));
Короче одно другому должно соответствовать.
dmartynenko вне форума   Ответить с цитированием
Старый 22.08.2012, 14:21   #5
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Решит, только если у вас в эксте прописано $this->pi_USER_INT_obj = 0. Я вас спрашивал что у вас с этим параметром, вы не ответили.
а где его глянуть???
это имеется ввиду???
Код:
t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.tx_3tgallery_pi1.php', '_pi1', 'list_type', 0);
Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Что касается page, то в предложеном мной варианте нужно в конфиге RealURL сделать так:

Код:
'page' => array(
  array(
    'GETvar' => '3t_gallery[page]'
  )
),
Если не хотите для RealURL менять, то тогда ссылку сделайте так
Код:
$urlP = $this->pi_getPageLink($pageId, '', array('page' => $page_id));
Короче одно другому должно соответствовать.
скорее второй вариант использую, так как страница должна быть доступна для/из любого расширения
3ton вне форума   Ответить с цитированием
Старый 22.08.2012, 14:30   #6
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от 3ton Посмотреть сообщение
а где его глянуть???
это имеется ввиду???
В PHP коде вашего экста, в основном классе плагина, в функции main()
В том же коде у у вас $this->pi_getPageLink, "$this" на это намекает

Цитата:
Сообщение от 3ton Посмотреть сообщение
скорее второй вариант использую, так как страница должна быть доступна для/из любого расширения
Ну как сказать. Чаще наоборот пагинация не должна влиять на другие плагины. Например у вас есть основной список "новостей" и в правой колонке какие-то "топ 10" по популярности. Если вы перейдете в основном списке на 2-ю, то "топ 10" обычно не должен стать "топ с 10 по 20".
dmartynenko вне форума   Ответить с цитированием
Старый 22.08.2012, 15:13   #7
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Ну как сказать. Чаще наоборот пагинация не должна влиять на другие плагины. Например у вас есть основной список "новостей" и в правой колонке какие-то "топ 10" по популярности. Если вы перейдете в основном списке на 2-ю, то "топ 10" обычно не должен стать "топ с 10 по 20".
я исхожу из другой ситуации

мне необходимо сделать такую переменной доступно на любой страница сайта в нескольких расширениях

либо я описываю для каждой страницы ее синтаксис (а их около 5 сотен)
либо я добавляю ее в том виде как использую сейчас и пользуюсь на здоровье
а наличие(отображение) пагинации у меня определяется в PHP/template
поэтому в обычном листинге оно будет, а в топе - не будет
3ton вне форума   Ответить с цитированием
Старый 22.08.2012, 15:19   #8
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Решит, только если у вас в эксте прописано $this->pi_USER_INT_obj = 0. Я вас спрашивал что у вас с этим параметром, вы не ответили.
спасибо, помогло!
то что доктор прописал...

куда пиво высылать?
3ton вне форума   Ответить с цитированием
Старый 22.08.2012, 16:02   #9
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Спасибо, уже не пью

Для лучшего понимания для чего нужен $this->pi_USER_INT_obj посмотрите код pi_getPageLink() и тех функций что она вызывает (в конечном итоге всегда используется typolink).

У вас кстати изначально плагин был создан как USER_INT. На это указывает ... 'list_type', 0); и $this->pi_USER_INT_obj = 1.
Первое приведет к тому, что контент вашего плагина кэшироваться не будет.

Если вам нужен кэшируемый плагин, то поменяйте в ext_localconf.php 0 на 1 (то есть будет ...'list_type', 1); ).
Либо в TS шаблоне явно укажите, что
Код:
plugin.tx_3tgallery_pi1 = USER
dmartynenko вне форума   Ответить с цитированием
Старый 22.08.2012, 16:36   #10
3ton
Senior Member
 
Регистрация: 25.12.2009
Сообщений: 106
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Спасибо, уже не пью

Для лучшего понимания для чего нужен $this->pi_USER_INT_obj посмотрите код pi_getPageLink() и тех функций что она вызывает (в конечном итоге всегда используется typolink).

У вас кстати изначально плагин был создан как USER_INT. На это указывает ... 'list_type', 0); и $this->pi_USER_INT_obj = 1.
Первое приведет к тому, что контент вашего плагина кэшироваться не будет.

Если вам нужен кэшируемый плагин, то поменяйте в ext_localconf.php 0 на 1 (то есть будет ...'list_type', 1); ).
Либо в TS шаблоне явно укажите, что
Код:
plugin.tx_3tgallery_pi1 = USER
про 'list_type', 0); я был в курсе и удивился когда в тупоскрипте это не сработало, а вот про $this->pi_USER_INT_obj = 1 не слышал

кстати последний вариант с
Код:
plugin.tx_3tgallery_pi1 = USER
думаю все же правильнее, потому как бывает что расширение должно возвращать и статичный контент, в таком случае лучше это управлять при выводе в TS, а не настраивать расширение на обязаловку
3ton вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кэширование расширения (4 варианта: кэшировать, не кэшировать, управлять, по времени. Ивано Разработка расширений / TYPO3 extension development 15 24.02.2013 00:30
не устанавливаются расширения YurLu Разработка расширений / TYPO3 extension development 10 06.05.2012 11:03
Не загружаются расширения SergeyS Общие вопросы 2 05.05.2011 13:42
Установка расширения Seminar Manager ddt Общие вопросы 11 14.10.2009 16:42
Как правильно выставить документацию для расширения? KortS Организационные вопросы и встречи TUG 0 30.03.2005 17:31


Часовой пояс GMT +4, время: 12:28.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория