Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Инструменты разработчика (http://forum.typo3.ru/forumdisplay.php?f=34)
-   -   TS-Извлечь родителей раздела для нав.цепочки... (http://forum.typo3.ru/showthread.php?t=10890)

Ивано++ 21.08.2013 09:57

TS-Извлечь родителей раздела для нав.цепочки...
 
Добрый день.

Одно время пробовал сделать следующее...
Есть стрктура разделов на базе таблицы "X".

Раздел 1 >> Раздел 2 >> Раздел 3 >> Раздел 4
По ссылке /category-4/ - мы находимся в разделе 4.

И суть TS-что бы выбрать всех родителей Раздела 4...
Для создания нав.цепочки.

Пробовал как-то сделать это на TS - но чесно не получилось...
Т.к. мало извлечь родителей - нужно еще их последовательность как-то развернуть (порядок следования) развернуть.

Необходимость данного скрипта вызвана тем, что бы не создавать PHP-файл со скриптом наполнения массива для MENU itemProcFunc... А делать это все на TS.

PHP код:

lib.otherContent CONTENT
lib
.otherContent {
  
table tx_catalog_auto
  select 
{
    
pidInList 340
    
#orderBy = sorting
    
where uid 84
    
#andWhere =  uid = {REGISTER:param}
    #andWhere.insertData = 1
  
    #languageField = sys_language_uid
  
}

  
renderObj COA
  renderObj 
{
        
10 LOAD_REGISTER
        10 
{
            
            
NextUid.cObject TEXT
            NextUid
.cObject.field pelem
            NextUid
.cObject.insertData 1
            
        

        
        
#Уровень №5
        
20 TEXT
        20 
{
            
insertData 1        
            field 
title
            wrap 
=  <b> | {register:Counter}. </b><br/> > 
        }  
        
        
#Уровень №4
        
30 lib.otherContent
        30.select
.where uid = {register:NextUid}
        
30.select.where.insertData 
        
        
#Уровень №3
        
50 lib.otherContent
        50.select
.where uid = {register:NextUid}
        
50.select.where.insertData 1
        
        
#Уровень №2
        
70 lib.otherContent
        70.select
.where uid = {register:NextUid}
        
70.select.where.insertData 1
        
        
#Уровень №1
        
80 lib.otherContent
        80.select
.where uid = {register:NextUid}
        
80.select.where.insertData 1
        
        
            
  

}


#Уровень 1
lib.otherContent2 COA
lib
.otherContent2.10 lib.otherContent
lib
.otherContent2.20 TEXT
lib
.otherContent2.20.value = {register:level_5_uid}
lib.otherContent2.20.insertData 

Может кто-то такое делал...


--
Иван.

dmartynenko 21.08.2013 13:20

HMENU.special=rootline не то же самое, что вам нужно, делает?
http://typo3.org/documentation/snippets/sd/23/

Ивано++ 21.08.2013 13:37

Цитата:

Сообщение от dmartynenko (Сообщение 37087)
HMENU.special=rootline не то же самое, что вам нужно, делает?
http://typo3.org/documentation/snippets/sd/23/

Так это же по идее только для таблицы pages?

dmartynenko 21.08.2013 13:40

Согласен, не внимательно прочитал ваш пост.

Ивано++ 21.08.2013 14:22

Вот не знаю насколько это реально - но уже давно в идее...
Есть такое:

сделать hook (даже не hook а полный клон) - с cobj MENU /HMENU/TMEMU (вот этот замечательный класс class.tslib_menu.php) -
и назвать его HMENU2 TMENU2 - лишь с той раздницей...

что можно будет указывать название таблицы...
но не знаю насколько тогда данная табшица по колонкам и TCA ctrl должна быть = TCA ctrl pages...

Этакая виртуальная страничка...
В репозитории на эту тему даже есть расширение "nsb_cat2menu" - но это не полноценный аналог объекта HMENU - он может только выбрать через функцию API-TYPO3... И все...

И что дико не удобно в TMENU - объекте - это то, что есть excludeUidList - и нет ему противоположного includeOnlyUidList

Не знаю правда что из - этого выйдет...

Ивано++ 21.08.2013 14:33

Посмотрел - class.tslib_menu.php

К сожалению так не пройдет...
С ним с этим классом - там слишком много всего, что заточено под именно pages ...

dmartynenko 21.08.2013 14:45

Задача то тривиальная если смотреть просто как на выборку родительских записей. А в меню по страницам столько всего учитывается... ссылки, точки монтирования, права доступа и т.п.

Сделайте свой сObject и запилите там выборку :)

По идее, нужно только настроить задание в каком поле храниться uid родителя. И это точно не поле pid, потому что оно "page id", а не "parent id". Хотя для таблицы pages получается и то и другое одновременно.

Ивано++ 21.08.2013 15:23

Цитата:

Сообщение от dmartynenko (Сообщение 37095)
Задача то тривиальная если смотреть просто как на выборку родительских записей. А в меню по страницам столько всего учитывается... ссылки, точки монтирования, права доступа и т.п.

Сделайте свой сObject и запилите там выборку :)

По идее, нужно только настроить задание в каком поле храниться uid родителя. И это точно не поле pid, потому что оно "page id", а не "parent id". Хотя для таблицы pages получается и то и другое одновременно.

В общем пока оставлю эту затею...


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

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