Jump to content

New website for an austrian car dealer


bernhard
 Share

Recommended Posts

https://www.autohaus-bendel.at/

Mockup_Tablet_7.thumb.jpg.4f368e501744a4e6a1a0dd44c53bf4f5.jpg

Mockup_Smartphone_9.thumb.jpg.248ff3aff1770eb2fe5b6e0576cf44be.jpg

 

Highlights/Features:

New Logo and matching Backend using module AdminStyleRock
image.thumb.png.8e0b0cc844c6caf5f5041861642c399a.png

 

Very good google- and performance-ratings thx to UIkit and ProCache
iuZFe8c.png
AkhwkH0.png

 

Flexible content pages (using private module RockMatrix)
1QGamzi.png

 

Cars are fetched automatically from an austrian cardealer API and converted into ProcessWire pages with a custom filter page: https://www.autohaus-bendel.at/fahrzeuge/
NVQQNv8.jpg

Forms with honeypots and live validation (using private module RockForms based on nette forms)
eOi5bbx.png

 

Web-Coach
The client gets automated reminders if he does not add new content to the website. Thx @wbmnfktr

Bendel Web Coach

The last news entry was created 21 days ago.
There must be something new that will interest your clients ;)

> To the website
> Create news entry

 

Animated page transitions using barba.js

Migrations and deployment using RockMigrations.

Debugging using TracyDebugger.

😎

Mockup_Rechner_3.jpg

  • Like 15
  • Thanks 1
Link to comment
Share on other sites

10 hours ago, bernhard said:

 

Cars are fetched automatically from an austrian cardealer API and converted into ProcessWire pages with a custom filter page: https://www.autohaus-bendel.at/fahrzeuge/
NVQQNv8.jpg

 

Fascinating! Can you explain how you approached the API Data fetchig?
Do you use a simple Ajax Request when filtering items or are you actually creating pages, populated with data and use those instead?

I am always interested in methods to "feed" processwire from outside nowadays.

Link to comment
Share on other sites

Data is fetched via cron every night and then PW pages are created so that the client can enrich those pages with data that is not part of the API but is helpful on the website (eg a PDF sheet for the car or the point of contact):

0Q9BjR2.jpg

API-Fields are read-only. If a car is created by the cron and the point of contact is empty, the client gets a link to directly edit this page and select the POC 🙂 

If cars are sold, the cron automatically trashes those pages on the website.

Ah... I forgot a nice detail! They have a custom branded PDF viewer:

U6n66mi.jpg

  • Like 4
Link to comment
Share on other sites

  • 2 weeks later...
On 6/15/2022 at 3:57 PM, szabesz said:

Nice site, BTW!

thx @szabesz

On 6/25/2022 at 12:00 PM, Andy said:

Hi @bernhard

Impressive project. It's a little jealous that I can't do that yet.

Tell me please, why did you use RockForms here when you have the PW Form Builder?

Hi @Andy thx for your kind words!

well... I like to do thinks in code rather than clicking around a GUI, because then I have all in GIT and can automatically deploy it to production. In addition to that I love how you can write form code once and get frontend and backend validation of your forms automatically. The next point is that I don't like the embed methods via Iframe and I never got used to the other output method - how is it called? Direct output?

Another point is that I try to avoid hook hell as much as possible. Hooks are great, but I started to adopt concepts where things that belong together are in the same file or folder. That's why every form that I create for RockForms is one single PHP file, that defines all the necessary pieces (fields, after submit action like sending an email, markup for the frontend, error messages...).

<?php namespace ProcessWire;
/** @var RockForms $rockforms */
$form = $rockforms->form('newsletter', [
  'token' => false, // disable csrf for use with procache!
]);

$form->setMarkup("field(email)", "<div class='sr-only'>{label}</div>{control}{errors}");

$form->getElementPrototype()->addClass('mb-12');
$form->addText("email", "E-Mail Adresse")
  ->setHtmlAttribute("class", "text-gray-dark w-full focus:border-violet focus:ring-violet")
  ->setHtmlAttribute("placeholder", "Ihre E-Mail Adresse")
  ->isRequired();
$form->addMarkup("<button type='submit' class='btn btn-sm btn-pink !px-12 mt-6'>Newsletter abonnieren</button>");

if($form->isSuccess()) {
  $values = $form->getValues();

  if($form->once()) {
    /** @var RockMails $mails */
    $mails = $this->wire('modules')->get('RockMails');
    $mails->mail('newsletter')
      ->to('office@example.com')
      ->subject("New Newsletter Subscription")
      ->bodyHTML($form->dataTable())
      ->send();
    $this->log('sent mail');
  }

  $form->success('<span style="color:black;">Thank you for your subscription</span>');
}

return $form;

This is an example for an easy newsletter subscription form.

For me it is also better to code my own module because then I have a lot more freedom and can add extensions and new features while working on any project that uses the module. For example the $form->dataTable() is something I need very often (send form data via mail or show form data in the backend).

I guess I'll release this as commercial module soon - if anybody reads this and is interested in a closed alpha write me a PM 🙂 

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...