Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Мастер-класс (http://forum.typo3.ru/forumdisplay.php?f=41)
-   -   [TS/PHP] LOAD_REGISTER = переменная ? Пример выборки списка системных страниц. (http://forum.typo3.ru/showthread.php?t=6656)

Sergey M Nikitin 12.08.2008 15:10

[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


Pavel Antonov 12.08.2008 15:42

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

Я не прав?

Sergey M Nikitin 12.08.2008 15:46

К сожалению не прав.
 
Если внимательно посмотрите код (tslib/cObj), то увидите, что для таблиц page с doktype<200 выборка CONTENT'ом не производиться, у системных страниц doktype=254, отсюда и вся сложность.

Pavel Antonov 12.08.2008 17:09

Цитата:

Сообщение от nikitinsm (Сообщение 20880)
Если внимательно посмотрите код (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.

Ивано++ 03.07.2013 19:30

Очень помогло:

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 



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

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