images-portfolio
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$page = sev_tort_current_page_config();
|
||||
|
||||
if ( ! function_exists( 'sev_tort_portfolio_image_groups' ) ) {
|
||||
function sev_tort_portfolio_image_groups() {
|
||||
$base_dir = get_template_directory() . '/assets/images/images';
|
||||
$base_uri = get_template_directory_uri() . '/assets/images/images';
|
||||
$groups = array(
|
||||
array(
|
||||
'title' => 'Бенто и праздничные торты',
|
||||
'lead' => 'Компактные торты, надписи, минималистичный и яркий декор для личных поводов.',
|
||||
'path' => '',
|
||||
'alt' => 'Бенто торт на заказ в Севастополе',
|
||||
),
|
||||
array(
|
||||
'title' => 'Медовые торты и классические работы',
|
||||
'lead' => 'Подборка тортов с натуральным декором, ягодами, кремом и аккуратной подачей.',
|
||||
'path' => 'medobory_torty_na_zakaz',
|
||||
'alt' => 'Медовый торт на заказ в Севастополе',
|
||||
),
|
||||
array(
|
||||
'title' => 'Авторские торты Stefany Cake',
|
||||
'lead' => 'Примеры детских, свадебных, тематических и праздничных тортов с индивидуальным декором.',
|
||||
'path' => 'stefanycake_torty_na_zakaz',
|
||||
'alt' => 'Авторский торт на заказ в Севастополе',
|
||||
),
|
||||
);
|
||||
|
||||
foreach ( $groups as $index => $group ) {
|
||||
$directory = trailingslashit( $base_dir );
|
||||
$uri = trailingslashit( $base_uri );
|
||||
|
||||
if ( $group['path'] ) {
|
||||
$directory .= $group['path'] . '/';
|
||||
$uri .= $group['path'] . '/';
|
||||
}
|
||||
|
||||
$files = array();
|
||||
foreach ( array( 'jpg', 'jpeg', 'png', 'webp' ) as $extension ) {
|
||||
$matched_files = glob( $directory . '*.' . $extension );
|
||||
if ( $matched_files ) {
|
||||
$files = array_merge( $files, $matched_files );
|
||||
}
|
||||
}
|
||||
|
||||
natsort( $files );
|
||||
|
||||
$groups[ $index ]['images'] = array_map(
|
||||
function ( $file ) use ( $directory, $uri, $group ) {
|
||||
$name = basename( $file );
|
||||
$number = preg_replace( '/\D+/', '', pathinfo( $name, PATHINFO_FILENAME ) );
|
||||
$size = @getimagesize( $file );
|
||||
|
||||
return array(
|
||||
'src' => $uri . $name,
|
||||
'alt' => trim( $group['alt'] . ( $number ? ' - работа ' . $number : '' ) ),
|
||||
'width' => $size ? $size[0] : 600,
|
||||
'height' => $size ? $size[1] : 600,
|
||||
);
|
||||
},
|
||||
$files
|
||||
);
|
||||
}
|
||||
|
||||
return $groups;
|
||||
}
|
||||
}
|
||||
|
||||
$portfolio_groups = sev_tort_portfolio_image_groups();
|
||||
|
||||
get_header();
|
||||
?>
|
||||
<main class="portfolio-page">
|
||||
<section class="portfolio-hero">
|
||||
<div class="portfolio-hero__inner">
|
||||
<div class="portfolio-hero__content">
|
||||
<span class="portfolio-hero__eyebrow">Портфолио</span>
|
||||
<h1 class="portfolio-hero__title"><?php echo esc_html( $page['h1'] ); ?></h1>
|
||||
<p class="portfolio-hero__lead"><?php echo esc_html( $page['lead'] ); ?></p>
|
||||
</div>
|
||||
<div class="portfolio-hero__meta">
|
||||
<span class="portfolio-hero__meta-number"><?php echo esc_html( array_sum( array_map( static function ( $group ) { return count( $group['images'] ); }, $portfolio_groups ) ) ); ?></span>
|
||||
<span class="portfolio-hero__meta-text">примеров тортов в галерее</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="portfolio-gallery">
|
||||
<div class="portfolio-gallery__inner">
|
||||
<?php foreach ( $portfolio_groups as $group ) : ?>
|
||||
<div class="portfolio-gallery__section">
|
||||
<div class="portfolio-gallery__head">
|
||||
<h2 class="portfolio-gallery__title"><?php echo esc_html( $group['title'] ); ?></h2>
|
||||
<p class="portfolio-gallery__lead"><?php echo esc_html( $group['lead'] ); ?></p>
|
||||
</div>
|
||||
<div class="portfolio-gallery__grid">
|
||||
<?php foreach ( $group['images'] as $image ) : ?>
|
||||
<figure class="portfolio-gallery__item">
|
||||
<img class="portfolio-gallery__image" src="<?php echo esc_url( $image['src'] ); ?>" alt="<?php echo esc_attr( $image['alt'] ); ?>" width="<?php echo esc_attr( $image['width'] ); ?>" height="<?php echo esc_attr( $image['height'] ); ?>" loading="lazy">
|
||||
</figure>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="portfolio-lead">
|
||||
<div class="portfolio-lead__inner">
|
||||
<div class="portfolio-lead__content">
|
||||
<span class="section-eyebrow">Заявка</span>
|
||||
<h2 class="section-title">Понравился стиль из портфолио?</h2>
|
||||
<p class="portfolio-lead__text">Отправьте пример, дату и пожелания по весу. Подскажем начинку, стоимость и ближайший свободный срок.</p>
|
||||
</div>
|
||||
<?php get_template_part( 'template-parts/lead-form', null, array( 'context' => 'portfolio' ) ); ?>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<?php
|
||||
get_footer();
|
||||
Reference in New Issue
Block a user