Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   вывод картинок других страниц (http://forum.typo3.ru/showthread.php?t=7858)

GAZok 15.07.2009 19:57

вывод картинок других страниц
 
есть задача: вывести на одной странице картинки нескольких других страниц.

предположительно, думаю, картинки должны добавляться в поле "Files" и потом выводиться при помощи подобного кода:
Код:

subparts.header_img = IMAGE
subparts.header_img.file {
import.data = levelmedia: -1,slide
import = uploads/media/
import.listNum = 1
}

но в нем как то указывать ID необходимых страниц

реально ли это?
и нету ли какого то другого более удобного способа?


сразу задам другой вопрос, который меня давно беспокоит. В выше описанном коде используется параметр import.listNum = 1 для указания позиции картинки среди закачанных. по моему это не очень удобно и возможно в некоторых случаях даже и плохо. что если для некоторых страниц не нужно закачивать картинку 0 но нужно закачивать 1. тогда теряется порядок и код не сработает. есть какое либо решение данной не оптимальности?

Sergey M Nikitin 16.07.2009 11:21

Для вывода данных из базы используйте CONTENT и RECORDS, насчет numList, а чем не устраивает загружать нулевую картинку? Если в поле картинки есть какие-либо данные, то нулевая картинка точно будет, в админке всегда есть возможность поставить нужную картинку на это место.

GAZok 16.07.2009 12:38

Цитата:

Сообщение от Sergey M Nikitin (Сообщение 25102)
...а чем не устраивает загружать нулевую картинку? Если в поле картинки есть какие-либо данные, то нулевая картинка точно будет, в админке всегда есть возможность поставить нужную картинку на это место.

Кажется мне, что возможен такой случай, когда закачиваются 2-ве картинки на страницу, но обе не являются обязательными. То есть возможно будет потребность для какой то из страниц закачивать только картинку 1, а картинку 0 не нужно (то есть использовать от отцовской страницы "import.data = levelmedia: -1,slide").

Сам с таким случаем пока не сталкивался, но кажется вот-вот столкнусь. Дело в том что я делаю редизайн сайта в котором для некоторых страниц закачаны картинки 0 (используются в хедере). Теперь мне необходимо для некоторых других страниц добавить еще по одной картинке, которые будут использоваться в другом месте. То есть они уже должны быть в позиции 1. Но для этих страниц пока не закачаны картинки 0, поскольку переиспользуются с отцовской страницы. получается что закачать картинку 1 я сразу не могу, сначала необходимо 0, но в этом случае картинка 0 отобразится в хедере, в чем потребности нет.

Вот я и думаю, то ли мой подход к решению задачи не правильный, то ли я слишком много ожидаю от TYPO3...

Sergey M Nikitin 16.07.2009 13:00

Цитата:

Сам с таким случаем пока не сталкивался, но кажется вот-вот столкнусь. Дело в том что я делаю редизайн сайта в котором для некоторых страниц закачаны картинки 0 (используются в хедере). Теперь мне необходимо для некоторых других страниц добавить еще по одной картинке, которые будут использоваться в другом месте. То есть они уже должны быть в позиции 1. Но для этих страниц пока не закачаны картинки 0, поскольку переиспользуются с отцовской страницы. получается что закачать картинку 1 я сразу не могу, сначала необходимо 0, но в этом случае картинка 0 отобразится в хедере, в чем потребности нет.

Вот я и думаю, то ли мой подход к решению задачи не правильный, то ли я слишком много ожидаю от TYPO3...
У вас подход не много не правильный, зачем ассоциировать картинку с главной страницей, картинка <=> страница, или вам нужно чтобы определенная картинка выводилась на определенном уровне ?


1.Первая картинка в записи всегда "0"

2.Проще эту картинку определять через TS так как, тогда автоматически будет реализовано наследование от родительских страниц, можно попробовать поизвращаться через MHENU (rootline), сформировать строку-список и тем же import брать последнее значение, то есть ближайшую к странице картинку относительно предков, либо пишите функцию.

Если вы детальней опишите проблему, то я попробую (завтра-послезавтра) написать вам пример (через HMENU) и выложить ссылку на него.

GAZok 16.07.2009 13:47

почитал второй пост здесь: http://forum.typo3.biz/showthread.php?t=7518 и понял, что подхожу к typo3 не с той стороны :)

не буду пока что утруждать вас этой темой, поскольку она как бы не главная проблема у меня на сегодняшний день. но не исключено что вернусь к ней вскоре.

сейчас решаю вопрос с:
Код:

Для вывода данных из базы используйте CONTENT и RECORDS...
для начала я пытался узнать где именно в БД хранится данные о закачанных картинках. Есть подозрения что в поле media таблицы pages. Но данные там хранятся в типе BLOB и как их оттуда извлечь...... ?

Sergey M Nikitin 16.07.2009 13:55

Вы сделайте хотя бы один CONTENT объект покрутите, повертите и все станет ясно, ничего "вытаскивать" не надо.

GAZok 16.07.2009 14:49

попробовал этот вариант:
Код:

subparts.testimg = TEXT
subparts.testimg.data = DB : pages:2:media

получил список названий файлов картинок:
4-tunnels-of-light_02.jpg,bdu.gif
но как бы попарсить строку и получить второе название файла чтобы использовать дальше

То что вы советовали относительно CONTENT, попробовал:
Код:

subparts.testimg = CONTENT
subparts.testimg {
table = pages
select.orderBy = sorting
select.where = colPos=0
select.languageField = sys_language_uid
##select.pidInList = 2 - так же пробовал этот вариант
select.uidInList = 2
}

в результате ничего не возвращает. не стал с этим запариваться поскольку все равно не понимаю как при помощи CONTENT получить интересующую картинку закачанную в поле file. На сколько я понял CONTENT используется для отображения всего контента заданной страницы

Sergey M Nikitin 16.07.2009 15:04

Цитата:

subparts.testimg = TEXT
subparts.testimg.data = DB : pages:2:media
Код:

subparts.testimg = TEXT
subparts.testimg.import.data = DB:pages:2:media
subparts.testimg.import.listNum = 0 #либо 1 для 2ого изображения 2 для третьего и т.д.

Читайте что есть stdWrap

Цитата:

subparts.testimg = CONTENT
subparts.testimg {
table = pages
select.orderBy = sorting
select.where = colPos=0 #Это поле есть только в tt_content, выборка провалиться
select.languageField = sys_language_uid #это нужно для локализации, если у вас несколько языков сайтов
##select.pidInList = 2 - так же пробовал этот вариант
select.uidInList = 2 #Здесь выбираете конкретную страницу
}
Выводить у вас кто будет ? - Никто - для этого надо описать объект renderObj

Код:

obj = CONTENT  #См. TsRef "CONTENT"
obj{
  table = pages
  select{  #См. TsRef "select"
    select.uidInList = 2
  }
  renderObj = COA  #См. TsRef "COA"
  renderObj{
    wrap = <div>|</div>
    10 = TEXT
    10.field = title #См. TsRef "stdWrap"
    20 = IMAGE #См. TsRef "IMAGE"
    20{
      file.import = uploads/pics/ #скорей всего такой хотя надо смотреть где именно хранится фотка, посмотрите в uploads #См. TsRef "stdWrap > import"
      file.import.field = media
      file.import.listNum = 1 #Либо другой индекс
    }
  }
}


GAZok 16.07.2009 15:38

вот код который срабатывает:
Код:

subparts.testimg = CONTENT
subparts.testimg{
  table = pages
  select{
    select.where = uid=2
  }
  renderObj = COA
  renderObj{
    wrap = <div>|</div>
    10 = TEXT
    10.field = title
    20 = IMAGE
    20{
      file.import = uploads/media/
      #file.import.field = media
      file.import.data = DB:pages:2:media
      file.import.listNum = 1
    }
  }
}

но почему то выводится весь список страниц первого уровня меню, а не только страница заданная в условии select.where = uid=2

Sergey M Nikitin 16.07.2009 15:56

Цитата:

select{
select.where = uid=2
}
у вас ошибка
Код:

select{
  where = uid=2
}

и лучше использовать

Код:

select{
  uidInList = 2
}

Будьте внимательны.


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

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