Przeczytałem o masonerii i po tym, jak nie udało się uzyskać obrazu dołączającego do pracy, zalecono przejście na następcę Isotope. Próbowałem ulepszyć lub stworzyć wariacje w galerii okładek albumów, coś co zrobiłem raz lub dwa przed użyciem tych samych klas PHP.Używanie masonerii, jQuery i PHP do stworzenia okładki albumu
mogę uzyskać podstawową funkcjonalność do pracy, ale przycisk kliknąć, aby dodać więcej obrazów zawsze nie działa. Ciągle czytam dokumentację jQuery i wypróbowałem różne debuggery JavaScript, ale zawsze klikam, gdy do mojej galerii nie są dodawane żadne zdjęcia.
prób i błędów jest zdecydowanie konieczne, aby uzyskać najlepszy układ patrząc.
Największa okładka albumu ma rozmiar 500 pikseli, a najmniejsza w interfejsie API wynosi 75, a dobór właściwej szerokości kolumny pomaga. Obecnie używam 75, ale 50 może działało lepiej. Chcę tylko dodać zdjęcia do pracy i zrobić to za pomocą tego małego eksperymentu.
chciałem spróbować czegoś podobnego do tego technique of appending more images to the bottom. Chcę dołączyć więcej okładek albumów, które pobieram z różnych interfejsów API (Amazon Product API, Last.fm, iTunes) za pomocą PHP. Wszystkie okładki albumów pochodzą z API, a ja używam PHP, aby znaleźć adresy URL z tytułem i wykonawcą albumu. Mój kod działa: http://www.muschamp.ca/Muskie/cdCoverGalleryV4.php
Zmieniłem regułę CSS wiele razy, teraz mam tylko domyślny CSS sugerowany przez autora izotopu.
kod PHP, który pętle i produkuje 10 DIV z jednym obrazem na div
$myAlbumCollection->randomMember();
$count = 0;
print('<div id="container">');
while ($count < 10)
{
// Check that current album is in Amazon
$buyLink = $myAlbumCollection->currentAlbumAmazonProductURL();
$imageURL = $myAlbumCollection->currentAlbumRandomImageURL();
if ((strcmp($buyLink, '#') != 0) && (strcmp($imageURL, myInfo::MISSING_COVER_URL) != 0))
{
$count++;
print('<div class="item">');
print('<a href="' . $buyLink . '">');
print('<img src="' . $imageURL . '" />');
print('</a>');
print('</div>');
}
$myAlbumCollection->goToNextAlbum(); // This could loop forever if it doesn't find enough album covers, but in reality will timeout
}
print('</div>');
I wreszcie Oto JavaScript, ostateczna problemem jest tu gdzieś:
<script>
$(function(){
var $container = $('#container');
$('#insert a').click(function(){
var $newEls = $.get('./moreAlbumCovers.php');
$container.isotope('insert', $newEls);
return false;
});
$container.isotope({
itemSelector: '.item',
masonry: {
columnWidth: 75
}
});
});
</script>
Łącze zostanie wywołany po kliknięciu przeszedłem przez to. PHP tworzy znaczniki DIVs As i IMG. Naprawdę nie jestem pewien, co robię źle i powtarzające się odczyty dokumentacji nie rozwiązują go. Naprawdę nigdy nie byłem facetem od JavaScriptu. Nie jestem nawet facetem PHP, wydaje mi się to słuszne, ale powtarzające się wysiłki zmierzające do tego, aby to osiągnąć, zawiodły mimo hojnej pomocy i oferowania nagrody.
Dzięki za pomoc.
Witam Muskie, czy mógłbyś wyjaśnić, jakie jest twoje konkretne pytanie? – halfer
Czy to jest jaśniejsze? Zasadniczo kod robi rzeczy, ale nie efekt ściany z cegły z moich obecnych ustawień. W końcu chcę, aby dołączanie również działało. – Muskie
Ciągle czytam instrukcje tutaj: http://masonry.desandro.com/demos/basic-multi-column.html i zmieniając szerokość pozycji wpisu CSS i argumentu javascript columnWidth i ciągle otrzymuję dwie kolumny i dużo białego miejsca w moja przeglądarka ... – Muskie