PDA

Просмотр полной версии : Picture in new window for FCE


Tod
11.11.2006, 22:46
TV 1.0.1.
Создаю 2 поля картинку и ссылку. В ТВ записан следующий код:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<T3DataStructure>
<ROOT type="array">
<tx_templavoila type="array">
<title>ROOT</title>
<description>Select the HTML element on the page which you want to be the overall container element for the template.</description>
</tx_templavoila>
<type>array</type>
<el type="array">
<field_rowpicture1 type="array">
<tx_templavoila type="array">
<title>Row Picture1</title>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>imagefixed</eType>
<TypoScript>
10 = IMAGE
10.file = GIFBUILDER
10.file {
XY = 170,170
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 170
10.file.minW = 170
10.file.maxH = 170
10.file.minH = 170
}

</TypoScript>
</tx_templavoila>
<TCEforms type="array">
<config type="array">
<type>group</type>
<internal_type>file</internal_type>
<allowed>gif,png,jpg,jpeg</allowed>
<max_size>1000</max_size>
<uploadfolder>uploads/tx_templavoila</uploadfolder>
<show_thumbs>1</show_thumbs>
<size>1</size>
<maxitems>1</maxitems>
<minitems>0</minitems>
</config>
<label>Row Picture1</label>
</TCEforms>
</field_rowpicture1>
<field_rowpicturelink type="array">
<type>attr</type>
<tx_templavoila type="array">
<title>Row Picture1 Link</title>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>link</eType>
<TypoScript>
10 = TEXT
10.typolink.parameter.current = 1
10.typolink.returnLast = url
</TypoScript>
<proc type="array">
<HSC type="integer">1</HSC>
</proc>
</tx_templavoila>
<TCEforms type="array">
<config type="array">
<type>input</type>
<size>15</size>
<max>256</max>
<checkbox></checkbox>
<eval>trim</eval>
<wizards type="array">
<_PADDING type="integer">2</_PADDING>
<link type="array">
<type>popup</type>
<title>Link</title>
<icon>link_popup.gif</icon>
<script>browse_links.php?mode=wizard</script>
<JSopenParams>height=300,width=500,status=0,menubar=0,scrollbars =1</JSopenParams>
</link>
</wizards>
</config>
<label>Row Picture1 Link</label>
</TCEforms>
</field_rowpicturelink>
</el>
</ROOT>
</T3DataStructure>
Как бы мне сделать, чтобы картинка открывалась в отдельном окне?
Уже второй час с TSRef мучаюсь)) imageLinkWrap не хочет работать с ГИФБИЛДЕРОМ судя по всему, а любые изменения для Link field тоже что-то ни к чему не приводят...

Tod
17.11.2006, 01:55
В TSref для typolink есть параметр JSwindow_params. Вопрос, как его заставить работать? Код например такой:
10.stdWrap.typolink.parameter = 11
10.stdWrap.typolink.target = 300x300
10.stdWrap.typolink.JSwindow_params = status=1,menubar=1,scrollbars=1,resizable=1,locati on=1,directories=1,toolbar=1
итог - просто открывается в новом окне... а не JS ((
в то время как работает:
10.stdWrap.typolink.parameter = 11 300x300

gunner
17.11.2006, 13:45
Как бы мне сделать, чтобы картинка открывалась в отдельном окне?
Уже второй час с TSRef мучаюсь)) imageLinkWrap не хочет работать с ГИФБИЛДЕРОМ судя по всему, а любые изменения для Link field тоже что-то ни к чему не приводят...

второй час это мало =) сам убил на перечитывание tsref и поиски в google трое суток... задача похожая была, открыть в окне страницу на которую ссылается картинка... может чем-то тебе поможет:


<TypoScript>
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 200

10.stdWrap.typolink.parameter.field = field_link_url
10.stdWrap.typolink.parameter.noTrimWrap =| | 700x560:menubar=0,scrollbars=1,resizable=0,locatio n=0,toolbar=0|
10.altText.field = field_img_alttitle
</TypoScript>


не наступи на грабли: количество пробелов в .noTrimWrap имеет значение...

удачи =)

Tod
18.11.2006, 01:19
РАБОТАЕТ!
Спасибо за помощь... штука по идее не раз еще пригодится.
---
еще бы толково указывать размеры этого нового окна, ну и передать ему возможность закрытия при клике на картинку. это реально?

gunner
23.11.2006, 09:35
еще бы толково указывать размеры этого нового окна, ну и передать ему возможность закрытия при клике на картинку. это реально?

передать возможность закрытия при клике на картинку - точно реально:



<TypoScript>
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 200

#10.stdWrap.typolink.parameter.field = field_link_url
#10.stdWrap.typolink.parameter.noTrimWrap =| | 700x560:menubar=0,scrollbars=1,resizable=0,locatio n=0,toolbar=0|
#10.altText.field = field_img_alttitle

10.imageLinkWrap = 1
10.imageLinkWrap.enable = 1
10.imageLinkWrap.JSwindow = 1

10.imageLinkWrap.bodyTag = &lt;BODY bgColor=black&gt;
10.imageLinkWrap.wrap = &lt;A href="javascript:close();"&gt; | &lt;/A&gt;
10.imageLinkWrap.width = 800m
10.imageLinkWrap.height = 600
10.imageLinkWrap.JSwindow.expand = 10,15
</TypoScript>



удачи =)

sdv
25.11.2006, 08:38
Вопрос ... по моему по этой же теме ...
можно ли передать сюда какое-то значение?

10.imageLinkWrap.enable = 1

чтобы получить в форме возможность выбора (click enlarge), должна быть ссылка на картинке или нет, например через select ... ?

Pavel Antonov
25.11.2006, 16:27
можно ли передать сюда какое-то значение?

enable является stdWrap, так что ответ - да можно.

sdv
25.11.2006, 16:55
enable является stdWrap, так что ответ - да можно

<TypoScript>
10 = IMAGE
10.altText.field = field_alt
10.titleText.field = field_title
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 166
10.file.width.field = field_width
10.file.height.field = field_height
10.imageLinkWrap = 1
10.imageLinkWrap.bodyTag = &lt;BODY bgColor=white&gt;
10.imageLinkWrap.wrap = &lt;div class="r_image"&gt; &lt;A href="javascript:close();"&gt; | &lt;/A&gt;&lt;/div&gt;
10.imageLinkWrap.JSwindow = 1
10.imageLinkWrap.title = field_title
10.imageLinkWrap.JSwindow.newWindow = 0
10.imageLinkWrap.JSwindow.expand = 17,20
10.imageLinkWrap.enable = field_clickenlarge
10.imageLinkWrap.typolink.parameter.field=image_li nk
10.imageLinkWrap.typolink.extTarget = _blank
</TypoScript>

field_clickenlarge должен был приходить отсюда

<field_clickenlarge type="array">
<type>attr</type>
<tx_templavoila type="array">
<title>ClickEnlarge</title>
<sample_data type="array">
<numIndex index="0"></numIndex>
</sample_data>
<eType>select</eType>
</tx_templavoila>
<TCEforms type="array">
<config type="array">
<type>select</type>
<items type="array">
<numIndex index="1" type="array">
<numIndex index="0">Yes</numIndex>
<numIndex index="1">1</numIndex>
</numIndex>
<numIndex index="2" type="array">
<numIndex index="0">No</numIndex>
<numIndex index="1">0</numIndex>
</numIndex>
</items>
<default>0</default>
</config>
<label>ClickEnlarge</label>
</TCEforms>
</field_clickenlarge>
не понимаю такую вещь, field_width и field_height - предают значение (ширина/высота картинки), по аналогии думал и ноль из <type>select</type> прийдет ... а не получается ...

эта вот строка тоже не работает
10.imageLinkWrap.title = field_title
Названием страницы нового окна становится не значение "field_title", а наименование , field_title -так и пишет ...

в чем ошибка? Павел, подскажите, плиз ...

В TYPO3 новичок , как впрочем и в остальном ...

void
25.11.2006, 17:12
imageLinkWrap.title - это НЕ stdWrap. Поэтому всё логично :)

sdv
25.11.2006, 17:44
imageLinkWrap.title - это НЕ stdWrap. Поэтому всё логично
Хорошо, "НЕ stdWrap" - попытаюсь осмыслить, но вот здесь почему не работает?
10.imageLinkWrap.enable = field_clickenlarge
enable является stdWrap, так что ответ - да можно

PS В голове такая каша ... видимо состояние всех, кто только что взялся за typo3 ... :)

Pavel Antonov
25.11.2006, 19:43
10.imageLinkWrap.enable = field_clickenlarge


10.imageLinkWrap.enable.field = field_clickenlarge

Читайте TSref про функцию stdWrap

sdv
25.11.2006, 21:51
Спасибо, все заработало, читаю ... :)
Читайте TSref про функцию stdWrap

Вот наверное самое главное, что вынес из ответов на свои вопросы:

Выдежка из TSref:
enable | boolean /stdWrap | Изображение связывается ТОЛЬКО если это значение – правда(true)!! | 0

boolean /stdWrap - может это для всех и очевидно, а я только сейчас понял, что это видимо означает либо boolean, либо функция stdWrap ...
Так глядишь и с документацией научусь работать ... :D . Сразу многое встало на свои места ... Еще раз спасибо ...

Pavel Antonov
26.11.2006, 14:55
boolean /stdWrap - может это для всех и очевидно, а я только сейчас понял, что это видимо означает либо boolean, либо функция stdWrap ...
Так глядишь и с документацией научусь работать ... :D . Сразу многое встало на свои места ... Еще раз спасибо ...

Без TSref в TYPO3 делать нечего. Для своих сотрудников вывел формулу (в шутку конечно, но не далека от правды) - если не знаешь по памяти номера страницы TSRef, где расположена информация о typolink (stdWrap, imgResource, ...), то TYPO3 ты не знаешь! :D

Tod
28.11.2006, 17:38
Огромное спасибо всем ответившим!))
TV везде проставляет картинки через
10 = IMAGE
10.file = GIFBUILDER
...
Если без GIFBUILDER, то все джава-окна работают на ура))
Есть еще маленький вопрос: может еще кто-то разрабатывал код для добавления пустой картинки, если не она указана для данного FCE.
вопрос2: Если у меня есть несколько похожих элементов FCE, отличающихся только размерами картинок, можно ли как-то их запихнуть в один, а размерность чтобы менялась автоматом в зависимости например от id страницы?..

Pavel Antonov
29.11.2006, 15:26
Есть еще маленький вопрос: может еще кто-то разрабатывал код для добавления пустой картинки, если не она указана для данного FCE.


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

вопрос2: Если у меня есть несколько похожих элементов FCE, отличающихся только размерами картинок, можно ли как-то их запихнуть в один, а размерность чтобы менялась автоматом в зависимости например от id страницы?..

Можно, определить все в TS и менять нужные величины в подшаблонах нужных страниц.

Tod
29.11.2006, 16:21
Сам то понял, что спрашиваешь?
Впалне! А вообще я уже придумал как реализовать задуманное. так что вопрос снимается.
Можно, определить все в TS и менять нужные величины в подшаблонах нужных страниц.
Зато не понял что ты отвечаешь. Парадокс. Но некая идея реализации задуманного появилась, хоть на том спасибо.

Tod
13.12.2006, 17:11
Если прописать настройки
10.imageLinkWrap = 1
10.imageLinkWrap.enable = 1
10.imageLinkWrap.JSwindow = 1
10.imageLinkWrap.bodyTag = &lt;BODY bgColor=white style="margin: 0px 0px 0px 0x;"&gt;
10.imageLinkWrap.wrap = &lt;A href="javascript:close();" title="Закрыть окно" &gt; | &lt;/A&gt;
10.imageLinkWrap.width = 260
10.imageLinkWrap.height = 380
для объекта 10 = IMAGE... то все работает.
Но дело в том, что у меня используется другой объект:
10 = IMAGE
10.file = GIFBUILDER
10.file {
XY = 110,192
10 = IMAGE
...
}Как в TV сдлеать джаваскрипт окно для него?

Pavel Antonov
13.12.2006, 19:03
Объект то тот же, вот только imageLinkWrap с GIFBUILDER не работает...и другой возможности TYPO3 не предоставляет.

Альтернатива: Сделать все что нужно рукам, включая сгенерировать JavaScript или typolink с открытием нового окна.

Tod
19.12.2006, 15:08
Как-то призрачно представляю себе путь реализации предложенной вами альтернативы)) Можно поконкретней?
Еще хотел узнать есть ли для определяемого элемента в TV возможность задать userFunc?

Pavel Antonov
19.12.2006, 18:13
Как-то призрачно представляю себе путь реализации предложенной вами альтернативы)) Можно поконкретней?

С помощью IMG_RESOURCE можно получить ссылки на созданые GIF_BUILDER картинки.
Полученные ссылки вставить в свой JavaScriptГотового кода к сожалению нет

Еще хотел узнать есть ли для определяемого элемента в TV возможность задать userFunc?

Что имеется в виду? В TS всегда можно задать userFunc...

void
20.12.2006, 05:49
Хм. Объясните, если не в теме... но судя по тому, что выше ^, тут гифбилдер вроде и не нужен особо?

Tod
24.12.2006, 19:47
Спасибо, идея понятна...
Только возникает вопрос как получить ссылки с помощью IMG_RESOURCE на созданые GIF_BUILDER картинки:
10 = IMAGE
10.file = GIFBUILDER
10.file {
XY = 110,192
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 110
10.file.minW = 110
10.file.maxH = 192
10.file.minH = 192
}
...хотя больше проблем как добавить эти ссылки в код выше

Pavel Antonov
25.12.2006, 02:49
Спасибо, идея понятна...
Только возникает вопрос как получить ссылки с помощью IMG_RESOURCE на созданые GIF_BUILDER картинки:
10 = IMAGE
10.file = GIFBUILDER
10.file {
XY = 110,192
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 110
10.file.minW = 110
10.file.maxH = 192
10.file.minH = 192
}...хотя больше проблем как добавить эти ссылки в код выше

Заменить IMAGE на IMG_RESOURCE и все... результат будет URL картинки. В какой код его Вы его хотите вставить я не понял...

void
25.12.2006, 04:54
Видимо, есть желание подставить этот урл в imageLinkWrap.
То есть наверно сделать что-то типа этого:


10 = IMG_RESOURCE
10.file = GIFBUILDER
10.file {
XY = 110,192
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 110
10.file.minW = 110
10.file.maxH = 192
10.file.minH = 192
}
10.stdWrap {
postUserFunc = user_izvr->userimglinkwrap
postUserFunc.imageLinkWrap{
JSWindow = 1
}
}


class user_izvr{
function userimglinkwrap($content,$conf){
$cObj = t3lib_div::makeInstance('tslib_cObj');
$imgtag = $cObj->IMAGE(array('file'=>$content));
return $cObj->imageLinkWrap($imgtag,$content,$conf['imageLinkWrap.']);
}
}

Pavel Antonov
25.12.2006, 15:15
Ну если заниматься "самописом", то и делать тогда под себя как хочется. То есть IMG_RESOURCE тоже не зачем использовать... Мне казалось, что вопрос был в том как сделать средствами TS.

P.S.: Приведенный код работать не будет. IMG_RESOURCE возвращает URL, для IMAGE (.file) и imageLinkWrap нужен путь к файлу. Почувствуйте разницу ;)

void
25.12.2006, 20:02
Приведенный код работать не будет.
Ну, это лечится исправлением одной строчки)

Мне казалось, что вопрос был в том как сделать средствами TS.
А это возможно сделать средствами TS?

Tod
25.12.2006, 22:42
Да хотелось бы все через TS))
Еще раз проясню ситуацию. МОжет не все понятно.
Есть картинка, нужно по нажатию открыть ее в джава окне.
Создаю значит там какой-то скрипт, добавляю его в header. Далее нужно через TV FCE элемент задать картинку и вставить путь к ней в <a href="#">.
Посему в TV создаю один элемент - Image с кодом, к примеру:
10 = IMAGE
10.file = GIFBUILDER
10.file {
XY = 110,192
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 110
10.file.minW = 110
10.file.maxH = 192
10.file.minH = 192
}
Теперь нужно как-то передать путь... как? Создавать еще один элемент в шаблоне? или как-то через stdWrap для этого элемента?
---
можно создать сразу IMG_RESOURCE и мапить как атрибут <IMG>, но как потом это продублировать еще и для тэга <a href="#">

Pavel Antonov
26.12.2006, 18:04
можно создать сразу IMG_RESOURCE и мапить как атрибут <IMG>, но как потом это продублировать еще и для тэга <a href="#">

Наконец то, хоть чуть чуть продвинулись в нужном направлении...
Продублировать всегда можно:

10 = COA
10 {
10 = LOAD_REGISTER
10.image_url = IMG_RESOURCE
10.image_url {
...делаем все что надо с GIFBUILDER-ом...
}

20 = TEXT
20.data = register: image_url
20.wrap = <a href="#" onclick="myJsAction('|')">

30 = TEXT
30.data = register: image_url
30.wrap = <img src="|" alt="" title="" />

40 = TEXT
40.value = </a>
}



Улучшать можно (например размеры картинке не плохо было бы иметь), но идея такая.

Tod
26.12.2006, 21:46
Проблема в том, что мапится элемент с типом Image и COA работать отказывается. Без него никак, требуется ведь чтобы в FCE отображался блок выбора картинки.

Pavel Antonov
26.12.2006, 23:27
Что то делаете не так... TemplaVoila дела нет до того каким TS будет отображаться поле, и тем более код который будет отображать поле никак не связан с тем, как поле отображается в BE.

Tod
18.01.2007, 02:26
Хм... эпопея с данной темой продолжается.
Путем эксперементов таки для себя понял, что "TemplaVoila дела нет до того каким TS будет отображаться поле, и тем более код который будет отображать поле никак не связан с тем, как поле отображается в BE."
Просто когда писал в TS некоторый код просто НЕПОДОЗРЕВАЛ, что TV его НЕ ОБРАБОТАЕТ!
Итак, например код для поля элемента FCE:
10 = COA
10 {
20 = LOAD_REGISTER
20.my = TEXT
20.my {
velue = some_text
}
30 = TEXT
30.data = register:my
}
отображает на сайте слово TEXT (с IMG_RESOURCE та же фигня)
Более того, если добавить в код строку
30.wrap = <b>|</b>
ничего вообще не отобразится... А теперь самое интересное. Когда я пытаюсь ее закомметнировать
#30.wrap = <b>|</b>
оно тоже НИЧЕГО не выводит!
[TYPO3 4.0, TV 1.1.1]

Pavel Antonov
18.01.2007, 13:11
Хм... эпопея с данной темой продолжается.
Путем эксперементов таки для себя понял, что "TemplaVoila дела нет до того каким TS будет отображаться поле, и тем более код который будет отображать поле никак не связан с тем, как поле отображается в BE."
Просто когда писал в TS некоторый код просто НЕПОДОЗРЕВАЛ, что TV его НЕ ОБРАБОТАЕТ!
Итак, например код для поля элемента FCE:

отображает на сайте слово TEXT (с IMG_RESOURCE та же фигня)
Более того, если добавить в код строку

ничего вообще не отобразится... А теперь самое интересное. Когда я пытаюсь ее закомметнировать

оно тоже НИЧЕГО не выводит!
[TYPO3 4.0, TV 1.1.1]


Прочитайте внимательно документацию на LOAD_REGISTER! 20.my не является типом cObject, он text/stdWrap. Хотите присваиваейте ему сразу величины (потому TYPO3 и решила, что "TEXT" - это значение) или через stdWrap что-то делайте. Хотите иметь TEXT, то делайте
my.20.cObject = TEXT

Pavel Antonov
18.01.2007, 13:18
ничего вообще не отобразится... А теперь самое интересное. Когда я пытаюсь ее закомметнировать
#30.wrap = <b>|</b>оно тоже НИЧЕГО не выводит!
[TYPO3 4.0, TV 1.1.1]

Подозреваю, что код вносили непосредственно в XML?

Собственно, а чего же вы хотели? "<" и ">" являются управляющими в XML, код бьется по вашим <b>, "#" - комментарием для XML не является.

Замените "<" на &lt;, а ">" на &gt; или все обернуть в CDATA (смотрите документацию!)

Tod
18.01.2007, 15:23
Спасибо, подправил чуток код и получилось что=то вроде:
10 = COA
10 {
10 = LOAD_REGISTER
10.image_url.cObject = IMG_RESOURCE
10.image_url.cObject {
file = GIFBUILDER
file {
XY = 140,115
offset = 140-[10.w]/2,115-[10.h]/2
transparentBackground = 1
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 140
10.file.minW = 70
10.file.maxH = 115
10.file.minH = 57
}
}

20 = TEXT
20.data = register:image_url
20.wrap = &lt;a href="#" onclick="myJsAction('|')"&gt;

30 = TEXT
30.data = register:image_url
30.wrap = &lt;img src="|" alt="" title="" /&gt;

40 = TEXT
40.value = &lt;/a&gt;
}
Но теперь в новом окне выводится такая же маленькая картинка как и на сайте(( как достать ссылку именно на файл, а не сгенерированный типо3 рисунок?

Pavel Antonov
18.01.2007, 16:02
Но теперь в новом окне выводится такая же маленькая картинка как и на сайте(( как достать ссылку именно на файл, а не сгенерированный типо3 рисунок?

IMG_RESOURCE второй раз с нужными параметрами и без GIFBUILDER

Tod
19.01.2007, 13:53
Чтобы я делал без вашей помощи)) Спасибо!
Теперь еще одна задача... как мне привязать к скрипту размеры картинки с помощью LOAD_REGISTER?.. никак не получается. Тут ведь нужно обратиться к свойству размеров IMAGE, не могу понять как это сделать?(

Pavel Antonov
19.01.2007, 20:11
Чтобы я делал без вашей помощи)) Спасибо!
Теперь еще одна задача... как мне привязать к скрипту размеры картинки с помощью LOAD_REGISTER?.. никак не получается. Тут ведь нужно обратиться к свойству размеров IMAGE, не могу понять как это сделать?(

Ничего не понял. Можно код? Зачем вообще используется LOAD_REGISTER? В предыдущем коде он не нужен совершенно.

Tod
19.01.2007, 21:33
На данном этапе код такой:
10 = COA
10 {
10 = LOAD_REGISTER
10.image_file.cObject = IMG_RESOURCE
10.image_file.cObject {
file.import = uploads/tx_templavoila/
file.import.current = 1
file.import.listNum = 0
}

20 = LOAD_REGISTER
20.image_url.cObject = IMG_RESOURCE
20.image_url.cObject {
file = GIFBUILDER
file {
XY = 140,115
offset = 140-[10.w]/2,115-[10.h]/2
transparentBackground = 1

10 = IMAGE
10 {
file.import = uploads/tx_templavoila/
file.import.current = 1
file.import.listNum = 0
file.maxW = 140
file.minW = 70
file.maxH = 115
file.minH = 57
}
}
}

30 = TEXT
30.data = register:image_file
30.wrap = &lt;a href="javascript:myJsAction('|',300,300)"&gt;

40 = TEXT
40.data = register:image_url
40.wrap = &lt;img src="|" alt="Подробнее" title="" /&gt;

50 = TEXT
50.value = &lt;/a&gt;
}
Так вот там где 300, 300 нужно как-то впихнуть размеры подгружаемой картинки.
А что касается использования LOAD_REGISTER, то все делаю по вашему советУ) походу...

Pavel Antonov
20.01.2007, 20:34
На данном этапе код такой:

Так вот там где 300, 300 нужно как-то впихнуть размеры подгружаемой картинки.
А что касается использования LOAD_REGISTER, то все делаю по вашему советУ) походу...

С размерами к сожалению ничего не выйдет... простого способа я не вижу. Честно говоря никакого способа достать размеры я не вижу... Только свой код.

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

Tod
26.02.2007, 23:43
Поскольку размеры картинки из TS достать нереально, прийдется писать код самому.
Товарищ void привел свой вариант решения:
10 = IMG_RESOURCE
10.file = GIFBUILDER
10.file {
XY = 110,192
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 110
10.file.minW = 110
10.file.maxH = 192
10.file.minH = 192
}
10.stdWrap {
postUserFunc = user_izvr->userimglinkwrap
postUserFunc.imageLinkWrap{
JSWindow = 1
}
}
при этом код пхп.
class user_izvr{
function userimglinkwrap($content,$conf){
$cObj = t3lib_div::makeInstance('tslib_cObj');
$imgtag = $cObj->IMAGE(array('file'=>$content));
return $cObj->imageLinkWrap($imgtag,$content,$conf['imageLinkWrap.']);
}
}
Pavel Antonov, заметил, что IMG_RESOURCE не зачем использовать... + в приведенном коде какая-то ошибка...
0. какая такая ошибка и что вместо IMG_RESOURCE
1. меня смущает точка в 'imageLinkWrap.' (см. код выше)
2. я что-то экспериментировал с приведенным кодом, но никаких результатов работы не увидел вообще. в пхп код передается код маленькой картинки, а смыслу с него никакого. хотя, стоит заметить, что ничего особенно в результате работы данного пхп. файла не происходит - никакого увеличения и т.п.
3. нужно ведь передавать ссылку на большую картинку, а на сайте отобразить превью, сделанное гиф-билдером
4. что самое удивительно искал, где типо3 используется imageLinkWrap чтобы как-то может код позаимствовать.. там где в админке устанавливается в элементах "только картинки" или "текст с картинками" - увеличения для картинок. нашел только в файле setup.txt))
5. пытаюсь пока сделать все с помощью приколов javascript, но там еще более темный лес)) куча нюансов с разными браузерами.. ужос!. получится - обязательно поделюсь кодом)

Pavel Antonov
27.02.2007, 00:26
В 4.1 уже можно достать размер картинки при обработке IMG_RESOURCE
Про IMG_RESOURCE я такого помоему не говорил...Я честно говоря уже не понимаю о чем идет речь... ведь была же рабочая версия?

Tod
27.02.2007, 00:37
смотря о какой версии вы говорите))
код якобы рабочей версии был приведен, но ничего не происходит)
в свое время я остановился на полпути. сейчас ищу решение через джаваскрипт)) без размеров никак нельзя(
.. а скоро будет 4.1 офф релиз?) уже хочется проапдейтить, раз такое дело

Pavel Antonov
27.02.2007, 14:37
.. а скоро будет 4.1 офф релиз?) уже хочется проапдейтить, раз такое дело

Как только... так сразу!
(Текущий релиз-кондидат вполне рабочий)

Andrey Grey
25.04.2007, 16:03
[LIST=1]
В 4.1 уже можно достать размер картинки при обработке IMG_RESOURCE

Павел, а откуда Вы взяли информацию о имдж_ресурс в 4.1?
Хотелось бы почитать...

Pavel Antonov
25.04.2007, 16:20
Павел, а откуда Вы взяли информацию о имдж_ресурс в 4.1?
Хотелось бы почитать...

Я нашел изменения в исходниках, так как сам занимался данным вопросом.
Кроме пары комментариев в исходниках, где еще посмотреть не знаю.
Возможно появится при обновлении документации (TSref)...

Tod
10.07.2007, 21:34
В обновленной документации увы не нашел...
Так каким образом реально можно достать размеры картинки?

Tod
11.07.2007, 01:37
Есть пока 2 идеи.
Первая просто для объекта IMAGE, стандартная по сути.

10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 149
10.file.mixW = 149

10.imageLinkWrap = 1
10.imageLinkWrap {
bodyTag = &lt;BODY bgColor=white style="margin: 0px; padding: 0px;"&gt;
wrap = &lt;A href="javascript:close();" title="Закрыть окно" &gt; | &lt;/A&gt;
enable = 1
title = Image
JSwindow = 1
JSwindow.newWindow = 1
JSwindow.expand = 0,0
}

В принципе, для фоток достаточно выравнивания по ширине, все остальное можно сделать с помощью шаблона ХМТЛ - то есть расположить небольшую фотку вцентре либо сверху.
НО - Мне нужно туда впихнуть копирайт на фотки, которые в новом окне... я как-то думал и мне очень кажется, что это нереально.

----------------------------------------------------------------------------

Вариант2. Тут в плане генерирования картинок полная свобода - хотиш добавить копирай - пожалуйста.
НО есть проблема1 - передать размеры картинки (опять же господа типо3 боги надеюсь на вашу помощь, не могу уже на гугл смотреть и немецкие карлючки)... Пока код что-то вроде:

20 = IMG_RESOURCE
20 {
file = GIFBUILDER
file {
XY = 140,115
offset = 140-[10.w]/2,115-[10.h]/2
transparentBackground = 1

10 = IMAGE
10 {
file.import = uploads/tx_templavoila/
file.import.current = 1
file.import.listNum = 0
file.maxW = 140
file.minW = 70
file.maxH = 115
file.minH = 57
}
}
}

20.stdWrap.wrap = <img src="|"

25 = IMG_RESOURCE
25 {
file = GIFBUILDER
file {
XY = [10.w],[10.h]
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
20 = IMAGE
20.offset = [10.w]-[20.w]/2,[10.h]-[20.h]/2
20.file = fileadmin/pictures/catalogue/logo.png
}
}
25.stdWrap.wrap = onClick="window.open('|','','width=900,height=650')" title="" />

Проблема2 - не могу достать открывающееся окно дабы задать там отступы и стиль для BODY. подозреваю єто можно сделать через JavaScript, да?

Dutchak Vitaly
11.07.2007, 02:13
через JavaScript подгони размер окна с картинкой.

void
11.07.2007, 02:29
Через JS можно узнать и размер картинки (всё равно её грузить), и подогнать размер окна, и стили все задать.

Tod
11.07.2007, 02:30
Я когда-то находил пример кода, подгоняющего картинку после загрузки окна, но этот код типа дважды грузил одно и то же окно - мне лично не особо нравилось((

НАШЕЛ!!! Интересная штука, позволяющая достать некоторую инфу по картинкам, в том числе размеры:

30 = TEXT
30.data = TSFE:lastImgResourceInfo|0
30.wrap = '|',

40 = TEXT
40.data = TSFE:lastImgResourceInfo|1
40.wrap = '|')" title="" />

зы. просто не силен в JS)

Tod
12.07.2007, 01:26
Ну вроде получилось то, что хотел... и с помощью TS. Не знаю пашет ли оно на ранних версиях TYPO3 и TV, я использовал 4.1.1 и 1.3.0.
Кроме того, фотка в новом окне отображается с логотипом в центре - типа копирайта, в качестве которого используется полупрозрачная png картинка.

Для этого мапим в шаблоне нужное место под будущую картинку, а потом в DS добавляем:

<TypoScript><![CDATA[

10 = IMG_RESOURCE
10 {
file = GIFBUILDER
file {
XY = [10.w],[10.h]
10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
20 = IMAGE
20.offset = [10.w]-[20.w]/2,[10.h]-[20.h]/2
20.file = fileadmin/pictures/catalogue/logo.png
}
}
10.stdWrap.wrap = <a href="javascript:my_popup('|',

14 = TEXT
14.field = field_title
14.wrap = '|',

15 = TEXT
15.data = TSFE:lastImgResourceInfo|0
15.wrap = '|',

16 = TEXT
16.data = TSFE:lastImgResourceInfo|1
16.wrap = '|')">

20 = IMG_RESOURCE
20 {
file = GIFBUILDER
file {
XY = 149,125
offset = 149-[10.w]/2,125-[10.h]/2
transparentBackground = 1

10 = IMAGE
10 {
file.import = uploads/tx_templavoila/
file.import.current = 1
file.import.listNum = 0
file.maxW = 149m
#file.minW = 70
file.maxH = 125m
#file.minH = 57
}
}
}


20.stdWrap.wrap = <img src="|" title="" />

30 = HTML
30.value = </a>

]]></TypoScript>

Создаем файл popup_window.inc, куда пишем скрипт для отображение фотографии в новом окне:

<script>
function my_popup(img_scr,img_name,img_w,img_h) {
var generator=window.open('','name','width='+img_w+',h eight='+img_h+'');
generator.document.write('<html><head><title>'+img_name+'</title>');
generator.document.write('</head><body style="margin: 0px; padding: 0px;">');
generator.document.write('<a href="javascript:close()">');
generator.document.write('<img src="'+img_scr+'" style="border:0px;"/></a>');
generator.document.write('</body></html>');
}
</script>

Чтобы подключить его на сайт в настройках шаблона указываем:

page.headerData.20 = FILE
page.headerData.20.file = fileadmin/templates/popup_window.inc

зы. Огромное спасибо всем участвующем в решении проблемы!

Andrey Grey
04.10.2007, 06:03
Спасибо за код.
Он у меня не заработал, но натолкнул на правильный ход мысли.

Тод, исправь пожалуйста ошибки в коде
в JS строчка:
var generator=window.open('','name','width='+img_w+',h eight='+img_h+'');

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


5 = IMG_RESOURCE
5.file.import = uploads/tx_templavoila/
5.file.import {
current = 1
listNum = 0
}
5.stdWrap.wrap = &lt;a href="|" target="_blank" onclick="window.open(this.href,this.target,

7 = TEXT
7.data = TSFE:lastImgResourceInfo|0
7.wrap = 'width=|,

9 = TEXT
9.data = TSFE:lastImgResourceInfo|1
9.wrap = height=|,location=no,toolbar=no,menubar=no,status= no');return false;"&gt;

10 = IMAGE
10.file.import = uploads/tx_templavoila/
10.file.import.current = 1
10.file.import.listNum = 0
10.file.maxW = 215
10.file.maxH = 161
10.stdWrap.wrap = | &lt;/a&gt;

Tod
18.01.2008, 17:39
Исправлял, форум не хочет:) Нет никаких пробелов или других символов

Grank
31.01.2008, 22:24
generator.document.close(); ;-)