<?php if (!$page->tags()->empty()) { echo '<ul>'; echo '<li>'; echo '<svg id="Icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>tags</title><path d="M23.476,13.588h0L10.894,1A3.931,3.931,0,0,0,8.483,0H2A2,2,0,0,0,0,2L.007,8.486a3.739,3.739,0,0,0,1,2.411L13.586,23.476A1.674,1.674,0,0,0,14.764,24a1.481,1.481,0,0,0,.355-.044,1.6,1.6,0,0,0,1.127-1.144L17.7,18.036a.5.5,0,0,1,.332-.332l4.774-1.457a1.54,1.54,0,0,0,.666-2.659ZM5.993,7.492a1.5,1.5,0,1,1,1.5-1.5A1.5,1.5,0,0,1,5.993,7.492Z"/></svg> '; echo '</li>'; $count = 0; foreach ($tags = explode(",", $page->tags()) as $tag) { $count++; echo '<li><a href="'.url().'/blog/tag:'.urlencode(trim($tag)).'">'.str_replace('-',' ', $tag).'</a></li>'; } echo '</ul>'; } ?> </p> <p> <?php if($page->hasPrevVisible()): ?> <p class="mobile-center">Previously</p> <p class="mobile-center"><a href="<?php echo $page->prevVisible('date', 'asc')->url() ?>"><?php echo $page->prevVisible('date', 'asc')->title() ?></a></p> <?php endif ?> </p> <hr> <p><a href="/blog/feed/">Subscribe to the RSS feed</a> to keep up to date with this blog.</p> <p><a href="/mailing">Sign-up to The Dawesome Digest</a> — my occasional email newsletter. <p><a href="https://producedforuse.com">Visit Produced for Use</a> — my online boutique selling physical goods.</p> <p><a href="/sit_rest_relax.jpg">Find a park bench</a> and simply sit, rest and relax. <p><?php echo webmentions() ?></p> </div> </section> </article> <?php snippet('page-footer') ?> </body> <?php snippet('footer') ?>
/** * 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 */
} } // 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 */ 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() {
* @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 */
<?php ini_set('display_startup_errors', 1); ini_set('display_errors', 1); error_reporting(-1); define('DS', DIRECTORY_SEPARATOR); // 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.13 |
Kirby CMS | v2.5.13 |
Key | Value |
LSPHP_ENABLE_USER_INI | on |
PATH | /usr/local/bin:/usr/bin:/bin |
TEMP | /tmp |
TMP | /tmp |
TMPDIR | /tmp |
PWD | / |
HTTP_ACCEPT | */* |
CONTENT_LENGTH | 0 |
HTTP_HOST | brendandawes.com |
HTTP_USER_AGENT | claudebot |
REDIRECT_UNIQUE_ID | ZgWWynj-vW6YpaajdcHHvAAAADA |
REDIRECT_SCRIPT_URL | /blog/08-15-502 |
REDIRECT_SCRIPT_URI | http://brendandawes.com/blog/08-15-502 |
REDIRECT_USER_ID | 9132780 |
REDIRECT_DATABASE_SERVER | localhost |
REDIRECT_STATUS | 200 |
UNIQUE_ID | ZgWWynj-vW6YpaajdcHHvAAAADA |
SCRIPT_URL | /blog/08-15-502 |
SCRIPT_URI | http://brendandawes.com/blog/08-15-502 |
USER_ID | 9132780 |
DATABASE_SERVER | localhost |
SITE_ROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html |
SITE_CGIROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html/cgi-bin |
SITE_HTMLROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html |
SERVER_SIGNATURE | |
SERVER_SOFTWARE | Apache |
SERVER_NAME | brendandawes.com |
SERVER_ADDR | 72.167.59.89 |
SERVER_PORT | 80 |
REMOTE_ADDR | 34.228.168.200 |
DOCUMENT_ROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html |
REQUEST_SCHEME | http |
CONTEXT_PREFIX | |
CONTEXT_DOCUMENT_ROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html |
SERVER_ADMIN | webmaster@brendandawes.com.singlemandesign.com |
SCRIPT_FILENAME | /home/xc4ki26cj9i0/domains/brendandawes.com/html/index.php |
REMOTE_PORT | 39874 |
REDIRECT_URL | /blog/08-15-502 |
SERVER_PROTOCOL | HTTP/1.1 |
REQUEST_METHOD | GET |
QUERY_STRING | |
REQUEST_URI | /blog/08-15-502 |
SCRIPT_NAME | /index.php |
PHP_SELF | /index.php |
REQUEST_TIME_FLOAT | 1711642314.2823 |
REQUEST_TIME | 1711642314 |
Key | Value |
LSPHP_ENABLE_USER_INI | on |
PATH | /usr/local/bin:/usr/bin:/bin |
TEMP | /tmp |
TMP | /tmp |
TMPDIR | /tmp |
PWD | / |
DATABASE_SERVER | localhost |
SITE_ROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html |
SITE_CGIROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html/cgi-bin |
SITE_HTMLROOT | /home/xc4ki26cj9i0/domains/brendandawes.com/html |