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

Вернуться   Russian TYPO3 community > Тематические форумы > Разработка расширений / TYPO3 extension development

Ответ
 
Опции темы Опции просмотра
Старый 11.07.2013, 17:36   #1
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

В общем 2-проблема в том, что у меня:

cHash - скрывается realurl...
Первый раз я получаю страницу с этим cHash...
А потом без - т.к. он прячется и не могу понять этот механизм.

Ведь URL-адрес один и тот же...
А вот внутренние переменные уже другие.
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Старый 11.07.2013, 18:31   #2
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Вот еще интересная штука из API

tslib_fe :: pageNotFoundHandler("/home/", "HTTP/1.1 404 Not Found", "Segment "error-404" was not a keyword for a postVarSet as expected on page with id=2.");
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Старый 11.07.2013, 18:41   #3
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

У вас есть какая-то принципиальная нестыковка, на мой взгляд.

cHash нужен ядру что бы *закэшировать* контент страницы и он появляется только в момент формирования typolink.

То есть ваш контент будет кэширован ядром в составе страницы с привязкой к этому самому cHash.

Зачем спрашивается внутри вашей логики что-то еще в таком случае кэшировать (и с привязкой к cHash в частности) ?

Мы используем кэширование внутри плагина только в случае USER_INT. И в данном случае cHash вообще не интересен. Используем для cache_id md5() от всего, что может повлиять на контент. Это pid, type, FE группы, ряд переменных из GET, а иногда и $this->conf целиком добавляется.
dmartynenko вне форума   Ответить с цитированием
Старый 11.07.2013, 19:51   #4
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
У вас есть какая-то принципиальная нестыковка, на мой взгляд.

cHash нужен ядру что бы *закэшировать* контент страницы и он появляется только в момент формирования typolink.

То есть ваш контент будет кэширован ядром в составе страницы с привязкой к этому самому cHash.

Зачем спрашивается внутри вашей логики что-то еще в таком случае кэшировать (и с привязкой к cHash в частности) ?

Мы используем кэширование внутри плагина только в случае USER_INT. И в данном случае cHash вообще не интересен. Используем для cache_id md5() от всего, что может повлиять на контент. Это pid, type, FE группы, ряд переменных из GET, а иногда и $this->conf целиком добавляется.
Да - Вы правы - ничего не пропадает...
Проблему нашел:

Есть у меня на странице LOAD_REGISTER
Суть его в том, что он выбирает ключевые слова для новости...
PHP код:

        page.1 
LOAD_REGISTER
    
        
# Ключевые слова
        
page.1.new_keywords.cObject  TEXT
        page.1
.new_keywords.cObject.dataWrap DB:tt_content_news:{GP:tt_content_news|view_detail_record}:seo_keywords
        page.1
.new_keywords.cObject.insertData 1
        page.1
.new_keywords.cObject.wrap3 = {|} 
На странице установлен:

PHP код:
$GLOBALS['TSFE']->no_cache 1// запрет кэширования (1)
$GLOBALS['TSFE']->set_no_cache(); // запрещяем кэширование (2) 
И проблема в том - что при заходе первый раз на страницу я получаю значения из LOAD_REGISTER - все работает верно... Но вот как - только я обновляю страницу... То LOAD_REGISTER - как бы становиться пустым...

PHP код:

        
# Переопределяем заголовок
    
page.headerData.100.value (
        
        <
meta name="keywords" content="{register:new_keywords //  DB:tx_web_settings:1:seo_meta_def_keywords}"
        <
meta name="description" content="{register:new_description //  DB:tx_web_settings:1:seo_meta_def_description}"
        <
title>{register:new_title //field:subtitle // field:title} :: {DB:tx_web_settings:1:site_name}</title>
            
    


С удовольствием бы решил проблему следующим образом (т.к. мне не нравиться LOAD_REGISTER в принципе)...

PHP код:
{DB:tt_content_news:[{GP:tt_content_news|view_detail_record}]:title
Т.е. через вставку ID-записи из _GET - но как такое сделать для DB-не нашел... В DB-можно передать просто ID-записи , а вот подставить из _GET - не нашел такого решения...
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Старый 11.07.2013, 20:02   #5
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Вот полный код:

PHP код:
#*******************************************************************
#    Данный файл содержит описание настроек seo-материала для виртуальных страниц
#*******************************************************************

# Определяем мета-данные для новостей (раздел 95)
[globalVar GP:tt_content_news|view_detail_record 0]
    
    
# Создаем новое значение
    
page.1 LOAD_REGISTER
    
        
# Ключевые слова
        
page.1.new_keywords.cObject  TEXT
        page.1
.new_keywords.cObject.dataWrap DB:tt_content_news:{GP:tt_content_news|view_detail_record}:seo_keywords
        page.1
.new_keywords.cObject.insertData 1
        page.1
.new_keywords.cObject.wrap3 = {|}

        
# Описание страницы
        
page.1.new_description.cObject  TEXT
        page.1
.new_description.cObject.dataWrap DB:tt_content_news:{GP:tt_content_news|view_detail_record}:seo_description
        page.1
.new_description.cObject.insertData 1
        page.1
.new_description.cObject.wrap3 = {|}

        
# Заголовок
        
page.1.new_title.cObject  TEXT
        page.1
.new_title.cObject.dataWrap DB:tt_content_news:{GP:tt_content_news|view_detail_record}:title
        page.1
.new_title.cObject.insertData 1
        page.1
.new_title.cObject.wrap3 = {|}
        
    
# Переопределяем заголовок
    
page.headerData.100.value (
        
        <
meta name="keywords" content="{register:new_keywords //  DB:tx_web_settings:1:seo_meta_def_keywords}"
        <
meta name="description" content="{register:new_description //  DB:tx_web_settings:1:seo_meta_def_description}"
        <
title>{register:new_title //field:subtitle // field:title} :: {DB:tx_web_settings:1:site_name}</title>
            
    

        
[global]

# Определяем мета-данные для статей (раздел 94)
[globalVar GP:tt_content_article|view_detail_record 0]
    
    
# Создаем новое значение
    
page.1 LOAD_REGISTER
    
        
# Ключевые слова
        
page.1.new_keywords.cObject  TEXT
        page.1
.new_keywords.cObject.dataWrap DB:tt_content_article:{GP:tt_content_article|view_detail_record}:seo_keywords
        page.1
.new_keywords.cObject.insertData 1
        page.1
.new_keywords.cObject.wrap3 = {|}

        
# Описание страницы
        
page.1.new_description.cObject  TEXT
        page.1
.new_description.cObject.dataWrap DB:tt_content_article:{GP:tt_content_article|view_detail_record}:seo_description
        page.1
.new_description.cObject.insertData 1
        page.1
.new_description.cObject.wrap3 = {|}

        
# Заголовок
        
page.1.new_title.cObject  TEXT
        page.1
.new_title.cObject.dataWrap DB:tt_content_article:{GP:tt_content_article|view_detail_record}:title
        page.1
.new_title.cObject.insertData 1
        page.1
.new_title.cObject.wrap3 = {|}
        
    
# Переопределяем заголовок
    
page.headerData.100.value (
        
        <
meta name="keywords" content="{register:new_keywords //  DB:tx_web_settings:1:seo_meta_def_keywords}"
        <
meta name="description" content="{register:new_description //  DB:tx_web_settings:1:seo_meta_def_description}"
        <
title>{register:new_title //field:subtitle // field:title} :: {DB:tx_web_settings:1:site_name}</title>
            
    

        
[global]

# Определяем мета-данные для фотогаллереи (раздел 97)
[globalVar GP:tt_content_gallery|directory_uid 0]
    
    
# Создаем новое значение
    
page.1 LOAD_REGISTER
    
        
# Ключевые слова
        
page.1.new_keywords.cObject  TEXT
        page.1
.new_keywords.cObject.dataWrap DB:tt_content_gallery:{GP:tt_content_gallery|directory_uid}:seo_keywords
        page.1
.new_keywords.cObject.insertData 1
        page.1
.new_keywords.cObject.wrap3 = {|}

        
# Описание страницы
        
page.1.new_description.cObject  TEXT
        page.1
.new_description.cObject.dataWrap DB:tt_content_gallery:{GP:tt_content_gallery|directory_uid}:seo_description
        page.1
.new_description.cObject.insertData 1
        page.1
.new_description.cObject.wrap3 = {|}

        
# Заголовок
        
page.1.new_title.cObject  TEXT
        page.1
.new_title.cObject.dataWrap DB:tt_content_gallery:{GP:tt_content_gallery|directory_uid}:title
        page.1
.new_title.cObject.insertData 1
        page.1
.new_title.cObject.wrap3 = {|}
        
    
# Переопределяем заголовок
    
page.headerData.100.value (
        
        <
meta name="keywords" content="{register:new_keywords //  DB:tx_web_settings:1:seo_meta_def_keywords}"
        <
meta name="description" content="{register:new_description //  DB:tx_web_settings:1:seo_meta_def_description}"
        <
title>{register:new_title //field:subtitle // field:title} :: {DB:tx_web_settings:1:site_name}</title>
            
    

        
[global]

    
# Значения по умолчанию (если все выше описанное оказалось пыстым)
    #page.meta.keywords.ifEmpty.data = DB:tx_web_settings:1:seo_meta_def_keywords
    #page.meta.description.ifEmpty.data = DB:tx_web_settings:1:seo_meta_def_description 
И почему-то при обновлении станицы которая не кэшуреутся этот самый LOAD_REGISTER - становится пустым...

Извиняюсь за не точность - в данном примере ничего не пропадает...
Пропадает в навигационной цепочке - при повторном посещении некэшируемой страницы...
Где идет вставка значения через {register:new_title}

Видимо {register} - имеет область видимости переменных...


PHP код:
# Определяем нав.цепочку для новостей, детальный просмотр (раздел 95)
            
[globalVar GP:tt_content_news|view_detail_record 0]
                
                
lib.menuBreadcrumb.10.1.CUR >
                
lib.menuBreadcrumb.30 TEXT
                lib
.menuBreadcrumb.30.value = {register:new_title}
                
lib.menuBreadcrumb.30.insertData 1
                lib
.menuBreadcrumb.30.typolink 
                
                    
parameter 95
                    additionalParams
=&tt_content_news[page]={GP:tt_content_news|page}&tt_content_news[view_detail_record]={GP:tt_content_news|view_detail_record}
                    
additionalParams.insertData 1
                    useCacheHash 
1
                
                
}
                
            [global] 
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Старый 11.07.2013, 20:17   #6
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Одним словом уже запутался крепко...

Ни как не пойму - есть ли простой способ?
PHP код:
page.meta.keywords.data DB:ttable:[Вставить id из _GET]:seo_meta_def_keywords 

Одним словом есть ли что по проще чем:
PHP код:
temp.newsTitle RECORDS
temp
.newsTitle {
  
dontCheckPid 1
        tables 
tx_news_domain_model_news
        source
.data GP:tx_news_pi1|news
        source
.intval 1
        conf
.tx_news_domain_model_news TEXT
        conf
.tx_news_domain_model_news {
            
field title
            htmlSpecialChars 
1
        
}
        
wrap = <title>|</title>
}
page.headerData.1 >
page.headerData.1 temp.newsTitle 
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Старый 11.07.2013, 20:40   #7
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

Вот что получается:

Проверяю в index.php (вставляю в самый конец)...

Если на странице через php-ставить no_cahe = 1 и no_set_cache()

PHP код:
print "<pre>";
print_r($GLOBALS['TSFE']->register); 
То при обновлении страницы часть значений из данного массива пропадает


Если поставить в настройках TS-к странице
page.config.no_cache = 1

То все значения на месте

PHP код:
[php]print "<pre>";
print_r($GLOBALS['TSFE']->register); 
[/php]
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Старый 11.07.2013, 21:22   #8
Ивано++
Senior Member
 
Аватар для Ивано++
 
Регистрация: 18.01.2013
Адрес: Russia , Moscow
Сообщений: 796
По умолчанию

В общемь... (нет слов)...
Разобрался...

Сделал просто LOAD_REGISTER - отдельно для breadcurmb...
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Ответ


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

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

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


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


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

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