ソネブロで記事タイトルに"[カテゴリ]"と"[編集]"が入る問題を修正

W3Cのサイトに Semantic data extractor ってものがあってページのアウトラインを確認したりするのに使えるんだけどチェックしてみたら記事タイトルに"[編集]"が混入してました。



ソネブロユーザーならご存知だと思いますが、ソネブロはログインしていると記事タイトルの横に記事を編集するリンクが挿入されます。普段はdisplay:noneで隠れているんだけど何故か出てきてしまっているようで…。そういえば記事をツイッターでリツイートしてくれた人のにも"[編集]"が入ってしまっていた。HTMLを確認してみるとこんな風に書いてある。

<h2 class="articles-title"><% unless:page_name eq 'article' -%><a href="<% article.page_url | html %>"><% /unless %><% article.subject | html %><% unless:page_name eq 'article' -%></a><% /unless %><% unless:article_category.name eq '未分類' %> <a href="<% article_category.page_url | html %>">[<% article_category.name | html %>]</a><% /unless %><% if:page_name eq 'article' %><span id="myblog-article-edit-area" style="display:none;">&nbsp;<a href="<% site_info.myblog_base_url | html %>/blog/article/edit/input?reload_blog_id=<% blog.id %>&id=<% article.id %>" rel="nofollow">[編集]</a></span><% /if %></h2>


むう…。以前、カテゴリ名は取り除いたんですが[編集]は取り除いていませんでした。見出しは記事タイトルだけにしておきたいですね。ということで該当部分を別の場所へ移動しました(削除だけだと記事編集が管理画面からしか出来なくなるので移設す)。

それからベースのHTMLを編集してブログタイトルを記事ページ以外では<p>でマークアップされるようにして、記事タイトルの<h2><h1>に変更します。これで記事ページの場合はブログタイトルよりも記事タイトルの方がレベルが上になります。

ってことで余計なものを省いた見出しがこれ。

<<% if:page_name eq 'article'%>h1<% else %>h2<% /if %> class="articles-title"><% unless:page_name eq 'article' %><a href="<% article.page_url | html %>"><% /unless %><% article.subject | html %><% unless:page_name eq 'article' %></a><% /unless %></<% if:page_name eq 'article'%>h1<% else %>h2<% /if %>>


最初と最後がちょっと滅茶苦茶ですがちゃんと動きます。

記事ページの時
<h1 class="articles-title">記事タイトル</h1>

記事ページ以外の時
<h2 class="articles-title"><a href="記事URL">記事タイトル</a></h2>


記事ページの時はクラスを"articles-title"じゃなくて"article-title"にしてCSSで変化をつけるのもありかもしれません。h1 id="article-title"でもいいかな?その方がスタイル上書きで済むから楽かも。

記事タイトルの見出しレベルを動的に変更する場合はブログタイトルの見出しタグの変更もお忘れなく。