Просмотр полной версии : Работа с картинками
Создал расширение (каталог продукции), работает, выводит:
Наименование(ссылкой)
Изображение
Краткий текст
Множеством.
И:
Картинка и детальное описание.
Всё бы ничего, только надо бы чтобы в начале выводилась картинка ссылающаяся на внутреннюю страницу (детальное описание), а она либо открывается в новом окне (картинка), либо не показывается.
И ещё, надо чтобы картинки загружались в таком виде (детальное описание):
625.jpg
625_1.jpg
625_2.jpg
625_3.jpg
Не знаю как реализовать.
Делал расширение глядя на видео Каспера о создании СиДи коллекции.
Подскажите пожалуйста.
Реализовать реализовал, но вот как сделать вывод кучи картинок не пойму, есть массив вида 1.jpg,2.jpg,3.jpg,4.jpg,5.jpg,6.jpg, как его вывести?
Пробовал по всякому на основе:
case "img":
$imgTSConfig=$this->conf['imgCObject.'];
$imgTSConfig['file']='uploads/tx_myextension/'.$this->internal['currentRow']['img'];
return $this->cObj->IMAGE($imgTSConfig);
break;
В этом суть вся. А ничего не получилось, то ли руки кривые, то ли совсем дурак...:)
Вывод циклом реализован (переписал по другому пи1). А вот с выводом картинки Ж***. Надо вывести картинку на странице всех товаров, и чтобы она ссылалась на подробное описание товара. Не получается, ссылается либо на корень+ид, либо на саму себя, либо вообще не работает, прошу помощи, безумно срочно. П.С. Как разберусь с работой, выложу скрипты, вдруг кому поможет.:)
Решено через linkTP.
столкнулся с похожей проблемой - требуется отобразить несколько картинок
хотелось бы узнать в каком состоянии решение Вашей проблемы.
в связи с тем что необходимо из имеющихся картнок отображать превьюшки и только в ссылке указывать реальный их адрес, подумываю орагнизовать работу с графикой своего расширения как в T3Blog(вставить объект картинки и выводить через тупоскрипт), только копать самому исходники долго, а найти про применяемую методику не получается...
Решено было вот таким спагетти - кодом (pibase)...
Это вывод в синглВью:
...<tr><td id="prod_m">'.$imgs=$this->internal['currentRow']['internal_img'];
$imgs=explode(',',$imgs);
$imageNum=count($imgs);
reset($imgs);
$cc=0;
foreach ($imgs AS $img) {
if($cc==$imageNum) {
break;
}
$thumbs .=$this->mkThumbs($img,$cc);
$cc++;
}
$content=$thumbs;
//$this->getFieldContent('internal_img')
return $this->pi_wrapInBaseClass($content).'</td>
<td id="ctext">'.$this->getFieldContent('full_text').'</td></tr>...
Функция превьюшек:
function mkThumbs($img,$cc) {
$iimgTSConfig=$this->conf['internalImgCObject.'];
$iimgTSConfig['file']='uploads/tx_catalogneoplan/'.$img;
return $this->cObj->IMAGE($iimgTSConfig);
}
Это превьюшка в листВью (гетФилдКонтент, внимание на pi_linkTP):
case "front_img":
$fimgTSConfig = $this->conf['frontImgCObject.'];
$fimgTSConfig['file'] = 'uploads/tx_catalogneoplan/'.$this->internal['currentRow']['front_img'];
$params = array (
' tx_catalogneoplan_pi1[showUid]' => $this->internal['currentRow']['uid']
);
$imgx = $this->pi_linkTP($this->cObj->IMAGE($fimgTSConfig), $params);
return $imgx;
break;
ТСкод прямо в шаблоне:
plugin.tx_catalogneoplan_pi1.internalImgCObject.fi le.width=150
plugin.tx_catalogneoplan_pi1.internalImgCObject {
wrap=|<br />
imageLinkWrap = 1
imageLinkWrap{
bodyTag = <body bgColor=black align=center>
wrap = <a href="javascript:close();">|</a>
width = 650
height = 650
JSwindow = 1
JSwindow.newWindow = 1
JSwindow.expand = 20,20
enable = 1
}
}
$fimgTSConfig = $this->conf['frontImgCObject.'];
$fimgTSConfig['file'] = 'uploads/tx_catalogneoplan/'.$this->internal['currentRow']['front_img'];
$params = array (
' tx_catalogneoplan_pi1[showUid]' => $this->internal['currentRow']['uid']
);
$imgx = $this->pi_linkTP($this->cObj->IMAGE($fimgTSConfig), $params);
return $imgx;
а не пробовали так реализовать???
$imgx = $this->cObj->cImage('uploads/tx_catalogneoplan/'.$this->internal['currentRow']['front_img'], $this->conf['internalImgCObject.']);
return $imgx;
просто не совсем понятно зачем pi_linkTP пользоваться
Нет, не пробовал. :-)
pi_linkTP - реализация превьюшек в листинге каталога, использовал именно для этого.
В сингле не требовалось выводить картинки по чёткому адресу.
Привёл оба метода, вполне реально соединить.
Да и времени не было красивые решения искать, насяльника злая был. :-)
если не секрет - как организовывали листинг в админке?
бьюсь над похожей проблемой - каталог
dmartynenko
06.02.2012, 12:20
pi_linkTP - это функция генерации ссылки через typolink, к генерации превьюшек никакого отношения не имеет. В классе pibase целый набор функций для ссылок - смотрите исходник, там все понятно и с комментариями. Код 3ton делалает с превьюшки ссылку на single view записи.
Код 3ton делалает с превьюшки ссылку на single view записи.
Вы уверены, потому как описание данного функционала указывает что имея оригинальный рисунок и задав параметры превьюшки мы получаем изображение и обертку под него аналогично вставке объекта IMAGE c "указанием размеров а возможно и галочку поставить на увеличение"
прошу меня поправить если ошибаюсь...
dmartynenko
06.02.2012, 13:32
Да, то что $this->pi_linkTP() всего-лишь оборачивает в ссылку переданную в него строку, и добавляет к url параметры из $params, я уверен. Передаваемая строка в данном случае это HTML код картинки-превьюшки (а может быть что угодно), а в $params указан uid текущей записи и больше ничего. Поэтому ссылка генерится с этим uid на текущую страницу.
То, о чем вы говорите, задается в массиве $imgTSConfig который передается в
$this->cObj->IMAGE()
$this->cObj->cImage()
Эти функции почти аналогичны, одна вызывается из другой. Обратите внимание на параметры которые Peter указал в TS конфиге:
JSwindow = 1
JSwindow.newWindow = 1
JSwindow.expand = 20,20
Стандартный подход:
Категории каталога - страницы сайта с рекурсивным фронтенд плагином на основной.
0. Каталог (ФЕ плагин с бесконечной рекурсией)
1. Раздел 1
1.1. Подраздел 1
1.2. Подраздел 2
2. Раздел 2
Записи (товары) каталога - например контент элементы или своё с pid соответствующему странице каталога.
Если надо чтобы записи могли иметь несколько разделов:
Записи находятся в отдельной папке и имеют отдельное поле с записями вида "2,6,13,4", где через "," идут uid страниц каталога. Первый можно быстро реализовать после нарезки Кикстартером, второй надо допиливать на уровне кода.
Организацию каталогов осуществил так же
в моем случае одна запись в одном каталоге
интересует бакенд часть, а именно организация ввода и листинг записей
использовали встроенный функционал или писали свои обработки???
в моем случае товар имеет специфический параметр - к одному товару относятся куча размеров (более 50) и каждый со своей ценой...
вот и ломаю голову как это культурнее обработать
Две таблицы:
Таблица с товарами tx_catalog_item:
uid,pid,......,size
В поле size выбираем значение из второй таблицы tx_catalog_item_param:
uid,pid,...size,cost
Организовать взаимосвязь можно в Кикстартере.
В pi1 допилить код на вывод, чтобы он при выводе _item делал select из _item_param и вставлял в общую таблицу, можно проще сделать через JOIN.
А чтобы в админке выбирать красиво, это уже flexform надо редактировать, там в принципе можно быстро разобраться.
Dmitry Dulepov
10.02.2012, 16:14
А чтобы в админке выбирать красиво, это уже flexform надо редактировать, там в принципе можно быстро разобраться.
Админка будет показывать связь с размерами сама.
dmartynenko
10.02.2012, 16:42
в моем случае товар имеет специфический параметр - к одному товару относятся куча размеров (более 50) и каждый со своей ценой...
Под такую задачу хорошо подходит концепция IRRE редактирования. Выглядит это примерно так - в записи товара на отдельной страничке будет выводится список подчиненных записей "Размер-Цена" с возможностью измения, добавления без перезагрузки карточки товара. Единственный минус - на 50 подчиненных записей боюсь будет тормозить UI. И этот подход не обладает свойством быстрого и наглядного ввода размеров и цен. Если товаров много, то вводить их через BE замучаетесь. Если импортировать данные в БД со стороны, а потом только менять время от времени цены - может и подойдет. Но зато все "из коробки" - просто описываете в TCA конфигурации таблиц и взаимосвязей.
Возможно для вашего случая подошел бы свой элемент управления вида таблица размеров с inplace edit (на AJAX). Его можно реализовать как своей тип поля в записи товара. Смотрите документацию по TCA, раздел ['columns'][field name]['config'] / TYPE: "user". Но это вещь редко используемая, примеров использования я не встречал, так что придется повозиться. Но это реально сделать. Пример - экст cps_tcatree, реализует дополнительный тип элементы select в виде дерева (как в tt_news). TYPO3 весьма гибкая штука :)
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot