diff --git a/pelican/__init__.py b/pelican/__init__.py index 68f3e5538..2fd69f1bc 100644 --- a/pelican/__init__.py +++ b/pelican/__init__.py @@ -127,12 +127,15 @@ def run(self): if hasattr(p, "generate_context"): p.generate_context() + # for plugins that create/edit the summary + logger.debug("Signal all_generators_finalized.send()") + signals.all_generators_finalized.send(generators) + + # update links in the summary, etc for p in generators: if hasattr(p, "refresh_metadata_intersite_links"): p.refresh_metadata_intersite_links() - signals.all_generators_finalized.send(generators) - writer = self._get_writer() for p in generators: diff --git a/pelican/contents.py b/pelican/contents.py index 82be8f737..c640df698 100644 --- a/pelican/contents.py +++ b/pelican/contents.py @@ -530,13 +530,16 @@ def refresh_metadata_intersite_links(self) -> None: setattr(self, key.lower(), value) # _summary is an internal variable that some plugins may be writing to, - # so ensure changes to it are picked up - if ( - "summary" in self.settings["FORMATTED_FIELDS"] - and "summary" in self.metadata - ): - self._summary = self._update_content(self._summary, self.get_siteurl()) - self.metadata["summary"] = self._summary + # so ensure changes to it are picked up, and write summary back to it + if "summary" in self.settings["FORMATTED_FIELDS"]: + if hasattr(self, "_summary"): + self.metadata["summary"] = self._summary + + if "summary" in self.metadata: + self.metadata["summary"] = self._update_content( + self.metadata["summary"], self.get_siteurl() + ) + self._summary = self.metadata["summary"] class Page(Content):