Displaying Dataview Table/Templater query in specifc # of colums?

This takes a bit to explain, tldr I’m trying to ““self host”” my art blog these days instead of relying on external site builders. Publish meets my needs, EXCEPT for the fact that I’ve since learned that it can’t publish Dataview queries.

Using the Minimal Theme with it’s “cards” css, I was able to achieve this look for my homepage. It suits my needs well enough.

TABLE without ID
	cards-cover, file.link as Note
FROM "2023"
SORT file.name desc

It obviously doesn’t render out like that on Publish.

I found a solution in this post and this video that got me PRETTY far… by rendering out the dataview table as a markdown query that can be updated using Templater.

<%*
const dv = app.plugins.plugins["dataview"].api;
const openPublishPanel = app.commands.commands["publish:view-changes"].callback;

// Add as many filenames and queries as you'd like!
const fileAndQuery = new Map([
  [
    "Templater2023",
    'TABLE without ID cards-cover, file.link as Note FROM "2023" SORT file.name desc',
  ],
]);

await fileAndQuery.forEach(async (query, filename) => {
  if (!tp.file.find_tfile(filename)) {
    await tp.file.create_new("", filename);
    new Notice(`Created ${filename}.`);
  }
  const tFile = tp.file.find_tfile(filename);
  const queryOutput = await dv.queryMarkdown(query);
  const fileContent = `%% #Ignore update via "Update Publish Files" template %% \n\n${queryOutput.value}`;
  try {
    await app.vault.modify(tFile, fileContent);
    new Notice(`Updated ${tFile.basename}.`);
  } catch (error) {
    new Notice("⚠️ ERROR updating! Check console. Skipped file: " + filename , 0);
  }
});
openPublishPanel();
%>

It’s extremely close to what I’m looking for, because with this I can simply link/render these extra created notes into my homepage using ![], but ideally, I’d like these to render out into 3-4 columns like how it renders in the Minimal Theme.

Is there anyway I can achieve this? I am not extremely dataview/templater literate and am kinda trying to figure this out on the fly, and I’ve hit a roadbump here. I’m all ears about simpler solutions as well.

Thanks in advance!