Просмотр полной версии : вывод картинок других страниц
есть задача: вывести на одной странице картинки нескольких других страниц.
предположительно, думаю, картинки должны добавляться в поле "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, а чем не устраивает загружать нулевую картинку? Если в поле картинки есть какие-либо данные, то нулевая картинка точно будет, в админке всегда есть возможность поставить нужную картинку на это место.
...а чем не устраивает загружать нулевую картинку? Если в поле картинки есть какие-либо данные, то нулевая картинка точно будет, в админке всегда есть возможность поставить нужную картинку на это место.
Кажется мне, что возможен такой случай, когда закачиваются 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) и выложить ссылку на него.
почитал второй пост здесь: http://forum.typo3.biz/showthread.php?t=7518 и понял, что подхожу к typo3 не с той стороны :)
не буду пока что утруждать вас этой темой, поскольку она как бы не главная проблема у меня на сегодняшний день. но не исключено что вернусь к ней вскоре.
сейчас решаю вопрос с:
Для вывода данных из базы используйте CONTENT и RECORDS...
для начала я пытался узнать где именно в БД хранится данные о закачанных картинках. Есть подозрения что в поле media таблицы pages. Но данные там хранятся в типе BLOB и как их оттуда извлечь...... ?
Sergey M Nikitin
16.07.2009, 13:55
Вы сделайте хотя бы один CONTENT объект покрутите, повертите и все станет ясно, ничего "вытаскивать" не надо.
попробовал этот вариант:
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 #Либо другой индекс
    }
  }
}
вот код который срабатывает:
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
}
Будьте внимательны.
Sergey M Nikitin
16.07.2009, 15:59
file.import.data = DB:pages:2:media
не имеет смысла в таком контексте
у вас ошибка ...
...и лучше использовать ....
...Будьте внимательны.
пробовал разные варианты и в том числе те, которые вы указываете, не получалось
но это все натолкнуло меня на некоторые мысли в результате которых мне удалось реализовать изначальную задачу: 
Вывести на одной странице картинки нескольких других страниц. Причем они должны были быть ссылками на эти страницы. Этого я не указывал в задании дабы не усложнять
Возможно можно было реализовать и другим методом, но данная реализация вполне устраивает:
lib.rotator_images=HMENU
lib.rotator_images.special=list
lib.rotator_images.special.value = 154,155,157,156
lib.rotator_images.1=TMENU
# set expAll to 1 if the menu should be expandet by default
lib.rotator_images.1.expAll=0
lib.rotator_images.1.wrap=<div class="picwrapper" style="overflow: hidden; width: 284px; height: 140px;">|</div>
lib.rotator_images.1.NO{
         # fill the used registers
  before.cObject=LOAD_REGISTER
  before.cObject{
    		# Counter for the mainmenu points
    mainMenuNumber.cObject=TEXT
    mainMenuNumber.cObject{
      value={register:mainMenuNumber}+1
      insertData=1
    }
    mainMenuNumber.prioriCalc=intval
    mainMenuImage.cObject = IMAGE
    mainMenuImage.cObject.file {
     import.field = media
     import = uploads/media/
     import.listNum = 1
    } 
  }
  
  ATagParams = class="pic_{register:mainMenuNumber}"
  ATagBeforeWrap=1
  linkWrap=<!-- | -->{register:mainMenuImage}
  allStdWrap.insertData=1
}
то есть получаем примерно такой исходящий код:
<div class="picwrapper" style="overflow: hidden; width: 284px; height: 140px;">
<a href="page1.html" onfocus="blurLink(this);" class="pic_1"><!-- ICT --><img src="uploads/media/image1.jpg" width="705" height="200" border="0" alt="" title="" /></a>
<a href="page2.html" onfocus="blurLink(this);" class="pic_2"><!-- Automotive --><img src="uploads/media/image2.jpg" width="705" height="200" border="0" alt="" title="" /></a>
<a href="page3.html" onfocus="blurLink(this);" class="pic_3"><!-- Insurance --><img src="uploads/media/image3.jpg" width="705" height="200" border="0" alt="" title="" /></a>
<a href="page4.html" onfocus="blurLink(this);" class="pic_4"><!-- Health Care --><img src="uploads/media/image4.jpg" width="705" height="200" border="0" alt="" title="" /></a>
</div>
Сергей, вам огромное спасибо за помощь и оперативные ответы!
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot