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

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

Ответ
 
Опции темы Опции просмотра
Старый 12.08.2008, 15:10   #1
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию [TS/PHP] LOAD_REGISTER = переменная ? Пример выборки списка системных страниц.

Код:
includeLibs.myFunc = path/to/your/func.php

page.1 = LOAD_REGISTER
page.1{
  storage_pids.cObject = USER
  storage_pids.cObject{
    userFunc = user_func->getCurrentSysFolders
  }
}

page.5 = TEXT
page.5.data = register:storage_pids

page.10 = TEXT
page.10.value = <br /><br />

page.15 = TEXT
page.15.dataWrap = <b>{register:storage_pids}</b>
PHP код:
class user_func{

    
/*
     
    return all child pages with doktype=254, not hidden and not deleted
    
    */ 
    
function getCurrentSysFolders(){
        global 
$TSFE;
        
$res $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','pages','pid='.$TSFE->id.' AND doktype=254 AND deleted=0 AND hidden=0','','','');

        
$i 0;
        while(
$row $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
            if(
$i 0$result .= ",";
            
$result .= $row['uid'];
            
$i++;
        }
        return 
$result;
    }



Вывод данного сниппета при результате метода getCurrentSysFolders = "7,15,28"

Будет

Код:
7,15,28

7,15,28

Последний раз редактировалось Sergey M Nikitin; 21.09.2009 в 10:40
Sergey M Nikitin вне форума   Ответить с цитированием
Старый 12.08.2008, 15:42   #2
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

А зачем так сложно? По-моему, можно обойтись средствами TypoScript... Есть CONTENT.... table = pages никто не запрещает сделать.

Я не прав?
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 12.08.2008, 15:46   #3
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию К сожалению не прав.

Если внимательно посмотрите код (tslib/cObj), то увидите, что для таблиц page с doktype<200 выборка CONTENT'ом не производиться, у системных страниц doktype=254, отсюда и вся сложность.
Sergey M Nikitin вне форума   Ответить с цитированием
Старый 12.08.2008, 17:09   #4
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Цитата:
Сообщение от nikitinsm Посмотреть сообщение
Если внимательно посмотрите код (tslib/cObj), то увидите, что для таблиц page с doktype<200 выборка CONTENT'ом не производиться, у системных страниц doktype=254, отсюда и вся сложность.
Зная SQL никто не запретит делать все что хочешь:
Следующий код выбирает ВСЕ подстраницы с pid 1.
И даже удаленные! (для пущего эффекта, "не повторяйте это дома")

Код:
5 = CONTENT
5 {
  table = pages
  select.uidInList = 1
  select.pidInList = 0
  select.leftjoin = pages as pp on pages.uid = pp.pid
  select.selectFields = pp.*
  renderObj = TEXT
  renderObj.value = {field:title}({field:uid}) - {field:doktype}
  renderObj.insertData = 1  
  renderObj.wrap = [|]<br />
}
Я думаю нет проблем сделать все что угодно на чистом TypoScript.
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/

Последний раз редактировалось Pavel Antonov; 12.08.2008 в 17:50
Pavel Antonov вне форума   Ответить с цитированием
Старый 03.07.2013, 19:30   #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]

    
# Значения по умолчанию (если все выше описанное оказалось пыстым)
    #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 
__________________
Иван Литовченко
http://iv-litovchenko.ru/
Ивано++ вне форума   Ответить с цитированием
Ответ


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

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

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


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


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

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