fix(link): Fixing link tag to non-indexed destination
This commit is contained in:
parent
2d10770f3e
commit
366c9e10b4
@ -34,6 +34,9 @@ module Jekyll
|
|||||||
|
|
||||||
Configurator.warn_of_deprecated_options
|
Configurator.warn_of_deprecated_options
|
||||||
|
|
||||||
|
# Register our own tags to overwrite the default tags
|
||||||
|
Liquid::Template.register_tag('link', JekyllAlgoliaLink)
|
||||||
|
|
||||||
if Configurator.dry_run?
|
if Configurator.dry_run?
|
||||||
Logger.log('W:==== THIS IS A DRY RUN ====')
|
Logger.log('W:==== THIS IS A DRY RUN ====')
|
||||||
Logger.log('W: - No records will be pushed to your index')
|
Logger.log('W: - No records will be pushed to your index')
|
||||||
@ -71,6 +74,8 @@ module Jekyll
|
|||||||
# tests
|
# tests
|
||||||
attr_writer :collections
|
attr_writer :collections
|
||||||
|
|
||||||
|
attr_reader :original_site_files
|
||||||
|
|
||||||
# Public: Overwriting the parent method
|
# Public: Overwriting the parent method
|
||||||
#
|
#
|
||||||
# This will prepare the website, gathering all files, excluding the one we
|
# This will prepare the website, gathering all files, excluding the one we
|
||||||
@ -143,6 +148,12 @@ module Jekyll
|
|||||||
# Public: Removing non-indexable Pages, Posts and Documents from the
|
# Public: Removing non-indexable Pages, Posts and Documents from the
|
||||||
# internals
|
# internals
|
||||||
def keep_only_indexable_files
|
def keep_only_indexable_files
|
||||||
|
@original_site_files = {
|
||||||
|
pages: @pages,
|
||||||
|
collections: @collections,
|
||||||
|
static_files: @static_file
|
||||||
|
}
|
||||||
|
|
||||||
@pages = indexable_list(@pages)
|
@pages = indexable_list(@pages)
|
||||||
|
|
||||||
# Applying to each collections
|
# Applying to each collections
|
||||||
@ -195,3 +206,33 @@ module Jekyll
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# The default `link` tag allow to link to a specific page, using its relative
|
||||||
|
# path. Because we might not be indexing the destination of the link, we might
|
||||||
|
# not have the representation of the page in our data. If that happens, the
|
||||||
|
# `link` tag fails.
|
||||||
|
#
|
||||||
|
# To fix that we'll overwrite the default `link` tag to loop over a backup copy
|
||||||
|
# of the original files (before we clean it for indexing)
|
||||||
|
class JekyllAlgoliaLink < Jekyll::Tags::Link
|
||||||
|
def render(context)
|
||||||
|
original_files = context.registers[:site].original_site_files
|
||||||
|
|
||||||
|
original_files[:pages].each do |page|
|
||||||
|
return page.url if page.relative_path == @relative_path
|
||||||
|
end
|
||||||
|
|
||||||
|
original_files[:collections].each do |collection|
|
||||||
|
collection.each do |item|
|
||||||
|
return item.url if item.relative_path == @relative_path
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
original_files[:static_files].each do |asset|
|
||||||
|
return asset.url if asset.relative_path == @relative_path
|
||||||
|
return asset.url if asset.relative_path == "/#{@relative_path}"
|
||||||
|
end
|
||||||
|
|
||||||
|
'/'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user