Ostatnio dodane zdjęcie

selekcjoner

Avatar: selekcjoner

2012-05-03 13:52

Witam.
Znalazłem ostatnio rozwiązanie BOBOO dotyczące ostatnio dodanego zdjęcia w quick.cms. Po małej przeróbce pasuje mi do quick.carta4.2, z tym że wyświetla ostatnio dodane zdjęcie (jest OK:), ale w oryginalnym rozmiarze (!). Tak wygląda kod:

public function throwLastPhoto($sFile ){
$oFF FlatFiles::getInstance( );
    
$oTpl TplParser::getInstance( );
$oFile=Files::getInstance();
$aFile=file(DB_PRODUCTS_FILES);

$content=null;
$iCount=count($aFile);
if(
$iCount>1){
rsort($aFile,SORT_NUMERIC);
for(
$i=0;$i<($iCount-1);$i++){
$aExp=explode('$',$aFile[$i]);
if(
$oFF->checkCorrectFile($aExp[2])){
$aData=$oFF->throwDataFromFiles(array(DB_PRODUCTS),$aExp[1],'iProduct');
$aData['sFileName']=$aExp[2];
$aData['sLinkName']=$this->aProducts[$aExp[1]]['sLinkName'];
break;
}
}
if(isset(
$oFile)&&isset($oFile->aImagesDefault[1][$aData['iProduct']])){
$aDataImage=$oFile->aFilesImages[1][$oFile->aImagesDefault[1][$aData['iProduct']]];
$oTpl->setVariables('aDataImage',$aDataImage);
$aData['iSizeValue1'] = $aDataImage['iSizeValue1'];
 
$aData['sFileName'] = $aDataImage['sFileName'];
}
$oTpl->setVariables('aData',$aData);
$content=$oTpl->tbHtml($sFile,'LAST_PHOTO');
}
return 
$content;
}


Gdzie szukać błędu, żeby wyświetlało miniaturkę?

» Quick.Cart v4.x

simlution.org

selekcjoner

Avatar: selekcjoner

2012-05-04 12:54

problem w tym, że nie przekazuje adresu folderu z miniaturką, bo adres jest taki:
www.twoja-strona.pl/files//fotka.jpg
hmmm;)

tak po amatorsku można w:
<img src="$config[dir_files]$aDataImage[iSizeValue1]/$aData[sFileName]" alt="$aData[sFileDescription]" />
napisać:
<img src="$config[dir_files]150/$aData[sFileName]" alt="$aData[sFileDescription]" />
ale to tak mało ambitnie:)

simlution.org

treewood (OpenSolution)

Avatar: treewood

2012-05-07 07:31

zamien na:
<img src="$config[dir_files]$aData[iSizeValue1]/$aData[sFileName]" alt="$aData[sFileDescription]" />

selekcjoner

Avatar: selekcjoner

2012-05-07 18:51

no nie działa niestety..

simlution.org

treewood (OpenSolution)

Avatar: treewood

2012-05-08 09:00

to skieruj zapytanie do boboo

boboo

Avatar: boboo

2012-05-08 13:59

Zrobiłem 1:1 bez żadnych zmian - copy/paste stąd:
http://opensolution.org/Quick.Cms/forum/losowe-zdjecie,1853.html
w Q.Cart Free 4.2

Działa. Wyświetla się miniaturka. Trzeba tylko trochę poprawić w css jej położenie, ale wyświetla się miniaturka.

qc-plugins.kimla.de

selekcjoner

Avatar: selekcjoner

2012-05-09 15:39

tak boboo działa, ale wtedy wyświetla nie "ostatnio dodane" tylko "zdjęcie główne" (czyli o najniższym ID) z danego produktu. Ja pozmieniałem PAGES na PRODUCT i wtedy wyświetla ostatnio dodane foto, ale już nie miniaturkę..

simlution.org

selekcjoner

Avatar: selekcjoner

2012-05-09 15:59

oczywiście gdybyś miał chwilę i rzucił jakąś podpowiedzią byłoby extra:)

simlution.org

boboo

Avatar: boboo

2012-05-09 16:38

Bo widzisz, w core/files.php jest taki podział:
$aFiles[1]=DB_PAGES_FILES;
$aFiles[2]=DB_PRODUCTS_FILES;
A Ty dajesz dane produktu, ale odwołujesz się do $aFiles[1], czyli plików stron.

Zamien w tym jedynki na dwójki (w throwLastPhoto)
aImagesDefault[1]
aFilesImages[1]

qc-plugins.kimla.de

selekcjoner

Avatar: selekcjoner

2012-05-09 16:59

już próbowałem takie coś, ale ciągle wyświetla nie ostatnio dodane zdjęcie, tylko zdjęcie z najniższym ID...

simlution.org

boboo

Avatar: boboo

2012-05-09 17:21

W jakim pliku dałeś tę funnkcję?
core/pages.php ?

qc-plugins.kimla.de

selekcjoner

Avatar: selekcjoner

2012-05-09 17:25

core/products.php

simlution.org

boboo

Avatar: boboo

2012-05-09 17:26

Już widzę problem :-)
Wreszcie pojąłem, o co Ci chodzi.

Za parę(naście) minut wrzucę tu poprawki.

qc-plugins.kimla.de

selekcjoner

Avatar: selekcjoner

2012-05-09 17:28

szacun:)

simlution.org

boboo

Avatar: boboo

2012-05-09 17:44

1 . wyrzuć całego IF'a
if(isset($oFile)&&...){
....
}
tutaj aData[sName] zostawało nadpisywane tym z array'a aDataImage.
a w nim niekoniecznie była ta sama kolejność, co w db_products_files.
trzeba nam teraz tylko wyciągnąć iSizeValue i to w postaci konkretnego rozmiaru.
w db_products_files jest to zapisane w polach 'iSize1' i 'iSize2' w postaci 0 albo 1.
adekwatnie do array'a
$config['pages_images_sizes']=array(0=>100,1=>150);
nad
break;
dodaj:
$aData['iSizeValue1']=$GLOBALS['config']['pages_images_sizes'][$aExp[6]];
$aData['sDecription']=$aExp[8];
i w bloku BEGIN LAST_PHOTO w container.tpl
zmień odpowiednio $aDataImage na $aData

qc-plugins.kimla.de

selekcjoner

Avatar: selekcjoner

2012-05-09 17:58

no i wszystko gra:) wielkie dzięki.

simlution.org

selekcjoner

Avatar: selekcjoner

2012-05-10 18:55

w zasadzie nie do końca wszystko gra;) wiem że marudzę, ale napiszę tak informacyjnie.
Po wgraniu zdjęcia (czy to na LEWO czy PRAWO) pokazuje ostatnio dodane zdjęcie, ale oryginalny rozmiar.
Dopiero jeśli wgramy np. na LEWO i zapisaniu, trzeba zmienić na PRAWO i znowu zapisać wtedy jest dopiero wyświetlana miniatura:)

simlution.org

Do góry
o nas | kontakt