Witam wszystkich :)
Do pewnego projektu wplotłem pewną wtyczkę napisaną w jQuery ale mam pewien problem z tym: http://tympanus.net/Development/AutomaticImageMontage/index6.html
Chodzi o to, że jak klikam LOAD MORE... to niby wszystko jest ok ale powiela mi obrazki, a chciałbym żeby były wczytane raz czyli jeśli wczyta się już wszystko z bazy danych to np. zniknie napis LOAD MORE. Na ten moment jest tak, że po każdym kliknięciu LOAD MORE... wczytuje te same obrazki:
http://nportfolio.pl/Framework/galeria
Skrypt:
public function galeria() {
$this->model->smarty->assign("siteTitle", "Galeria", true);
$sql = new classMysql();
$this->setTpl('Gallery');
$id = $sql->selectAsoc("SELECT MIN(id) AS min, MAX(id) AS max FROM `framework_portfolio`");
$rand1 = rand($id[0]['min'], $id[0]['max']);
$rand2 = rand($id[0]['min'], $id[0]['max']);
$min = $id[0]['min'];
$max = $id[0]['max'];
while($rand1==$rand2 or $rand1>=$rand2) {
$rand2 = rand($id[0]['min'], $id[0]['max']);
}
$random = $rand2-$rand1;
$wylicz = '';
$ile = $random+$id[0]['min'];
for($i=$min;$i<$ile;$i++) {
$wylicz = $wylicz.$i.",";
}
$wylicz = substr($wylicz, 0, strlen($wylicz) - 1);
$ilosc = substr($wylicz, -1);
$maximum = $max-$ilosc;
$strona = $sql->selectAsoc("SELECT `nazwa`, `minik` FROM `framework_portfolio` ORDER BY `id` ASC LIMIT 0, $random");
$this->model->smarty->assign("list", $strona, true);
$ile = 4;
$d = 0;
for($j=0;$j<$maximum;$j=$j+$ile) {
if($j+$ile<=$maximum) {
$stronica = $sql->selectAsoc("SELECT `minik` FROM `framework_portfolio` WHERE `id` NOT IN($wylicz) LIMIT $j, $ile");
$d++;
$k = 'lista'.$d;
$this->model->smarty->assign("end", $d, true);
$this->model->smarty->assign($k, $stronica, true);
}
else {
$max2 = $maximum-$j;
if($d==0) {
$stronica = $sql->selectAsoc("SELECT `minik` FROM `framework_portfolio` WHERE `id` NOT IN($wylicz) LIMIT 0, $max2");
}
else {
$stronica = $sql->selectAsoc("SELECT `minik` FROM `framework_portfolio` WHERE `id` NOT IN($wylicz) LIMIT $ile, $max2");
}
$d++;
$k = 'lista'.$d;
$this->model->smarty->assign("end", $d, true);
$this->model->smarty->assign($k, $stronica, true);
break;
}
}
}
{config_load file="test.conf" section="setup"}
{include file="../header.tpl" title=foo}
<div class="am-container" id="am-container">
{foreach from=$list item=foo}
<a rel="nofollow" href="{$rootpatch}templates/zdjecia/mini/{$foo['minik']}" data-lightbox="roadtrip"><img src="{$rootpatch}templates/zdjecia/mini/{$foo['minik']}" alt="{$foo['nazwa']}" /></a>
{/foreach}
</div>
{if $end == 2}
<div id="loadmore" class="loadmore" style="width: 100%; display: block;">Wiecej...</div>
{/if}
<script type="text/javascript" src="{$rootpatch}includes/js/jquery-1.10.2.min.js"></script>
<script src="{$rootpatch}includes/js/jquery.montage.js"></script>
<script type="text/javascript">
$(function() {
var $container = $('#am-container'),
$imgs = $container.children('img').hide(),
totalImgs = $imgs.length,
cnt = 0;
var $container = $('#am-container'),
$imgs = $container.find('img').hide(),
totalImgs = $imgs.length,
cnt = 0;
$imgs.each(function(i) {
var $img = $(this);
$('<img/>').load(function() {
++cnt;
if( cnt === totalImgs ) {
$imgs.show();
$container.montage({
fillLastRow : true,
alternateHeight : true,
alternateHeightRange : {
min : 90,
max : 240
}
});
$('#overlay').fadeIn(500);
$('#loadmore').show().bind('click', function() {
newimgs = '';
{for $fooa=1 to $end}
{foreach from=$lista{$fooa} item=foos}
newimgs += '<a rel="nofollow" href="{$rootpatch}templates/zdjecia/mini/{$foos['minik']}" data-lightbox="roadtrip"><img src="{$rootpatch}templates/zdjecia/mini/{$foos['minik']}"/></a>';
{/foreach}
{/for}
var $newimages = $( newimgs );
$newimages.imagesLoaded( function(){
$container.append( $newimages ).montage( 'add', $newimages );
});
});
}
}).attr('src',$img.attr('src'));
});
});
</script>
{include file="../footer.tpl"}
Od strony PHP i SMARTY wszystko mam gotowe, ale dalej nie działa tak jakbym chciał.
Jest ktoś w stanie pomóc?
Z góry dziękuje za wszelką pomoc :)
EDIT:
Wystarczyło dodać:
[code] $(this).remove();[/code]
po
[code]$('#loadmore').show().bind('click', function() {[/code]