imfing / hextra

🔯 Modern, batteries-included Hugo theme for creating beautiful doc, blog and static websites
https://imfing.github.io/hextra/
MIT License
583 stars 146 forks source link

Search is broken #132

Closed reubenscratton closed 11 months ago

reubenscratton commented 11 months ago

Enabling search in site config while using Hexstra theme causes a build error:

Error: error building site: EXECUTE-AS-TEMPLATE: failed to transform "json/search-data.json" (application/json): 
template: json/search-data.json:10:15: executing "json/search-data.json" at <partial "utils/fragments" $page>: 
error calling partial: ".../imfing/hextra@v0.3.0/layouts/partials/utils/fragments.html:39:62": execute of template failed: 
template: partials/utils/fragments.html:39:62: executing "partials/utils/fragments.html" 
at <markdownify>: error calling markdownify: runtime error: slice bounds out of range [:640] with capacity 512

Steps To Reproduce

  1. Get a fresh clone of https://github.com/imfing/hextra-starter-template
  2. Edit hugo.yaml and set params.search.enable to true.
  3. Try to build and serve the site. The command I use is hugo server --logLevel debug --disableFastRender -p 1313 --noHTTPCache.

Environment

imfing commented 11 months ago

I'll look into it, but so far I couldn't reproduce the issue.

pascalwhoop commented 11 months ago

ran into this as well while adding this shortcode: https://gohugo.io/templates/shortcode-templates/

when removing the shortcode it still seems to work but otherwise, my build fails

imfing commented 11 months ago

ran into this as well while adding this shortcode:

https://gohugo.io/templates/shortcode-templates/

when removing the shortcode it still seems to work but otherwise, my build fails

Can you help share the shortcode and the content you were adding that triggered the issue?

pascalwhoop commented 11 months ago

sure.

{{ $img := .Page.Resources.GetMatch (printf "*%s*" (.Get 0)) }}
{{ $command := .Get 1 }}
{{ $options := .Get 2 }}
{{ if eq $command "Fit"}}
  {{ $img = $img.Fit $options }}
{{ else if eq $command "Resize"}}
  {{ $img = $img.Resize $options }}
{{ else if eq $command "Fill"}}
  {{ $img = $img.Fill $options }}
{{ else if eq $command "Crop"}}
  {{ $img = $img.Crop $options }}
{{ else }}
  {{ errorf "Invalid image processing command: Must be one of Crop, Fit, Fill or Resize."}}
{{ end }}
<figure style="padding: 0.25rem; margin: 2rem 0; background-color: #cccc">
  <img style="max-width: 100%; width: auto; height: auto;" src="{{ $img.RelPermalink }}" width="{{ $img.Width }}" height="{{ $img.Height }}">
  <figcaption>
  <small>
    {{ with .Inner }}
      {{ . }}
    {{ else }}
      .{{ $command }} "{{ $options }}"
    {{ end }}
  </small>
  </figcaption>
</figure>
{{< imgproc sunset Resize "300x" />}}
imfing commented 11 months ago

@pascalwhoop I could not re-produce the issue with the snippet you provided.

$ hugo version
hugo v0.117.0-b2f0696cad918fb61420a6aff173eb36662b406e+extended linux/amd64 BuildDate=2023-08-07T12:49:48Z VendorInfo=brew

I was running the hextra-starter-template using the above Hugo version inside a Gitpod box Ubuntu 22.04.3 LTS.

imfing commented 11 months ago

@pascalwhoop could you please share a repository that reproduces the issue you're encountering? This will help me in diagnosing and resolving the problem more effectively.

pascalwhoop commented 11 months ago

@imfing I pushed something here. Thx for looking at it. Likely just a hugo error that non-hugo pros just don't recognise. But weird to debug nonetheless https://github.com/pascalwhoop/curiloo.com/tree/bug/markdownify

pascalwhoop commented 11 months ago

Found the error. I had a custom fimg shortcode that makes images more efficient. But the markdownify extension breaks the lookup of the page bundles. Putting a if $img around the code of the shortcode helped. The images still show but the search doesn't break. I guess logging a warning would still be nice for UX but this fixes the markdownify call in your fragments page

imfing commented 11 months ago

But the markdownify extension breaks the lookup of the page bundles. Putting a if $img around the code of the shortcode helped.

glad you figured this out! I'll close this issue

I guess logging a warning would still be nice for UX but this fixes the markdownify call in your fragments page

I agree, but logging for Hugo built-in function like markdownify can be a bit tricky