<section class="section section-page" id="#main"> <header class="section__header"> <div class="wrap"> <a href="<?= $page->parent()->url(); ?>"><?= $page->parent()->title(); ?></a> <h1><?= $page->title(); ?></h1> </div> </header> <div class="section__content js-lightbox"> <?php if ( $page->text()->isNotEmpty() ) : ?> <div class="wrap"> <?php snippet('content/cards/card-gallery', ['gallery' => $page, 'image' => $page->gallery()->toStructure()->first(), 'hide_title' => true]) ?> <hr /> </div> <?php endif; ?> <div class="flex flex--equal-height / gallery / animate-stagger-up"> <?php $i = 0; foreach ( $page->gallery()->toStructure() as $image) : ?> <div class="flex__item c-4 flex__item--medium-half flex__item--narrow-half"> <article class="gallery__item"> <a class="js-open-lightbox" href="" data-lightbox="lightbox-images" data-index="<?= $i; ?>"> <?php $img_name = image( $image )->img_name(); ?> <div class="gallery__image"> <?= $image->responsiveImage([ 'default' => [365, 250], 'smalldesk' => [300, 200], 'medium' => [340, 235], 'narrow' => [260, 175], 'mobile' => [440,250] ]); ?> <?php if ( image( $image )->youtube()->isNotEmpty() ) : ?> <svg class="icon icon-play"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-play"></use></svg> <?php else: ?> <svg class="icon icon-image"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-fullscreen"></use></svg> <?php endif; ?> </div> <?php if ( image( $image )->description()->isNotEmpty() || image( $image )->img_name()->isNotEmpty() ) : ?> <figcaption class="gallery__caption"> <h3><?= image( $image )->img_name() ?></h3> <?= image( $image )->description()->kt(); ?> </figcaption> <?php endif; ?>
/** * Tpl * * Super simple template engine * * @package Kirby Toolkit * @author Bastian Allgeier <bastian@getkirby.com> * @link http://getkirby.com * @copyright Bastian Allgeier * @license http://www.opensource.org/licenses/mit-license.php MIT License */ class Tpl extends Silo { public static $data = array(); public static function load($_file, $_data = array(), $_return = true) { if(!file_exists($_file)) return false; ob_start(); extract(array_merge(static::$data, (array)$_data)); require($_file); $_content = ob_get_contents(); ob_end_clean(); if($_return) return $_content; echo $_content; } }
if($template instanceof Page) { $page = $template; $file = $page->templateFile(); $data = $this->data($page, $data); } else { $file = $template; $data = $this->data(null, $data); } // check for an existing template if(!file_exists($file)) { throw new Exception('The template could not be found'); } // merge and register the template data globally $tplData = tpl::$data; tpl::$data = array_merge(tpl::$data, $data); // load the template $result = tpl::load($file, null, $return); // reset the template data tpl::$data = $tplData; return $result; } }
} return $template; } // return a fresh template return $this->template($page, $data); } /** * Template configuration * * @param Page $page * @param array $data * @return string */ public function template(Page $page, $data = array()) { return $this->component('template')->render($page, $data); } public function request() { if(!is_null($this->request)) return $this->request; return $this->request = new Request($this); } public function router() { return $this->router; } public function route() { return $this->route; } /** * Starts the router, renders the page and returns the response * * @return mixed */
// check for modified content within the content folder // and auto-expire the page cache in such a case if($this->options['cache.autoupdate'] and $this->cache()->exists($cacheId)) { // get the creation date of the cache file $created = $this->cache()->created($cacheId); // make sure to kill the cache if the site has been modified if($this->site->wasModifiedAfter($created)) { $this->cache()->remove($cacheId); } } // try to fetch the template from cache $template = $this->cache()->get($cacheId); // fetch fresh content if the cache is empty if(empty($template)) { $template = $this->template($page, $data); // store the result for the next round $this->cache()->set($cacheId, $template); } return $template; } // return a fresh template return $this->template($page, $data); } /** * Template configuration * * @param Page $page * @param array $data * @return string */
* @link http://getkirby.com * @copyright Bastian Allgeier * @license http://getkirby.com/license */ class Response extends \Kirby\Component { /** * Builds and return the response by various input * * @param mixed $response * @return mixed */ public function make($response) { if(is_string($response)) { return $this->kirby->render(page($response)); } else if(is_array($response)) { return $this->kirby->render(page($response[0]), $response[1]); } else if(is_a($response, 'Page')) { return $this->kirby->render($response); } else if(is_a($response, 'Response')) { return $response; } else { return null; } } }
// check for a valid route if(is_null($this->route)) { header::status('500'); header::type('json'); die(json_encode(array( 'status' => 'error', 'message' => 'Invalid route or request method' ))); } // call the router action with all arguments from the pattern $response = call($this->route->action(), $this->route->arguments()); // load all language variables // this can only be loaded once the router action has been called // otherwise the current language is not yet available $this->localize(); // build the response $this->response = $this->component('response')->make($response); // store the current language in the session if( $this->option('language.detect') && $this->site()->multilang() && $this->site()->language() ) { s::set('kirby_language', $this->site()->language()->code()); } return $this->response; } /** * Register a new hook * * @param string/array $hook The name of the hook * @param closure $callback */
define('DS', DIRECTORY_SEPARATOR); // loading composer if(file_exists(__DIR__ . DS . 'vendor' . DS . 'autoload.php')) { require_once __DIR__ . DS . 'vendor' . DS . 'autoload.php'; } // load kirby require(__DIR__ . DS . 'kirby' . DS . 'bootstrap.php'); // check for a custom site.php if(file_exists(__DIR__ . DS . 'site.php')) { require(__DIR__ . DS . 'site.php'); } else { $kirby = kirby(); } // render echo $kirby->launch();
Key | Value |
Kirby Toolkit | v2.5.12 |
Kirby CMS | v2.5.12 |
Key | Value |
REDIRECT_REDIRECT_UNIQUE_ID | ZgalknvKk6utqE-jy0AKuQAAABc |
REDIRECT_REDIRECT_WAAS_MODE | 0 |
REDIRECT_REDIRECT_DOCUMENT_ROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REDIRECT_REDIRECT_UI_SUEXEC_DEFAULT_CHROOT_ID | 14 |
REDIRECT_REDIRECT_UI_SUEXEC_FSTATD_UNIXSOCKET | /run/ui-fstatd.suexec.socket |
REDIRECT_REDIRECT_UI_SUEXEC_STATISTICS_UNIXSOCKET | /homepages/sclientMF/http.sock.bin |
REDIRECT_REDIRECT_HTTPS | on |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_CPU | 60 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_MEM | 896 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCSOFT | 25 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCHARD | 37 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_JIMDO | 800 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_CPU_JIMDO | 60 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_MEM_JIMDO | 768 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCSOFT_JIMDO | 24 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCHARD_JIMDO | 24 |
REDIRECT_REDIRECT_DBENTRY_HOST | speedskater-kriterium.de |
REDIRECT_REDIRECT_DBENTRY_VALUE | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website:d0000#CPU 60 #MEM 524288 #CGI 524618 #NPROC 20 #TAID 80473710 #LANG 0 #PARKING 1 #RSCLVL 500 #STAT 1 #CHROOT 14 |
REDIRECT_REDIRECT_DBENTRY_DOCROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REDIRECT_REDIRECT_DBENTRY_HASH | d0000 |
REDIRECT_REDIRECT_DBENTRY__CPU | 60 |
REDIRECT_REDIRECT_DBENTRY__MEM | 524288 |
REDIRECT_REDIRECT_DBENTRY__CGI | 524618 |
REDIRECT_REDIRECT_DBENTRY__NPROC | 20 |
REDIRECT_REDIRECT_DBENTRY__TAID | 80473710 |
REDIRECT_REDIRECT_DBENTRY__LANG | 0 |
REDIRECT_REDIRECT_DBENTRY__PARKING | 1 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL | 500 |
REDIRECT_REDIRECT_DBENTRY__STAT | 1 |
REDIRECT_REDIRECT_DBENTRY__CHROOT | 14 |
REDIRECT_REDIRECT_DBENTRY | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website:d0000#CPU 60 #MEM 524288 #CGI 524618 #NPROC 20 #TAID 80473710 #LANG 0 #PARKING 1 #RSCLVL 500 #STAT 1 #CHROOT 14 |
REDIRECT_REDIRECT_STATUS | 200 |
REDIRECT_UNIQUE_ID | ZgalknvKk6utqE-jy0AKuQAAABc |
REDIRECT_DOCUMENT_ROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REDIRECT_HTTPS | on |
REDIRECT_HANDLER | x-mapp-php5.5 |
REDIRECT_STATUS | 200 |
UNIQUE_ID | ZgalknvKk6utqE-jy0AKuQAAABc |
HTTPS | on |
HTTP_HOST | speedskater-kriterium.de |
HTTP_CONNECTION | close |
HTTP_ACCEPT | */* |
HTTP_USER_AGENT | claudebot |
PATH | /bin:/usr/bin |
SERVER_SIGNATURE | |
SERVER_SOFTWARE | Apache |
SERVER_NAME | speedskater-kriterium.de |
SERVER_ADDR | 82.165.83.78 |
SERVER_PORT | 443 |
REMOTE_ADDR | 3.81.165.210 |
DOCUMENT_ROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REQUEST_SCHEME | https |
CONTEXT_PREFIX | /system-bin/ |
CONTEXT_DOCUMENT_ROOT | /kunden/usr/lib/cgi-bin/ |
SERVER_ADMIN | webmaster@speedskater-kriterium.de |
SCRIPT_FILENAME | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website/index.php |
REMOTE_PORT | 58564 |
REDIRECT_URL | /index.php |
GATEWAY_INTERFACE | CGI/1.1 |
SERVER_PROTOCOL | HTTP/1.1 |
REQUEST_METHOD | GET |
QUERY_STRING | |
REQUEST_URI | /fr/galerie/int-kriterium-2004 |
SCRIPT_NAME | /index.php |
STATUS | 200 |
ORIG_PATH_INFO | /index.php |
ORIG_PATH_TRANSLATED | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website/index.php |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1711711634,6936 |
REQUEST_TIME | 1711711634 |
argv | Array ( ) |
argc | 0 |
Key | Value |
REDIRECT_REDIRECT_UNIQUE_ID | ZgalknvKk6utqE-jy0AKuQAAABc |
REDIRECT_REDIRECT_WAAS_MODE | 0 |
REDIRECT_REDIRECT_DOCUMENT_ROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REDIRECT_REDIRECT_UI_SUEXEC_DEFAULT_CHROOT_ID | 14 |
REDIRECT_REDIRECT_UI_SUEXEC_FSTATD_UNIXSOCKET | /run/ui-fstatd.suexec.socket |
REDIRECT_REDIRECT_UI_SUEXEC_STATISTICS_UNIXSOCKET | /homepages/sclientMF/http.sock.bin |
REDIRECT_REDIRECT_HTTPS | on |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_CPU | 60 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_MEM | 896 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCSOFT | 25 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCHARD | 37 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_JIMDO | 800 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_CPU_JIMDO | 60 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_MEM_JIMDO | 768 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCSOFT_JIMDO | 24 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL_PROCHARD_JIMDO | 24 |
REDIRECT_REDIRECT_DBENTRY_HOST | speedskater-kriterium.de |
REDIRECT_REDIRECT_DBENTRY_VALUE | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website:d0000#CPU 60 #MEM 524288 #CGI 524618 #NPROC 20 #TAID 80473710 #LANG 0 #PARKING 1 #RSCLVL 500 #STAT 1 #CHROOT 14 |
REDIRECT_REDIRECT_DBENTRY_DOCROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REDIRECT_REDIRECT_DBENTRY_HASH | d0000 |
REDIRECT_REDIRECT_DBENTRY__CPU | 60 |
REDIRECT_REDIRECT_DBENTRY__MEM | 524288 |
REDIRECT_REDIRECT_DBENTRY__CGI | 524618 |
REDIRECT_REDIRECT_DBENTRY__NPROC | 20 |
REDIRECT_REDIRECT_DBENTRY__TAID | 80473710 |
REDIRECT_REDIRECT_DBENTRY__LANG | 0 |
REDIRECT_REDIRECT_DBENTRY__PARKING | 1 |
REDIRECT_REDIRECT_DBENTRY__RSCLVL | 500 |
REDIRECT_REDIRECT_DBENTRY__STAT | 1 |
REDIRECT_REDIRECT_DBENTRY__CHROOT | 14 |
REDIRECT_REDIRECT_DBENTRY | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website:d0000#CPU 60 #MEM 524288 #CGI 524618 #NPROC 20 #TAID 80473710 #LANG 0 #PARKING 1 #RSCLVL 500 #STAT 1 #CHROOT 14 |
REDIRECT_REDIRECT_STATUS | 200 |
REDIRECT_UNIQUE_ID | ZgalknvKk6utqE-jy0AKuQAAABc |
REDIRECT_DOCUMENT_ROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REDIRECT_HTTPS | on |
REDIRECT_HANDLER | x-mapp-php5.5 |
REDIRECT_STATUS | 200 |
UNIQUE_ID | ZgalknvKk6utqE-jy0AKuQAAABc |
HTTPS | on |
HTTP_HOST | speedskater-kriterium.de |
HTTP_CONNECTION | close |
HTTP_ACCEPT | */* |
HTTP_USER_AGENT | claudebot |
PATH | /bin:/usr/bin |
SERVER_SIGNATURE | |
SERVER_SOFTWARE | Apache |
SERVER_NAME | speedskater-kriterium.de |
SERVER_ADDR | 82.165.83.78 |
SERVER_PORT | 443 |
REMOTE_ADDR | 3.81.165.210 |
DOCUMENT_ROOT | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website |
REQUEST_SCHEME | https |
CONTEXT_PREFIX | /system-bin/ |
CONTEXT_DOCUMENT_ROOT | /kunden/usr/lib/cgi-bin/ |
SERVER_ADMIN | webmaster@speedskater-kriterium.de |
SCRIPT_FILENAME | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website/index.php |
REMOTE_PORT | 58564 |
REDIRECT_URL | /index.php |
GATEWAY_INTERFACE | CGI/1.1 |
SERVER_PROTOCOL | HTTP/1.1 |
REQUEST_METHOD | GET |
QUERY_STRING | |
REQUEST_URI | /fr/galerie/int-kriterium-2004 |
SCRIPT_NAME | /index.php |
STATUS | 200 |
ORIG_PATH_INFO | /index.php |
ORIG_PATH_TRANSLATED | /kunden/homepages/44/d570794223/htdocs/speedskater-kriterium.de_neue_seite_20180116/speedskating-website/index.php |