2014-05-02 16 views
5

Quindi, questo è il mio primo progetto di middleman e mi trovo alle prese con il modo in cui middleman gestisce i collegamenti.I percorsi degli middleman non funzionano nella sottodirectory

Così com'è, l'ho impostato su una pagina github. Tutte le mie risorse funzionano, quindi ho capito bene, ma i percorsi che portano a ogni pagina falliscono perché il sito web si trova in una sottodirectory.

Fondamentalmente root/directoryname/index.html funziona ma ogni collegamento torna a una directory, quindi dove dovrei avere root/directoryname/page.html ottengo root/page.html.

Here, have a link to see it live

Ecco ciò che il mio config.rb assomiglia:

# Reload the browser automatically whenever files change 
configure :development do 
activate :livereload 
end 

# Methods defined in the helpers block are available in templates 
# helpers do 
# def some_helper 
#  "Helping" 
# end 
# end 

set :css_dir, 'css' 

set :js_dir, 'js' 

set :images_dir, 'img' 

# Build-specific configuration 
configure :build do 
    # For example, change the Compass output style for deployment 
    activate :minify_css 

    # Minify Javascript on build 
    activate :minify_javascript 

    # Enable cache buster 
    activate :asset_hash 

    # Use relative URLs 
    activate :relative_assets 

    activate :directory_indexes 

    # Or use a different image path 
    # set :http_prefix, "/Content/images/" 
end 

activate :deploy do |deploy| 
    deploy.method = :git 
    # Optional Settings 
    # deploy.remote = "custom-remote" # remote name or git url, default: origin 
    # deploy.branch = "custom-branch" # default: gh-pages 
    # deploy.strategy = :submodule  # commit strategy: can be :force_push or :submodule, default: :force_push 
end 

data.works.each do |item| 
    proxy "/references/#{item.clean}.html", "/work.html", :locals => { :code => item }, :ignore => true 
end 

helpers do 
    # Sets the html class to 'active' when the link url is equal to the current page being viewed. 
    # Use just like the link_to helper. 
    # <%= magic_link_to 'Home', '/index.html' %> 
    def magic_link_to(link, url, opts={}) 
     current_url = current_resource.url 
     if current_url == url_for(url) || current_url == url_for(url) + "/" 
      opts[:class] = "active" 
     end 
     link_to(link, url, opts) 
    end 
end 

Ed ecco ciò che il mio menu principale si presenta come:

<nav id="mainNav"> 
    <ul> 
     <li id="logo"><% link_to '/index.html' do %><span>ben</span> rajalu<% end %></li> 
     <li id="homeLink"><%= magic_link_to 'home', '/index.html' %></li> 
     <li class="divider"></li> 
     <li><%= magic_link_to 'services', '/services.html' %></li> 
     <li class="divider"></li> 
     <li><%= magic_link_to 'références', '/references.html' %></li> 
     <li class="divider"></li> 
     <li><%= magic_link_to 'a propos', '/a-propos.html' %></li> 
     <li class="divider"></li> 
     <li id="contact"><a href="#" class="offTrigger" data-target="#contactBar">contact</a></li> 
    </ul> 
</nav> 

Cosa ne pensate? Cosa mi sono perso?

+0

A partire dal dicembre 2015, si consiglia di utilizzare 'link_to' invece di 'magic_link_to'. –

risposta

10

Questo è un problema di base con la distribuzione di progetti Middleman su pagine Github.

Il problema è che Github Pages distribuisce siti Web in sottocartelle, quindi quando si dispone di un collegamento assoluto, ad es. g. <a href="/services.html">, punterà sempre a una posizione errata.

È necessario passare da Middleman a una modalità di collegamenti relativi. Aggiungi questo al vostro config.rb:

set :relative_links, true 
+0

Grazie mille, era davvero "così semplice" :) – benBecker

+0

Non dimenticare di upvotare. : P –

+0

Lo farò non appena avrò abbastanza rep per abilitare la funzione! – benBecker

Problemi correlati