PHP code example of julienlinard / php-carousel
1. Go to this page and download the library: Download julienlinard/php-carousel library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
julienlinard / php-carousel example snippets
ulienLinard\Carousel\Carousel;
// Create an image carousel
$carousel = Carousel::image('my-carousel', [
'https://example.com/image1.jpg',
'https://example.com/image2.jpg',
'https://example.com/image3.jpg',
]);
// Render the carousel
echo $carousel->render();
use JulienLinard\Carousel\Carousel;
$carousel = Carousel::card('products', [
[
'id' => '1',
'title' => 'Product 1',
'content' => 'Description of product 1',
'image' => 'https://example.com/product1.jpg',
'link' => '/product/1',
],
[
'id' => '2',
'title' => 'Product 2',
'content' => 'Description of product 2',
'image' => 'https://example.com/product2.jpg',
'link' => '/product/2',
],
], [
'itemsPerSlide' => 3,
'itemsPerSlideMobile' => 1,
]);
echo $carousel->render();
use JulienLinard\Carousel\Carousel;
$carousel = Carousel::testimonial('testimonials', [
[
'id' => '1',
'title' => 'John Doe',
'content' => 'This product changed my life! Highly recommended.',
'image' => 'https://example.com/avatar1.jpg',
],
[
'id' => '2',
'title' => 'Jane Smith',
'content' => 'Amazing quality and excellent customer service.',
'image' => 'https://example.com/avatar2.jpg',
],
], [
'transition' => 'fade',
'autoplayInterval' => 6000,
]);
echo $carousel->render();
$carousel = Carousel::image('gallery', [
'image1.jpg',
'image2.jpg',
'image3.jpg',
], [
'height' => '500px',
'showDots' => true,
'showArrows' => true,
]);
$carousel = Carousel::card('products', $products, [
'itemsPerSlide' => 3,
'itemsPerSlideDesktop' => 3,
'itemsPerSlideTablet' => 2,
'itemsPerSlideMobile' => 1,
'gap' => 24,
]);
$carousel = Carousel::testimonial('reviews', $testimonials, [
'transition' => 'fade',
'autoplayInterval' => 7000,
]);
$carousel = Carousel::gallery('photo-gallery', $images, [
'showThumbnails' => true,
'itemsPerSlide' => 1,
]);
$carousel = new Carousel('my-carousel', Carousel::TYPE_IMAGE, [
// Autoplay
'autoplay' => true, // Enable/disable autoplay
'autoplayInterval' => 5000, // Autoplay interval in milliseconds
// Navigation
'showArrows' => true, // Show navigation arrows
'showDots' => true, // Show dot indicators
'showThumbnails' => false, // Show thumbnails (gallery only)
// Layout
'itemsPerSlide' => 1, // Number of items per slide
'itemsPerSlideDesktop' => 1, // Desktop items per slide
'itemsPerSlideTablet' => 1, // Tablet items per slide
'itemsPerSlideMobile' => 1, // Mobile items per slide
'gap' => 16, // Gap between items (px)
// Animation
'transition' => 'slide', // 'slide', 'fade', 'cube'
'transitionDuration' => 500, // Transition duration (ms)
// Behavior
'loop' => true, // Loop through slides
'responsive' => true, // Enable responsive behavior
'lazyLoad' => true, // Enable lazy loading
'keyboardNavigation' => true, // Enable keyboard navigation
'touchSwipe' => true, // Enable touch swipe
// Styling
'height' => 'auto', // Carousel height
'width' => '100%', // Carousel width
]);
use JulienLinard\Carousel\Carousel;
use JulienLinard\Carousel\CarouselItem;
$carousel = new Carousel('custom', Carousel::TYPE_CARD);
$carousel->addItem(new CarouselItem(
id: 'item1',
title: 'Custom Item',
content: 'This is a custom carousel item',
image: 'https://example.com/image.jpg',
link: '/item/1',
attributes: ['class' => 'custom-class']
));
$carousel->addItem([
'id' => 'item2',
'title' => 'Another Item',
'content' => 'Added from array',
'image' => 'https://example.com/image2.jpg',
]);
echo $carousel->render();
// Render only HTML
echo $carousel->renderHtml();
// Render only CSS (in <head>)
echo $carousel->renderCss();
// Render only JavaScript (before </body>)
echo $carousel->renderJs();
// Auto theme (respects system preference)
$carousel = Carousel::image('gallery', $images, [
'theme' => 'auto', // Automatically switches based on prefers-color-scheme
]);
// Light theme
$carousel = Carousel::card('products', $products, [
'theme' => 'light',
]);
// Dark theme
$carousel = Carousel::image('hero', $banners, [
'theme' => 'dark',
]);
// Custom theme colors
$carousel = Carousel::card('custom', $items, [
'theme' => 'light',
'themeColors' => [
'light' => [
'background' => '#ffffff',
'text' => '#000000',
'cardBackground' => '#f5f5f5',
],
'dark' => [
'background' => '#1a1a1a',
'text' => '#ffffff',
'cardBackground' => '#2a2a2a',
],
],
]);
// Enable virtualization for performance with many items
$carousel = Carousel::image('large-gallery', $manyImages, [
'virtualization' => true,
'virtualizationBuffer' => 5, // Show 5 slides on each side
]);
// Auto-enable when items exceed threshold (default: 50)
$carousel = Carousel::gallery('photo-gallery', $manyPhotos, [
'virtualizationThreshold' => 30, // Enable at 30 items instead of 50
]);
// Custom transition
$carousel = Carousel::image('custom', $images, [
'customTransition' => [
'duration' => 600,
'timingFunction' => 'cubic-bezier(0.4, 0, 0.2, 1)',
'properties' => ['transform', 'opacity'],
],
]);
// Custom animations (simple)
$carousel = Carousel::card('animated', $cards, [
'animations' => [
'slideIn' => 'slideInFromRight 0.5s ease-out',
'slideOut' => 'slideOutToLeft 0.5s ease-in',
],
]);
// Custom animations (with keyframes)
$carousel = Carousel::image('keyframes', $images, [
'animations' => [
'fadeIn' => [
'keyframes' => [
'name' => 'carousel-fade-in',
'steps' => [
'0%' => ['opacity' => '0'],
'100%' => ['opacity' => '1'],
],
],
'duration' => '0.5s',
'timingFunction' => 'ease-out',
],
],
]);
// Export carousel configuration
$carousel = Carousel::image('gallery', $images, [
'autoplay' => true,
'theme' => 'dark',
]);
$config = $carousel->exportConfig();
// Save to file
file_put_contents('carousel-config.json', json_encode($config, JSON_PRETTY_PRINT));
// Load and restore from file
$savedConfig = json_decode(file_get_contents('carousel-config.json'), true);
$restoredCarousel = Carousel::fromConfig($savedConfig);
// Generate static HTML (perfect for SSR, caching, CDN)
$carousel = Carousel::image('gallery', $images);
$staticHtml = $carousel->renderStatic();
// This HTML can be cached, served via CDN, indexed by search engines
// Add JavaScript for interactivity (progressive enhancement)
$fullHtml = $carousel->hydrate($staticHtml);
// Or load JavaScript asynchronously on the client side
use JulienLinard\Carousel\Analytics\FileAnalytics;
// Create analytics provider
$analytics = new FileAnalytics('/var/log/carousel');
// Create carousel with analytics enabled
$carousel = Carousel::image('gallery', $images, [
'analytics' => true,
'analyticsProvider' => $analytics,
]);
// Tracking is automatic (impressions, clicks, interactions)
echo $carousel->render();
// Get report
$report = $analytics->getReport('gallery');
// Returns: [
// 'total_impressions' => 1250,
// 'total_clicks' => 340,
// 'ctr' => 0.272,
// 'most_viewed_slide' => 2,
// 'interaction_breakdown' => [...],
// ]
use JulienLinard\Carousel\ABTesting\ABTest;
use JulienLinard\Carousel\Analytics\FileAnalytics;
$analytics = new FileAnalytics('/var/log/carousel');
// Create two carousel variants
$carouselA = Carousel::heroBanner('hero-a', $bannersA, [
'autoplayInterval' => 3000,
'analytics' => true,
'analyticsProvider' => $analytics,
]);
$carouselB = Carousel::heroBanner('hero-b', $bannersB, [
'autoplayInterval' => 5000,
'analytics' => true,
'analyticsProvider' => $analytics,
]);
// Create A/B test
$test = new ABTest('hero-banner-test', [
'variant_a' => ['carousel' => $carouselA, 'weight' => 50],
'variant_b' => ['carousel' => $carouselB, 'weight' => 50],
], [
'method' => ABTest::METHOD_COOKIE, // Consistency via cookie
'analytics' => $analytics,
]);
// Set cookie (before output)
$test->setCookie(30); // 30 days
// Get selected carousel
$carousel = $test->getCarousel();
echo $carousel->render();
// Later, compare statistics
$stats = $test->getVariantStats();
// Compare performance of both variants
$carousel1 = Carousel::image('carousel-1', $images1);
$carousel2 = Carousel::card('carousel-2', $cards);
// Each carousel has unique IDs and styles
echo $carousel1->render();
echo $carousel2->render();
new CarouselItem(
string $id,
string $title = '',
string $content = '',
string $image = '',
string $link = '',
array $attributes = []
)
use JulienLinard\Carousel\Carousel;
$products = [
[
'id' => '1',
'title' => 'Premium Headphones',
'content' => 'High-quality sound with noise cancellation',
'image' => '/images/headphones.jpg',
'link' => '/products/headphones',
],
[
'id' => '2',
'title' => 'Wireless Mouse',
'content' => 'Ergonomic design with long battery life',
'image' => '/images/mouse.jpg',
'link' => '/products/mouse',
],
// ... more products
];
$carousel = Carousel::card('products', $products, [
'itemsPerSlide' => 4,
'itemsPerSlideDesktop' => 4,
'itemsPerSlideTablet' => 2,
'itemsPerSlideMobile' => 1,
'gap' => 20,
'autoplay' => true,
'autoplayInterval' => 4000,
]);
echo $carousel->render();
use JulienLinard\Carousel\Carousel;
$banners = [
[
'id' => 'banner1',
'title' => 'Welcome to Our Store',
'content' => 'Discover amazing products',
'image' => '/images/banner1.jpg',
'link' => '/shop',
],
[
'id' => 'banner2',
'title' => 'Summer Sale',
'content' => 'Up to 50% off on selected items',
'image' => '/images/banner2.jpg',
'link' => '/sale',
],
];
$carousel = Carousel::image('hero', $banners, [
'height' => '600px',
'autoplay' => true,
'autoplayInterval' => 5000,
'transition' => 'fade',
]);
echo $carousel->render();
use JulienLinard\Carousel\Carousel;
$testimonials = [
[
'id' => '1',
'title' => 'Sarah Johnson',
'content' => 'The best service I\'ve ever experienced. Highly recommend!',
'image' => '/avatars/sarah.jpg',
],
[
'id' => '2',
'title' => 'Michael Chen',
'content' => 'Outstanding quality and fast delivery. Will order again!',
'image' => '/avatars/michael.jpg',
],
];
$carousel = Carousel::testimonial('testimonials', $testimonials, [
'transition' => 'fade',
'autoplayInterval' => 6000,
'showDots' => true,
]);
echo $carousel->render();
bash
composer