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
}

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

Sergey M Nikitin 16.07.2009 15:59

Код:

file.import.data = DB:pages:2:media
не имеет смысла в таком контексте

GAZok 16.07.2009 16:36

Цитата:

Сообщение от Sergey M Nikitin (Сообщение 25115)
у вас ошибка ...

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

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

пробовал разные варианты и в том числе те, которые вы указываете, не получалось

но это все натолкнуло меня на некоторые мысли в результате которых мне удалось реализовать изначальную задачу:
Вывести на одной странице картинки нескольких других страниц. Причем они должны были быть ссылками на эти страницы. Этого я не указывал в задании дабы не усложнять

Возможно можно было реализовать и другим методом, но данная реализация вполне устраивает:
Код:

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>



Сергей, вам огромное спасибо за помощь и оперативные ответы!


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

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