nt') { $menuItemGiven = false; unset($query['Itemid']); } if (isset($query['view'])) { $view = $query['view']; } else { // We need to have a view in the query or it is an invalid URL return $segments; } // Are we dealing with an article or category that is attached to a menu item? if (($menuItem instanceof stdClass) && $menuItem->query['view'] == $query['view'] && isset($query['id']) && $menuItem->query['id'] == (int) $query['id']) { unset($query['view']); if (isset($query['catid'])) { unset($query['catid']); } if (isset($query['layout'])) { unset($query['layout']); } unset($query['id']); return $segments; } if ($view == 'category' || $view == 'article') { if (!$menuItemGiven) { $segments[] = $view; } unset($query['view']); if ($view == 'article') { if (isset($query['id']) && isset($query['catid']) && $query['catid']) { $catid = $query['catid']; // Make sure we have the id and the alias if (strpos($query['id'], ':') === false) { $db = JFactory::getDbo(); $dbQuery = $db->getQuery(true) ->select('alias') ->from('#__content') ->where('id=' . (int) $query['id']); $db->setQuery($dbQuery); $alias = $db->loadResult(); $query['id'] = $query['id'] . ':' . $alias; } } else { // We should have these two set for this view. If we don't, it is an error return $segments; } } else { if (isset($query['id'])) { $catid = $query['id']; } else { // We should have id set for this view. If we don't, it is an error return $segments; } } if ($menuItemGiven && isset($menuItem->query['id'])) { $mCatid = $menuItem->query['id']; } else { $mCatid = 0; } $categories = JCategories::getInstance('Content'); $category = $categories->get($catid); if (!$category) { // We couldn't find the category we were given. Bail. return $segments; } $path = array_reverse($category->getPath()); $array = array(); foreach ($path as $id) { if ((int) $id == (int) $mCatid) { break; } list($tmp, $id) = explode(':', $id, 2); $array[] = $id; } $array = array_reverse($array); if (!$advanced && count($array)) { $array[0] = (int) $catid . ':' . $array[0]; } $segments = array_merge($segments, $array); if ($view == 'article') { if ($advanced) { list($tmp, $id) = explode(':', $query['id'], 2); } else { $id = $query['id']; } $segments[] = $id; } unset($query['id']); unset($query['catid']); } if ($view == 'archive') { if (!$menuItemGiven) { $segments[] = $view; unset($query['view']); } if (isset($query['year'])) { if ($menuItemGiven) { $segments[] = $query['year']; unset($query['year']); } } if (isset($query['year']) && isset($query['month'])) { if ($menuItemGiven) { $segments[] = $query['month']; unset($query['month']); } } } if ($view == 'featured') { if (!$menuItemGiven) { $segments[] = $view; } unset($query['view']); } /* * If the layout is specified and it is the same as the layout in the menu item, we * unset it so it doesn't go into the query string. */ if (isset($query['layout'])) { if ($menuItemGiven && isset($menuItem->query['layout'])) { if ($query['layout'] == $menuItem->query['layout']) { unset($query['layout']); } } else { if ($query['layout'] == 'default') { unset($query['layout']); } } } $total = count($segments); for ($i = 0; $i < $total; $i++) { $segments[$i] = str_replace(':', '-', $segments[$i]); } return $segments; } /** * Parse the segments of a URL. * * @param array &$segments The segments of the URL to parse. * * @return array The URL attributes to be used by the application. * * @since 3.3 */ public function parse(&$segments) { $total = count($segments); $vars = array(); for ($i = 0; $i < $total; $i++) { $segments[$i] = preg_replace('/-/', ':', $segments[$i], 1); } // Get the active menu item. $app = JFactory::getApplication(); $menu = $app->getMenu(); $item = $menu->getActive(); $params = JComponentHelper::getParams('com_content'); $advanced = $params->get('sef_advanced_link', 0); $db = JFactory::getDbo(); // Count route segments $count = count($segments); /* * Standard routing for articles. If we don't pick up an Itemid then we get the view from the segments * the first segment is the view and the last segment is the id of the article or category. */ if (!isset($item)) { $vars['view'] = $segments[0]; $vars['id'] = $segments[$count - 1]; return $vars; } /* * If there is only one segment, then it points to either an article or a category. * We test it first to see if it is a category. If the id and alias match a category, * then we assume it is a category. If they don't we assume it is an article */ if ($count == 1) { // We check to see if an alias is given. If not, we assume it is an article if (strpos($segments[0], ':') === false) { $vars['view'] = 'article'; $vars['id'] = (int) $segments[0]; return $vars; } list($id, $alias) = explode(':', $segments[0], 2); // First we check if it is a category $category = JCategories::getInstance('Content')->get($id); if ($category && $category->alias == $alias) { $vars['view'] = 'category'; $vars['id'] = $id; return $vars; } else { $query = $db->getQuery(true) ->select($db->quoteName(array('alias', 'catid'))) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . ' = ' . (int) $id); $db->setQuery($query); $article = $db->loadObject(); if ($article) { if ($article->alias == $alias) { $vars['view'] = 'article'; $vars['catid'] = (int) $article->catid; $vars['id'] = (int) $id; return $vars; } } } } /* * If there was more than one segment, then we can determine where the URL points to * because the first segment will have the target category id prepended to it. If the * last segment has a number prepended, it is an article, otherwise, it is a category. */ if (!$advanced) { $cat_id = (int) $segments[0]; $article_id = (int) $segments[$count - 1]; if ($article_id > 0) { $vars['view'] = 'article'; $vars['catid'] = $cat_id; $vars['id'] = $article_id; } else { $vars['view'] = 'category'; $vars['id'] = $cat_id; } return $vars; } // We get the category id from the menu item and search from there $id = $item->query['id']; $category = JCategories::getInstance('Content')->get($id); if (!$category) { JError::raiseError(404, JText::_('COM_CONTENT_ERROR_PARENT_CATEGORY_NOT_FOUND')); return $vars; } $categories = $category->getChildren(); $vars['catid'] = $id; $vars['id'] = $id; $found = 0; foreach ($segments as $segment) { $segment = str_replace(':', '-', $segment); foreach ($categories as $category) { if ($category->alias == $segment) { $vars['id'] = $category->id; $vars['catid'] = $category->id; $vars['view'] = 'category'; $categories = $category->getChildren(); $found = 1; break; } } if ($found == 0) { if ($advanced) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('id')) ->from('#__content') ->where($db->quoteName('catid') . ' = ' . (int) $vars['catid']) ->where($db->quoteName('alias') . ' = ' . $db->quote($segment)); $db->setQuery($query); $cid = $db->loadResult(); } else { $cid = $segment; } $vars['id'] = $cid; if ($item->query['view'] == 'archive' && $count != 1) { $vars['year'] = $count >= 2 ? $segments[$count - 2] : null; $vars['month'] = $segments[$count - 1]; $vars['view'] = 'archive'; } else { $vars['view'] = 'article'; } } $found = 0; } return $vars; } } /** * Content router functions * * These functions are proxys for the new router interface * for old SEF extensions. * * @deprecated 4.0 Use Class based routers instead */ function ContentBuildRoute(&$query) { $router = new ContentRouter; return $router->build($query); } function ContentParseRoute($segments) { $router = new ContentRouter; return $router->parse($segments); }

Du gehst mit Pfeil und Bogen in den Wald zum ersten Ziel.
Du betrachtest Ziel und Umgebung, nimmst einen Pfeil, konzentrierst Dich, suchst Deinen Fixpunkt auf der Scheibe, atmest tief durch, optimierst Deinen Stand.

In diesem Augenblick vergisst Du den Alltag, die Arbeit, die Sorgen. Du verspürst keine Hektik mehr, siehst nur mehr das Ziel, ziehst den Bogen, lässt den Pfeil los, genießt den Flug des Pfeils. Der Schuss passt, ein guter Treffer. Ein angenehmes Glücksgefühl macht sich in Dir breit.

Weiter geht's zum nächsten 3D Ziel. Du holst Dir diese unbeschreiblichen Augenblicke immer und immer wieder, den ganzen Tag. Am Ende der Runde, nach dem letzten Schuss freust Dich auf einen gemütlichen Tagesausklang auf unserem Gelände, mit einem Getränk und einer Grillwurst und Smalltalk mit Gleichgesinnten. Es ist fast wie eine Sucht, die man am besten einfach selbst erleben muss.

Alles ins Kill & alles ins Gold

02-3D-Parcours2

Leider scheint es, als haben Sie den Adobe Reader nicht installiert. Dieser ist nötig, um PDF-Dateien anzeigen zu können.

Sie können den Adobe Reader unter herunterladen.

Die 3D-Parcours-Regeln stehen Ihnen auch hier als PDF zum Download bereit.

01-3D

 

03-3D-Igel