Fast and flowing with big jump options and some pretty crazy gap jumps. Trail can be ridden in either direction.

Riding the Black Hill mountain bike trails with the Canyon Crew

Probably not best to ride. The trail has good flow with some spicy sections. A full suspension bike with 3+ inches of travel will greatly enhance your experience! I've master huck to flat though! The trail is somewhat wide for singletrack and a bit technical with roots and rocks. This is just a brute of a climb. Starts off flowy with some good jumps then gets into more technical rock gardens. A few wet spots, but almost non-existent mud. Butcher Ranch is the main trail for the classic Downieville Downhill. This 40+ miles ride is packed full of stunning island views.

 

But this trail does not relent for one second. I prefer clockwise because the descent is longer. Pretty dry and fast. Parking at the bottom is near mile 12 of Palmer Fishhook Road, while the top of the trailhead starts near mile 16 of Palmer Fishhook Road. The trail tread is mostly packed dirt mixed with rocks. Tree is elevated, so not rideable for most. Normally most of the hikers don't make it to Otero Upper so that section is a little more clear and you can let it hang out a little more. Built specifically for mountain bikes, a flow trail emphasizes speed and rhythm, featuring berms, rollers, jumps and other features that are designed in a way that uses the rider’s momentum to minimize pedaling and braking (think downhill pump track). The ending is real rutted out, so be careful not to lock up your tire and make it worse. Perfect flow day with hard moist dirt with only 1/2 bird baths along the way!

 

This is the most fun direction to ride it. This route is worth riding MANY times. The new state course removed any of the wooden features that were present on the original 16 mile trail and replaced the skinny singletrack with a machine cut ~4' wide track down the mountain. Greens Lick is a machine built trail designed by Trail Dynamics as a demonstration trail showing the forest service how eroded road beds could be converted to sustainable trail. I need to learn how to jump! Fast, fun descent. Chewed up, lots of braking bumps, but still fun. Gnarly trail. The trails all run parallel to the Fountain Place paved road so they can be shuttled by car. An awesome descent, with some high speed ripping at the top, some root drops in the middle, and some great bank turns at the bottom.

Error executing template "Designs/Swift/Paragraph/Swift_ArticleList.cshtml"
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.SqlClient.SqlException: Invalid object name 'ItemType_Swift_ArticleTag'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at Dynamicweb.Data.Database.CreateDataReader(IDbCommand command, CommandBehavior behavior)
   at Dynamicweb.Data.Database.CreateDataReader(CommandBuilder commandBuilder, IDbConnection connection, IDbTransaction transaction, CommandBehavior behavior, Int32 commandTimeout)
   at Dynamicweb.Data.Database.CreateDataReader(CommandBuilder commandBuilder, IDbConnection connection, IDbTransaction transaction, Int32 commandTimeout)
   at Dynamicweb.Content.Items.Queries.Repository.SelectByAreaId(Int32 areaId, Query query, Boolean includeParagraphs, Boolean checkPermissions, Boolean includeInheritedItems)
   at Dynamicweb.Content.Items.Queries.Repository.SelectByAreaId(Int32 areaId, Query query, Boolean includeParagraphs, Boolean checkPermissions)
   at Dynamicweb.Content.Items.Metadata.FieldOptionMetadataItemSource.GetData(Int32 currentSourceId)
   at Dynamicweb.Content.Items.Metadata.FieldOptionMetadataItemSource.get_SourceItems()
   at Dynamicweb.Content.Items.Metadata.FieldOptionMetadataItemSource.get_Values()
   at Dynamicweb.Content.Items.Rendering.Renderer.RenderOptions(ItemField field, Object value, String tagPrefix, Template template)
   at Dynamicweb.Content.Items.Rendering.Renderer.RenderItemField(ItemField field, Object value, Dictionary`2 validationErrors, Boolean allowEditing, Template template, String tagPrefix, ItemEntry itemEntry)
   at Dynamicweb.Content.Items.Rendering.Renderer.RenderItem(ItemEntry item, ItemSettings settings)
   at Dynamicweb.Content.Items.Rendering.Renderer.RenderItems(IEnumerable`1 items, ItemListSettings settings)
   at Dynamicweb.ItemPublisher.Frontend.List()
   at Dynamicweb.ItemPublisher.Frontend.GetContent()
   at Dynamicweb.ItemPublisher.Frontend.GetContentBySettings(String settings)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Dynamicweb.Extensibility.AddIns.AddInManager.InvokeFunction(Object instance, String functionName, Object[] arguments)
   at Dynamicweb.Rendering.TemplateBase`1.RenderItemList(Object settings)
   at CompiledRazorTemplates.Dynamic.RazorEngine_753954b025a5425b862ae4598b3e4d45.<>c__DisplayClass0_0.<RenderArticleList>b__0(TextWriter __razor_helper_writer) in D:\inetpub\wwwroot\www.hmb.nu\Files\Templates\Designs\Swift\Paragraph\Swift_ArticleList.cshtml:line 115
   at CompiledRazorTemplates.Dynamic.RazorEngine_753954b025a5425b862ae4598b3e4d45.Execute() in D:\inetpub\wwwroot\www.hmb.nu\Files\Templates\Designs\Swift\Paragraph\Swift_ArticleList.cshtml:line 19
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 3 @{ 4 string listSource = !string.IsNullOrEmpty(Model.Item.GetString("ListSource")) ? Model.Item.GetString("ListSource") : Model.PageID.ToString(); 5 var listBehaviour = Model.Item.GetRawValueString("ListBehaviour", "articles"); 6 string articleListSortOrder = !string.IsNullOrEmpty(Model.Item.GetString("ArticleListSortOrder")) ? Model.Item.GetString("ArticleListSortOrder") : "Descending"; 7 int maxItemsInList = !string.IsNullOrEmpty(Model.Item.GetInt32("MaxItemsInList").ToString()) ? Model.Item.GetInt32("MaxItemsInList") : 10; 8 string articleListLayout = !string.IsNullOrEmpty(Model.Item.GetString("ArticleListLayout")) ? Model.Item.GetString("ArticleListLayout") : "grid"; 9 string columnTheme = !string.IsNullOrEmpty(Model.Item.GetString("ColumnTheme")) ? Model.Item.GetString("ColumnTheme") : string.Empty; 10 string columnThemeClass = columnTheme != string.Empty ? " theme " + columnTheme + " p-3" + (articleListLayout == "carousel" ? " px-lg-4" : string.Empty) : string.Empty; 11 12 <div class="h-100@(columnThemeClass) item_@Model.Item.SystemName.ToLower()"> 13 14 @switch (articleListLayout) 15 { 16 case "grid": 17 18 { 19 if (listBehaviour == "articles") { @RenderArticleList("Swift_Article", listSource, maxItemsInList, articleListSortOrder) } 20 if (listBehaviour == "lists") { @RenderArticleList("Swift_ArticleListPage", listSource, maxItemsInList, articleListSortOrder) } 21 } 22 23 break; 24 25 case "carousel": 26 var carouselSettings = Model.Item.GetRawValueString("CarouselSettings", "4"); 27 string slidesPerPage = $"slider-item-show{carouselSettings}"; 28 string navigationStyle = $"{Model.Item.GetRawValueString("NavigationStyle", "slider-nav-round")}"; 29 string navigationPlacement = $"{Model.Item.GetRawValueString("NavigationPlacement", "slider-nav-on-slides")}"; 30 string indicatorStyle = $"{Model.Item.GetRawValueString("IndicatorStyle", string.Empty)}"; 31 string revealSlides = Model.Item.GetRawValueString("RevealSlides", "reveal") == "reveal" ? "slider-item-reveal" : string.Empty; 32 string sliderItemsGap = Model.Item.GetRawValueString("SliderItemsGap", "slider-item-gap") == "slider-item-nogap" ? "slider-item-nogap" : string.Empty; 33 string navigationAlwaysVisible = (Model.Item.GetBoolean("NavigationAlwaysVisible")) ? "slider-nav-visible" : string.Empty; 34 string navigationVisibleOnTouch = (Model.Item.GetBoolean("NavigationVisibleOnTouch")) ? "slider-nav-touch" : string.Empty; 35 string navigationShowScrollbar = (Model.Item.GetBoolean("NavigationShowScrollbar")) ? "slider-nav-scrollbar" : string.Empty; 36 string scrollBarForceMobile = (Model.Item.GetBoolean("NavigationShowScrollbar")) ? "--swiffy-slider-track-height:0.5rem !important;" : string.Empty; 37 string navigationSmall = (Model.Item.GetBoolean("NavigationSmall")) ? "slider-nav-sm" : string.Empty; 38 string navigationInvertColors = (Model.Item.GetBoolean("NavigationInvertColors")) ? "slider-nav-dark" : string.Empty; 39 string navigationSlideEntirePage = (Model.Item.GetBoolean("NavigationSlideEntirePage")) ? "slider-nav-page" : string.Empty; 40 string navigationNoLoop = (Model.Item.GetBoolean("NavigationNoLoop")) ? "slider-nav-noloop" : string.Empty; 41 string indicatorsOutsideSlider = (Model.Item.GetBoolean("IndicatorsOutsideSlider") && indicatorStyle != string.Empty) ? "slider-indicators-outside" : string.Empty; 42 string indicatorsHighlightActive = (Model.Item.GetBoolean("IndicatorsHighlightActive")) ? "slider-indicators-highlight" : string.Empty; 43 string indicatorsInvertColors = (Model.Item.GetBoolean("IndicatorsInvertedColors")) ? "slider-indicators-dark" : string.Empty; 44 string indicatorsVisibleOnSmallDevices = (Model.Item.GetBoolean("IndicatorsVisibleOnSmallDevices")) ? "slider-indicators-sm" : string.Empty; 45 string animation = Model.Item.GetRawValueString("Animation", string.Empty) != string.Empty ? $"slider-nav-animation {Model.Item.GetRawValueString("Animation")}" : string.Empty; 46 string autoplay = (Model.Item.GetBoolean("Autoplay")) ? "slider-nav-autoplay" : string.Empty; 47 string autoplayInterval = Model.Item.GetRawValueString("AutoplayInterval", string.Empty); 48 bool hideSliderNavigation = false; 49 50 if(navigationStyle == "slider-nav-none") 51 { 52 hideSliderNavigation = true; 53 } 54 55 <div id="Slider_@Model.ID" class="swiffy-slider @(slidesPerPage) @(navigationStyle) @(revealSlides) @(navigationPlacement) @(navigationAlwaysVisible) @(navigationVisibleOnTouch) @(sliderItemsGap) @(indicatorStyle) @(navigationShowScrollbar) @(navigationSmall) @(navigationInvertColors) @(indicatorsOutsideSlider) @(navigationNoLoop) @(indicatorsHighlightActive) @(indicatorsInvertColors) @(indicatorsVisibleOnSmallDevices) @(navigationSlideEntirePage) @(animation) @(autoplay) item_@Model.Item.SystemName.ToLower()" style="--swiffy-slider-nav-light:var(--swift-foreground-color);--swiffy-slider-nav-dark:var(--swift-background-color);visibility:hidden;opacity:0;@(scrollBarForceMobile)" data-slider-nav-autoplay-interval="@(autoplayInterval)"> 56 <div class="slider-container pb-3 py-lg-3 mt-lg-n3"> 57 @{ 58 if (listBehaviour == "articles") { @RenderArticleList("Swift_Article", listSource, maxItemsInList, articleListSortOrder) } 59 if (listBehaviour == "lists"){ @RenderArticleList("Swift_ArticleListPage", listSource, maxItemsInList, articleListSortOrder) } 60 } 61 </div> 62 63 @if(!hideSliderNavigation) 64 { 65 <button type="button" title="@Translate("Previous slide")" class="slider-nav" style="z-index:1;"> 66 <span class="visually-hidden">@Translate("Previous slide")</span> 67 </button> 68 <button type="button" title="@Translate("Next slide")" class="slider-nav slider-nav-next" style="z-index:1;"> 69 <span class="visually-hidden">@Translate("Next slide")</span> 70 </button> 71 } 72 @if (indicatorStyle != "slider-indicators-hidden") 73 { 74 <div class="slider-indicators" style="z-index:1;"> 75 @{ 76 string isActive = "active"; 77 int slideCount = 1; 78 } 79 @for (int i = 0; i < maxItemsInList; i++) 80 { 81 <button class="@isActive" type="button" title='@Translate("Go to slide") @slideCount'> 82 <span class="visually-hidden">@Translate("Go to slide") @slideCount</span> 83 </button> 84 85 slideCount++; 86 isActive = null; 87 } 88 </div> 89 } 90 91 <script type="module" src="/Files/Templates/Designs/Swift/Assets/js/swiffy-slider.js"></script> 92 <script type="module"> 93 swift.AssetLoader.Load('/Files/Templates/Designs/Swift/Assets/css/swiffy-slider.min.css', 'css'); 94 document.addEventListener('load.swift.assetloader', () => { 95 swiffyslider.initSlider(document.querySelector('#Slider_@Model.ID')); 96 document.querySelector('#Slider_@Model.ID').style.opacity = 1; 97 document.querySelector('#Slider_@Model.ID').style.visibility = "visible"; 98 }); 99 </script> 100 </div> 101 102 break; 103 } 104 </div> 105 } 106 107 @helper RenderArticleList(string itemType, string listSource, int maxItemsInList, string articleListSortOrder) 108 { 109 var parent = Dynamicweb.Context.Current.Request.QueryString.Get("list"); 110 var query = string.IsNullOrEmpty(parent) ? listSource : parent; 111 var includeAllChildren = Model.Item.GetRawValueString("ListDepth", "all") == "all" ? true : false; 112 var listContext = Model.Item?.GetRawValueString("ListContext", string.Empty).Split(new string[]{","}, StringSplitOptions.RemoveEmptyEntries);         113     var filterString = string.Join(" or ", listContext.Select(item => $"Tags == \"{item}\" or Tags ends with \",{item}\" or Tags starts with \"{item},\" or Tags contains \",{item},\"")); 114      115 @RenderItemList(new 116 { 117 ItemType = itemType, 118 ListTemplate = "ItemPublisher/List/List.cshtml", 119 ItemFieldsList = "*", 120 ListSourceType = "Page", 121 ListSourcePage = query, 122 ListPageSize = maxItemsInList, 123 IncludeParagraphItems = true, 124 ListOrderBy = "PublishedDate", 125 ListSecondOrderBy = "Updated", 126 ListOrderByDirection = articleListSortOrder, 127 IncludeAllChildItems = includeAllChildren, 128 Filter = itemType == "Swift_Article" ? filterString : null // Filter only if "articles only" 129 }) 130 } 131