I'm redefining the footnote layout and want to have them displayed always at the bottom of the page. For pure text it was easy by putting an \vfill at the beginning of the \footseprule definition; like suggested here.
If I have a document with many and long footnotes, bottom floats ([b] option) get placed below the footnote (which is standard in article.cls). I've tried to surpress bottom floats on pages with footnotes, like suggested here. But when every page contains footnotes, the bottom floats are still placed below.
How can I achieve that bottom floats are always placed at the bottom of the textarea but above the footnote(rule); without using any additional package, especially footmisc (which is the solution most often advised to similar questions), or another class.
Here my MWE:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage{graphicx}
\makeatletter
\renewcommand\footnoterule{\vfill%
\kern-3\p@ \hrule @width \textwidth \kern 2.6\p@ \kern 2\p@}
\makeatother
\begin{document}
\blindtext\footnote{\blindtext[2]}
\begin{figure}[!b]
\includegraphics[width=.5\textwidth]{example-image}
\end{figure}
\blindtext\footnote{\blindtext[7]}
\blindtext[3]\footnote{text}
\end{document}
Edit
Reading footmisc.sty again and taking the ideas of @JohnKormylo and @UlrikeFischer into account, I tried modifing \@makecol by rearranging the parts. Since, as far as I understand it, footmisc places the output of the footnote after \@combinefloats:
Part from footmisc.sty:
\def \@makecol {%
\@kernel@before@cclv
\setbox\@outputbox \box\@cclv
\@outputbox@removebskip
\let\@elt\relax
\xdef\@freelist{\@freelist\@midlist}%
\global \let \@midlist \@empty
\@makecol@appendblocks
% Here the blocks are appended; i.e. a floatblock and a footnoteblock
\ifvbox\@kludgeins
\@makespecialcolbox
\else
\@makenormalcolbox
\fi
\global \maxdepth \@maxdepth
}
I tried it in a quite simple version:
\gdef \@makecol {%
\setbox\@outputbox \box\@cclv
\let\@elt\relax
\xdef\@freelist{\@freelist\@midlist}%
\global \let \@midlist \@empty
\@combinefloats
\ifvoid\footins
\else
\boxmaxdepth \@maxdepth
\unvbox \@cclv
\vskip \skip\footins
\color@begingroup
\normalcolor
\footnoterule
\unvbox \footins
\color@endgroup
\fi
\ifvbox\@kludgeins
\@makespecialcolbox
\else
\setbox\@outputbox \vbox to\@colht {%
\@texttop
\dimen@ \dp\@outputbox
\unvbox \@outputbox
\vskip -\dimen@
\@textbottom
}%
\fi
\global \maxdepth \@maxdepth
}
Indeed the bottom float now appears right after the textarea. But all footnotes are pushed to the top of the next page. Thus, the approach may be show the right direction, but one has to fix the placement of the footnotes...
I'll keep trying and am thankful for hints or solutions by others!

\output. The key question is: are there any convenient hooks available? – John Kormylo Jul 19 '23 at 17:10\@makecolbefore running\@combinefloats. Also, it adds the entire\footinsto the text then removes the excess back. – John Kormylo Jul 19 '23 at 17:36footmiscis kind of hard to understand for me in this case. I also guess, like @JohnKormylo suggested, that it has to do with@makecol. But couldn't figure out so far how to get it working – lukeflo Jul 19 '23 at 17:47footmiscthe latter may not be necessary. But in general, the more packages I load, the higher the chances that some options/aspects can collide. – lukeflo Jul 19 '23 at 18:28footmisc. – lukeflo Jul 20 '23 at 08:22