Phase 8 structural enhancements: Communities, Resources, Footer
Completed tasks: - html-7jz: Added Communities section with landing page and community template - html-t8u: Added Resources section with Buyer's Guide and Seller's Guide - html-3nq: Enhanced footer with office hours, professional logos, license info New files: - page-communities.php: Communities landing page listing all locations - template-community.php: Individual community page template - page-resources.php: Resources hub with featured guides - template-resource.php: Individual resource/guide page template - content-communities.scss, content-resources.scss: Styles for new pages WordPress changes: - Created Communities page with 3 child pages (Albert Lea, Austin, Glenville) - Created Resources page with 2 child pages (Buyer's Guide, Seller's Guide) - Added Communities and Resources to primary navigation menu - Added new location terms for communities Footer enhancements: - Office hours section (4-column grid now) - Professional association logos (REALTOR, Equal Housing) - License number display
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* Template for the Communities landing page
|
||||
*
|
||||
* @package HomeProz
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
get_header();
|
||||
|
||||
// Get all community locations
|
||||
$communities = get_terms(array(
|
||||
'taxonomy' => 'property_location',
|
||||
'hide_empty' => false,
|
||||
'orderby' => 'name',
|
||||
'order' => 'ASC',
|
||||
));
|
||||
?>
|
||||
|
||||
<main id="primary" class="site-main communities-page-main">
|
||||
|
||||
<?php
|
||||
// Hero Section
|
||||
get_template_part('template-parts/components/hero-section', null, array(
|
||||
'title' => 'Communities We Serve',
|
||||
'subtitle' => 'Explore neighborhoods and find your perfect location in Southern Minnesota',
|
||||
'size' => 'small',
|
||||
));
|
||||
?>
|
||||
|
||||
<!-- Communities Grid Section -->
|
||||
<section class="communities-grid-section">
|
||||
<div class="container">
|
||||
<?php if (!empty($communities) && !is_wp_error($communities)) : ?>
|
||||
<div class="communities-grid">
|
||||
<?php foreach ($communities as $community) :
|
||||
// Check if there's a corresponding page for this community
|
||||
$community_page = get_page_by_path('communities/' . $community->slug);
|
||||
$community_url = $community_page
|
||||
? get_permalink($community_page)
|
||||
: home_url('/properties/?location=' . $community->slug);
|
||||
|
||||
// Get property count for this community
|
||||
$property_count = $community->count;
|
||||
?>
|
||||
<a href="<?php echo esc_url($community_url); ?>" class="community-card">
|
||||
<div class="community-card-content">
|
||||
<h3 class="community-card-title"><?php echo esc_html($community->name); ?></h3>
|
||||
<span class="community-card-count">
|
||||
<?php echo esc_html($property_count); ?>
|
||||
<?php echo $property_count === 1 ? 'Property' : 'Properties'; ?>
|
||||
</span>
|
||||
<span class="community-card-arrow">
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M5 12h14M12 5l7 7-7 7"/>
|
||||
</svg>
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<p class="no-communities-message">No communities found.</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- About Our Service Area -->
|
||||
<section class="communities-about-section">
|
||||
<div class="container">
|
||||
<div class="communities-about-content">
|
||||
<h2>Your Local Real Estate Experts</h2>
|
||||
<p>HomeProz Real Estate serves the Albert Lea area and surrounding Southern Minnesota communities. Our agents have deep roots in these neighborhoods and can help you find the perfect home, whether you're looking for a family residence, investment property, or commercial space.</p>
|
||||
<p>Each community has its own unique character, amenities, and lifestyle. From the vibrant downtown of Albert Lea to the quiet charm of smaller towns like Glenville and Emmons, we'll help you discover the community that's right for you.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
// Contact CTA Section
|
||||
get_template_part('template-parts/components/cta-section', null, array(
|
||||
'title' => 'Not Sure Which Community is Right for You?',
|
||||
'text' => 'Our local experts can help you explore different neighborhoods and find the perfect fit for your lifestyle and budget.',
|
||||
'button_text' => 'Talk to an Agent',
|
||||
'button_url' => home_url('/contact/'),
|
||||
'style' => 'accent',
|
||||
));
|
||||
?>
|
||||
|
||||
</main>
|
||||
|
||||
<?php
|
||||
get_footer();
|
||||
@@ -0,0 +1,140 @@
|
||||
<?php
|
||||
/**
|
||||
* Template for the Resources landing page
|
||||
*
|
||||
* @package HomeProz
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
get_header();
|
||||
|
||||
// Get child pages (resource guides)
|
||||
$resource_pages = get_pages(array(
|
||||
'parent' => get_the_ID(),
|
||||
'sort_column' => 'menu_order',
|
||||
'sort_order' => 'ASC',
|
||||
));
|
||||
?>
|
||||
|
||||
<main id="primary" class="site-main resources-page-main">
|
||||
|
||||
<?php
|
||||
// Hero Section
|
||||
get_template_part('template-parts/components/hero-section', null, array(
|
||||
'title' => 'Resources & Guides',
|
||||
'subtitle' => 'Everything you need to navigate the home buying and selling process',
|
||||
'size' => 'small',
|
||||
));
|
||||
?>
|
||||
|
||||
<!-- Main Resources Section -->
|
||||
<section class="resources-featured-section">
|
||||
<div class="container">
|
||||
<div class="resources-featured-grid">
|
||||
<!-- Buyer's Guide -->
|
||||
<div class="resource-featured-card">
|
||||
<div class="resource-featured-icon">
|
||||
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
|
||||
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
|
||||
<polyline points="9 22 9 12 15 12 15 22"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h2 class="resource-featured-title">Buyer's Guide</h2>
|
||||
<p class="resource-featured-description">
|
||||
Ready to buy your first home or next property? Our comprehensive guide walks you through every step of the home buying process, from getting pre-approved to closing day.
|
||||
</p>
|
||||
<a href="<?php echo esc_url(home_url('/resources/buyers-guide/')); ?>" class="btn btn-primary">
|
||||
Read the Buyer's Guide
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Seller's Guide -->
|
||||
<div class="resource-featured-card">
|
||||
<div class="resource-featured-icon">
|
||||
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
|
||||
<rect x="2" y="7" width="20" height="14" rx="2" ry="2"/>
|
||||
<path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/>
|
||||
<line x1="12" y1="11" x2="12" y2="17"/>
|
||||
<line x1="9" y1="14" x2="15" y2="14"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h2 class="resource-featured-title">Seller's Guide</h2>
|
||||
<p class="resource-featured-description">
|
||||
Thinking about selling? Learn how to prepare your home for the market, price it right, and navigate the selling process to get the best possible return on your investment.
|
||||
</p>
|
||||
<a href="<?php echo esc_url(home_url('/resources/sellers-guide/')); ?>" class="btn btn-primary">
|
||||
Read the Seller's Guide
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Additional Resources -->
|
||||
<section class="resources-additional-section">
|
||||
<div class="container">
|
||||
<header class="section-header">
|
||||
<h2 class="section-title">Additional Resources</h2>
|
||||
<p class="section-subtitle">Helpful information for your real estate journey</p>
|
||||
</header>
|
||||
|
||||
<div class="resources-additional-grid">
|
||||
<div class="resource-card">
|
||||
<div class="resource-card-icon">
|
||||
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
|
||||
<polyline points="14 2 14 8 20 8"/>
|
||||
<line x1="16" y1="13" x2="8" y2="13"/>
|
||||
<line x1="16" y1="17" x2="8" y2="17"/>
|
||||
<polyline points="10 9 9 9 8 9"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="resource-card-title">Moving Checklist</h3>
|
||||
<p class="resource-card-description">A comprehensive checklist to help you stay organized during your move.</p>
|
||||
</div>
|
||||
|
||||
<div class="resource-card">
|
||||
<div class="resource-card-icon">
|
||||
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
|
||||
<rect x="1" y="4" width="22" height="16" rx="2" ry="2"/>
|
||||
<line x1="1" y1="10" x2="23" y2="10"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="resource-card-title">Mortgage Calculator</h3>
|
||||
<p class="resource-card-description">Estimate your monthly payments and determine how much home you can afford.</p>
|
||||
</div>
|
||||
|
||||
<div class="resource-card">
|
||||
<div class="resource-card-icon">
|
||||
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true">
|
||||
<circle cx="12" cy="12" r="10"/>
|
||||
<path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
|
||||
<line x1="12" y1="17" x2="12.01" y2="17"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="resource-card-title">FAQ</h3>
|
||||
<p class="resource-card-description">Answers to commonly asked questions about buying and selling real estate.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
// Contact CTA Section
|
||||
get_template_part('template-parts/components/cta-section', null, array(
|
||||
'title' => 'Have Questions?',
|
||||
'text' => 'Our experienced agents are here to help you navigate the real estate process. Reach out anytime.',
|
||||
'button_text' => 'Contact Us',
|
||||
'button_url' => home_url('/contact/'),
|
||||
'style' => 'accent',
|
||||
));
|
||||
?>
|
||||
|
||||
</main>
|
||||
|
||||
<?php
|
||||
get_footer();
|
||||
@@ -20,6 +20,8 @@
|
||||
@import '../template-parts/content/content-archive.scss';
|
||||
@import '../template-parts/sidebar/blog-sidebar.scss';
|
||||
@import '../template-parts/content/content-templates.scss';
|
||||
@import '../template-parts/content/content-communities.scss';
|
||||
@import '../template-parts/content/content-resources.scss';
|
||||
@import '../template-parts/property/property-card.scss';
|
||||
@import '../template-parts/property/property-filters.scss';
|
||||
@import '../template-parts/property/property-gallery.scss';
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* Template Name: Community Page
|
||||
*
|
||||
* Template for individual community/location pages
|
||||
*
|
||||
* @package HomeProz
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
get_header();
|
||||
|
||||
// Get the community slug from the page slug
|
||||
$community_slug = get_post_field('post_name', get_the_ID());
|
||||
|
||||
// Get properties in this community
|
||||
$community_properties = new WP_Query(array(
|
||||
'post_type' => 'property',
|
||||
'posts_per_page' => 6,
|
||||
'tax_query' => array(
|
||||
array(
|
||||
'taxonomy' => 'property_location',
|
||||
'field' => 'slug',
|
||||
'terms' => $community_slug,
|
||||
),
|
||||
),
|
||||
'orderby' => 'date',
|
||||
'order' => 'DESC',
|
||||
));
|
||||
|
||||
// Get the location term for additional info
|
||||
$location_term = get_term_by('slug', $community_slug, 'property_location');
|
||||
?>
|
||||
|
||||
<main id="primary" class="site-main community-page-main">
|
||||
|
||||
<?php
|
||||
// Hero Section
|
||||
$featured_image = get_the_post_thumbnail_url(get_the_ID(), 'full');
|
||||
get_template_part('template-parts/components/hero-section', null, array(
|
||||
'title' => get_the_title(),
|
||||
'subtitle' => 'Discover homes and properties in ' . get_the_title() . ', Minnesota',
|
||||
'background_image' => $featured_image,
|
||||
'size' => 'small',
|
||||
));
|
||||
?>
|
||||
|
||||
<!-- Community Description Section -->
|
||||
<section class="community-about-section">
|
||||
<div class="container">
|
||||
<div class="community-about-content">
|
||||
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
|
||||
<?php the_content(); ?>
|
||||
<?php endwhile; endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Properties in This Community -->
|
||||
<section class="community-properties-section">
|
||||
<div class="container">
|
||||
<header class="section-header">
|
||||
<h2 class="section-title">Properties in <?php the_title(); ?></h2>
|
||||
<p class="section-subtitle">Browse available homes and land in this area</p>
|
||||
</header>
|
||||
|
||||
<?php if ($community_properties->have_posts()) : ?>
|
||||
<div class="property-grid property-grid--3col">
|
||||
<?php
|
||||
while ($community_properties->have_posts()) :
|
||||
$community_properties->the_post();
|
||||
get_template_part('template-parts/property/property-card');
|
||||
endwhile;
|
||||
wp_reset_postdata();
|
||||
?>
|
||||
</div>
|
||||
|
||||
<div class="section-footer">
|
||||
<a href="<?php echo esc_url(home_url('/properties/?location=' . $community_slug)); ?>" class="btn btn-secondary">
|
||||
View All Properties in <?php the_title(); ?>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<path d="M5 12h14M12 5l7 7-7 7"/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<p class="no-properties-message">No properties currently available in <?php the_title(); ?>. Please check back soon or <a href="<?php echo esc_url(home_url('/contact/')); ?>">contact us</a> for assistance.</p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
// Contact CTA Section
|
||||
get_template_part('template-parts/components/cta-section', null, array(
|
||||
'title' => 'Looking for a Home in ' . get_the_title() . '?',
|
||||
'text' => 'Our local experts know this community inside and out. Let us help you find the perfect property.',
|
||||
'button_text' => 'Contact Us Today',
|
||||
'button_url' => home_url('/contact/'),
|
||||
'style' => 'accent',
|
||||
));
|
||||
?>
|
||||
|
||||
</main>
|
||||
|
||||
<?php
|
||||
get_footer();
|
||||
@@ -0,0 +1,204 @@
|
||||
/**
|
||||
* Communities Page Styles
|
||||
*
|
||||
* @package HomeProz
|
||||
*/
|
||||
|
||||
// Communities Landing Page
|
||||
.communities-page-main {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.communities-grid-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-card);
|
||||
}
|
||||
|
||||
.communities-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 1.5rem;
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.community-card {
|
||||
display: block;
|
||||
background-color: var(--color-bg-dark);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: 0.5rem;
|
||||
padding: 1.5rem;
|
||||
text-decoration: none;
|
||||
transition: border-color 0.2s ease, transform 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
border-color: var(--color-accent);
|
||||
transform: translateY(-2px);
|
||||
|
||||
.community-card-arrow {
|
||||
transform: translateX(4px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.community-card-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.community-card-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.25rem;
|
||||
color: var(--color-text);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.community-card-count {
|
||||
font-size: 0.875rem;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.community-card-arrow {
|
||||
margin-top: 0.5rem;
|
||||
color: var(--color-accent);
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
|
||||
.communities-about-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-dark);
|
||||
}
|
||||
|
||||
.communities-about-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
|
||||
h2 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 2rem;
|
||||
color: var(--color-text);
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.125rem;
|
||||
color: var(--color-text-muted);
|
||||
line-height: 1.7;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.no-communities-message {
|
||||
text-align: center;
|
||||
color: var(--color-text-muted);
|
||||
font-size: 1.125rem;
|
||||
padding: 3rem 0;
|
||||
}
|
||||
|
||||
// Individual Community Page
|
||||
.community-page-main {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.community-about-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-card);
|
||||
}
|
||||
|
||||
.community-about-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
|
||||
h2, h3, h4 {
|
||||
font-family: var(--font-display);
|
||||
color: var(--color-text);
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.125rem;
|
||||
color: var(--color-text-muted);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
color: var(--color-text-muted);
|
||||
margin-bottom: 1rem;
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.community-properties-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-dark);
|
||||
|
||||
.section-header {
|
||||
text-align: center;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 2.25rem;
|
||||
color: var(--color-text);
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.section-subtitle {
|
||||
font-size: 1.125rem;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.section-footer {
|
||||
text-align: center;
|
||||
margin-top: 2.5rem;
|
||||
}
|
||||
|
||||
.property-grid--3col {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 1.5rem;
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.no-properties-message {
|
||||
text-align: center;
|
||||
color: var(--color-text-muted);
|
||||
font-size: 1.125rem;
|
||||
padding: 3rem 0;
|
||||
|
||||
a {
|
||||
color: var(--color-accent-light);
|
||||
|
||||
&:hover {
|
||||
color: var(--color-accent-hover);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,288 @@
|
||||
/**
|
||||
* Resources Page Styles
|
||||
*
|
||||
* @package HomeProz
|
||||
*/
|
||||
|
||||
// Resources Landing Page
|
||||
.resources-page-main {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.resources-featured-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-card);
|
||||
}
|
||||
|
||||
.resources-featured-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 2rem;
|
||||
|
||||
@media (max-width: 768px) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.resource-featured-card {
|
||||
background-color: var(--color-bg-dark);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: 0.5rem;
|
||||
padding: 2.5rem;
|
||||
text-align: center;
|
||||
transition: border-color 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
border-color: var(--color-accent);
|
||||
}
|
||||
}
|
||||
|
||||
.resource-featured-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin: 0 auto 1.5rem;
|
||||
background-color: rgba(159, 55, 48, 0.1);
|
||||
border-radius: 50%;
|
||||
color: var(--color-accent);
|
||||
}
|
||||
|
||||
.resource-featured-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.75rem;
|
||||
color: var(--color-text);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.resource-featured-description {
|
||||
font-size: 1rem;
|
||||
color: var(--color-text-muted);
|
||||
line-height: 1.6;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.resources-additional-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-dark);
|
||||
|
||||
.section-header {
|
||||
text-align: center;
|
||||
margin-bottom: 3rem;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 2.25rem;
|
||||
color: var(--color-text);
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.section-subtitle {
|
||||
font-size: 1.125rem;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
}
|
||||
|
||||
.resources-additional-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 1.5rem;
|
||||
|
||||
@media (max-width: 992px) {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.resource-card {
|
||||
background-color: var(--color-bg-card);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: 0.5rem;
|
||||
padding: 1.5rem;
|
||||
transition: border-color 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
border-color: var(--color-accent);
|
||||
}
|
||||
}
|
||||
|
||||
.resource-card-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
margin-bottom: 1rem;
|
||||
background-color: rgba(159, 55, 48, 0.1);
|
||||
border-radius: 0.5rem;
|
||||
color: var(--color-accent);
|
||||
}
|
||||
|
||||
.resource-card-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.25rem;
|
||||
color: var(--color-text);
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.resource-card-description {
|
||||
font-size: 0.875rem;
|
||||
color: var(--color-text-muted);
|
||||
line-height: 1.5;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
// Individual Resource Page
|
||||
.resource-page-main {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.resource-content-section {
|
||||
padding: 4rem 0;
|
||||
background-color: var(--color-bg-card);
|
||||
}
|
||||
|
||||
.resource-content-layout {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 320px;
|
||||
gap: 3rem;
|
||||
|
||||
@media (max-width: 992px) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
.resource-content {
|
||||
h2, h3, h4 {
|
||||
font-family: var(--font-display);
|
||||
color: var(--color-text);
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1.125rem;
|
||||
color: var(--color-text-muted);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
color: var(--color-text-muted);
|
||||
margin-bottom: 1.5rem;
|
||||
padding-left: 1.5rem;
|
||||
font-size: 1.125rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 4px solid var(--color-accent);
|
||||
padding-left: 1.5rem;
|
||||
margin: 1.5rem 0;
|
||||
font-style: italic;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
}
|
||||
|
||||
.resource-sidebar {
|
||||
@media (max-width: 992px) {
|
||||
order: -1;
|
||||
}
|
||||
}
|
||||
|
||||
.resource-sidebar-sticky {
|
||||
position: sticky;
|
||||
top: 100px;
|
||||
|
||||
@media (max-width: 992px) {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
.resource-sidebar-card {
|
||||
background-color: var(--color-bg-dark);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: 0.5rem;
|
||||
padding: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
|
||||
h3 {
|
||||
font-family: var(--font-display);
|
||||
font-size: 1.25rem;
|
||||
color: var(--color-text);
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 0.875rem;
|
||||
color: var(--color-text-muted);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.resource-sidebar-phone {
|
||||
text-align: center;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0;
|
||||
|
||||
a {
|
||||
color: var(--color-accent-light);
|
||||
|
||||
&:hover {
|
||||
color: var(--color-accent-hover);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.resource-sidebar-links {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5rem;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--color-text-muted);
|
||||
font-size: 0.875rem;
|
||||
|
||||
&:hover {
|
||||
color: var(--color-accent-light);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -15,6 +15,16 @@ $email = homeproz_get_option('email');
|
||||
$address = homeproz_get_option('address');
|
||||
$facebook = homeproz_get_option('facebook');
|
||||
$tiktok = homeproz_get_option('tiktok');
|
||||
|
||||
// Office hours - can be moved to theme options later
|
||||
$office_hours = array(
|
||||
'Mon-Fri' => '9:00am - 5:00pm',
|
||||
'Saturday' => 'By Appointment',
|
||||
'Sunday' => 'Closed',
|
||||
);
|
||||
|
||||
// License info - can be moved to theme options later
|
||||
$license_info = 'MN License #40229984';
|
||||
?>
|
||||
|
||||
<footer id="colophon" class="site-footer">
|
||||
@@ -97,6 +107,41 @@ $tiktok = homeproz_get_option('tiktok');
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- Office Hours -->
|
||||
<div class="footer-column footer-hours">
|
||||
<h4 class="footer-heading">Office Hours</h4>
|
||||
<ul class="hours-list">
|
||||
<?php foreach ($office_hours as $day => $hours) : ?>
|
||||
<li class="hours-item">
|
||||
<span class="hours-day"><?php echo esc_html($day); ?></span>
|
||||
<span class="hours-time"><?php echo esc_html($hours); ?></span>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Professional Associations & License Info -->
|
||||
<div class="footer-credentials">
|
||||
<div class="footer-logos">
|
||||
<!-- REALTOR Logo -->
|
||||
<div class="credential-logo" title="REALTOR">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="currentColor" aria-label="REALTOR">
|
||||
<text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" font-size="6" font-weight="bold">R</text>
|
||||
<circle cx="12" cy="12" r="11" fill="none" stroke="currentColor" stroke-width="1"/>
|
||||
</svg>
|
||||
</div>
|
||||
<!-- Equal Housing Logo -->
|
||||
<div class="credential-logo" title="Equal Housing Opportunity">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-label="Equal Housing Opportunity">
|
||||
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
|
||||
<line x1="8" y1="14" x2="16" y2="14"/>
|
||||
<line x1="8" y1="17" x2="16" y2="17"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<p class="footer-license"><?php echo esc_html($license_info); ?></p>
|
||||
</div>
|
||||
|
||||
<!-- Footer Bottom -->
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
grid-template-columns: 2fr 1fr 1.5fr;
|
||||
gap: 3rem;
|
||||
grid-template-columns: 1.5fr 1fr 1.25fr 1fr;
|
||||
gap: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,6 +162,73 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Office Hours
|
||||
.footer-hours {
|
||||
.hours-list {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.hours-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: 1rem;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 0.875rem;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.hours-day {
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.hours-time {
|
||||
color: var(--color-text);
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
// Credentials Section
|
||||
.footer-credentials {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
padding-top: 2rem;
|
||||
margin-top: 2rem;
|
||||
border-top: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.footer-logos {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.credential-logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--color-text-muted);
|
||||
opacity: 0.7;
|
||||
|
||||
svg {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
}
|
||||
|
||||
.footer-license {
|
||||
margin: 0;
|
||||
font-size: 0.75rem;
|
||||
color: var(--color-sold);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// Footer Bottom
|
||||
.footer-bottom {
|
||||
display: flex;
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* Template Name: Resource Page
|
||||
*
|
||||
* Template for individual resource/guide pages
|
||||
*
|
||||
* @package HomeProz
|
||||
*/
|
||||
|
||||
// Prevent direct access
|
||||
if (!defined('ABSPATH')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
get_header();
|
||||
?>
|
||||
|
||||
<main id="primary" class="site-main resource-page-main">
|
||||
|
||||
<?php
|
||||
// Hero Section
|
||||
$featured_image = get_the_post_thumbnail_url(get_the_ID(), 'full');
|
||||
get_template_part('template-parts/components/hero-section', null, array(
|
||||
'title' => get_the_title(),
|
||||
'subtitle' => get_the_excerpt() ?: 'A comprehensive guide from HomeProz Real Estate',
|
||||
'background_image' => $featured_image,
|
||||
'size' => 'small',
|
||||
));
|
||||
?>
|
||||
|
||||
<!-- Resource Content Section -->
|
||||
<section class="resource-content-section">
|
||||
<div class="container">
|
||||
<div class="resource-content-layout">
|
||||
<!-- Main Content -->
|
||||
<article class="resource-content">
|
||||
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
|
||||
<?php the_content(); ?>
|
||||
<?php endwhile; endif; ?>
|
||||
</article>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<aside class="resource-sidebar">
|
||||
<div class="resource-sidebar-sticky">
|
||||
<!-- Quick Contact -->
|
||||
<div class="resource-sidebar-card">
|
||||
<h3>Need Help?</h3>
|
||||
<p>Our agents are ready to assist you with any questions.</p>
|
||||
<a href="<?php echo esc_url(home_url('/contact/')); ?>" class="btn btn-primary btn-block">
|
||||
Contact Us
|
||||
</a>
|
||||
<p class="resource-sidebar-phone">
|
||||
Or call: <a href="tel:<?php echo esc_attr(preg_replace('/[^0-9]/', '', homeproz_get_option('phone'))); ?>"><?php echo esc_html(homeproz_get_option('phone')); ?></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Related Resources -->
|
||||
<div class="resource-sidebar-card">
|
||||
<h3>Related Resources</h3>
|
||||
<ul class="resource-sidebar-links">
|
||||
<?php
|
||||
// Get sibling pages
|
||||
$parent_id = wp_get_post_parent_id(get_the_ID());
|
||||
if ($parent_id) {
|
||||
$siblings = get_pages(array(
|
||||
'parent' => $parent_id,
|
||||
'exclude' => get_the_ID(),
|
||||
'sort_column' => 'menu_order',
|
||||
));
|
||||
foreach ($siblings as $sibling) :
|
||||
?>
|
||||
<li>
|
||||
<a href="<?php echo esc_url(get_permalink($sibling->ID)); ?>">
|
||||
<?php echo esc_html($sibling->post_title); ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php
|
||||
endforeach;
|
||||
}
|
||||
?>
|
||||
<li>
|
||||
<a href="<?php echo esc_url(home_url('/resources/')); ?>">
|
||||
View All Resources
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
// Contact CTA Section
|
||||
get_template_part('template-parts/components/cta-section', null, array(
|
||||
'title' => 'Ready to Get Started?',
|
||||
'text' => 'Let our experienced team help you achieve your real estate goals.',
|
||||
'button_text' => 'Contact an Agent',
|
||||
'button_url' => home_url('/contact/'),
|
||||
'style' => 'accent',
|
||||
));
|
||||
?>
|
||||
|
||||
</main>
|
||||
|
||||
<?php
|
||||
get_footer();
|
||||
Reference in New Issue
Block a user