Simplicityの特徴 › フォーラム › テーマファイルのカスタマイズに関する質問など › ブログカードの抜粋文字数について
-
投稿者投稿
-
-
2015年7月23日 11:57 AM #29777
Anz
ゲストこんにちは。
ブログカードの文字数は、例えばテーマのカスマイズ欄でも字数指定すると、リストもブログカードも同じ文字数になりますが、ブログカードの文字数だけ変えることは可能でしょうか?試しに、カスタマイズの値を空欄(0)にして、functions.phpに記述があるfunction get_the_custom_excerptの$lengthでカスタマイズで指定していた文字数を再定義し(仮に300)、下のほうに記述があるブログカード関係の$lengthや$tagを弄ってみて300の上限から100を抜き取ろうとしたのですが、知識不足のせいで出来ませんでした(投稿のソースを見ると返り値がまったく出なかったり<div></di>、上限文字数と変わらなかったりとかでした)。
ブログカードは投稿本文での何て言うのか、個人的にはビジュアル的な引用リンクのようなイメージを持っていますので、リストの文字数を多めに設定している時などは、それよりは少なめのほうがレイアウト的にもいいかなと思ったのですが(これは私の場合に限ってですが(リストの文字数が多いので)、もしブログカードの抜粋をcustom_excerptの条件より少なくということが可能でしてらご教示いただますと助かります。
よろしくお願いいたします。 -
2015年7月23日 1:44 PM #29783
わいひらキーマスター子テーマに親テーマのfunctions.phpからurl_to_blog_card_tag関数部分をコピーし、子テーマにペースとして再定義します。
その後、関数内にある、抜粋の取得部分で、取得する文字数のカウントを変更すればできるかと思います。 -
2015年7月23日 3:27 PM #29790
Anz
ゲストご返信有難うございます。
たぶん、わいひら様がおっしゃっている子テーマにペーストする部分というのはif ( !function_exists( 'url_to_blog_card' ) ): function url_to_blog_card($the_content) { ↑ここから ↓ここまでの間(57行分くらいでしょうか) return $the_content;//置換後のコンテンツを返す } endif;だと思うのですが(違っていましたらご指摘ください)、それで、その中の
$excerpt = get_the_custom_excerpt($post_id->post_content, get_excerpt_length());//抜粋の取得↑このあたりで、文字数の調整を、とおっしゃられているのかなと解釈したのですが、どうも、いくつか試したのですが、ブログカードの文字数の返り値はリストの値と同じとか、思ったようにはなりませんでした。
例えば、Simplicityの抜粋文字数が300だとしまして(functions.phpでは下記の感じ)
if ( !ctype_digit($length) ) $length = 300; $length = ($length ? $length : 300);//デフォルトの長さを指定するブログカードの抜粋は150にしたいとしましたら、
$excerpt = get_the_custom_excerpt($post_id->post_content, get_excerpt_length());//抜粋の取得
ここをどのように記述するのでしょうか?
もしかしたら、まったく見当違いの部分を変えようとしているのかもしれませんが、どこをどのようにしたらデフォルトで300の抜粋が、ブログカードで150になるのか、ちょっとわからなくなってしまいました。 -
2015年7月23日 5:59 PM #29795
-
2015年7月24日 1:48 AM #29822
Anz
ゲスト記述例を添えていただき有難うございます。
結論としては出来ました。有難うございます。
実は、ご質問前のトライでも、わいひら様の記述も試してみたのですが、何故かブログカードには反映されていませんでした。いろいろと試行錯誤してみた結果、基本となる抜粋を親テーマのfunctions.phpに
if ( !ctype_digit($length) ) $length = 300; $length = ($length ? $length : 300);//デフォルトの長さを指定するとして記述してしまうと反映されないようでした。
管理画面のテーマのカスタマイズのほうに設けられているレイアウト(全体・リスト)の抜粋文字数で基本となる抜粋文字数(今回の例ですと300)を指定し、親テーマの上述のコード部分は70のまま変えない、とすることで、
$excerpt = get_the_custom_excerpt($post_id->post_content, 150);//抜粋の取得
この記述が反映されるようでした(つまり、管理画面のテーマ>カスタマイズのほうの設定で文字数を設定してあげることが前提となるような挙動でした)。いずれにしましましても、リスト表示の文字数より少なめの文字数でブログカードが反映されて嬉しく思っています。
何度もアドバイスをいただき有難うございました。
それでは失礼いたします。 -
2015年7月24日 3:59 AM #29825
Anz
ゲストすみません。追記です。
確かに、1つ前の記述でブログカードの抜粋文字数は、リストで出している抜粋文字よりは少なくなっていました。ちょっと少なくないかな? という感じで、150ではなくて、60ちょっと位でした。
それで、少し試してみたのですが、例えば管理画面のカスタマイズから設定するリストの文字数を300から、450と50%増しにし、子テーマの
get_the_custom_excerpt($post_id->post_content, 150);//抜粋の取得
の文字数部分を増加させていくと、150だと上述のように未だ60ちょっと位ですが、260の設定値以上にするとほぼ260出ます(270,280,…300とかでもだいたいそのとおりに出ます)。
つまり、どの部分との相関関係かが分からないのですが、post_content, 文字数);の値がどこかを境目として文字数を増やす設定に従いそのとおりに出るという感じでした(つまり、ある一定の設定値までは60ちょっとの文字数のままという感じです)。ただ、少ない文字数設定値の時も、子テーマの設定値を更新した後、ブログカードがある当該記事をリロードすると、ほんの一瞬ですが、文字列が設定値以上かすかに出て、リロード完了後は60ちょっと、というようにも見えたりもしました(blog-card-excerptのCSSや、それを枠組む要素のCSSをまだ見ていないので、そのあたりが関係しているかどうかは不確かですが・・・)
一応、私だけが試した範囲ですが、このような挙動でしたということをご報告しておいたほうがと思い、追記として投稿させていただきました。
-
2015年7月24日 7:36 AM #29830
Hidekichi
ゲスト僕は、親テーマをイジるとアップデートの時に大変なのでjQueryをオススメします。
しかしながら、PHPのmb_str系の関数がないjQueryにとってはマルチバイトの文字を抜き出すというのは案外大変なのです。特に日本語と英語が混在している場合など。で、マルチバイトを何とか算出してくれる方法を探していた所、海外のサイトで見つけたので、今年の4月ぐらいに書いた記事ですが Simplicityを少し改造してみた 番外編 part4 リストスタイル3列で字数制限をして高さを揃える のようにして、jQueryで文字を丸めるようにするという方法もあります。
まぁ今回はPHPで解決したみたいなので、同じようなことを考えているその他の人に向けてになるかと思いますが、例として、いわゆる、トップページ、デフォルトのサムネイルリストでの表示部分であるならば、$(".entry-snippet").each(function(){ $(this).cutString({length: 36}); }); /* $(エレメント).cutString();を動作させるためには、上記リンクよりサイトに来てもらって必要なプラグイン化している部分のスクリプトを子テーマjavascript.jsに書いておく必要があります。プラグイン化しているので一旦、何かしらで読み込んでおけば、いつでも.cutString()は利用可能です。*/などとして、マルチバイトの文字(あるいは日本語・英語が混在しているテキスト)であっても指定数の36文字で丸めることができます。そのためには、カスタマイザーで丸める文字数よりも、長めの文字抽出をしておく必要があったりします(36文字ならデフォルトでok)。
.cutString()のデフォルトオプションは20文字、省略文字は…となってます。なので、
$(何かしらのセレクタ).cutString();とすると、20文字で文末に…がついて表示されます。これの利点は、セレクタさえわかっていれば、そのセレクタの文字数を指定数で丸めることができるという点です。PHPで親テーマの該当部分をわざわざカスタマイズしなくても丸められるので場合によっては便利だろうと思います。場合によればですが(笑)
ちなみに記事内に参考リンクとして貼っつけてあるhostingerのリンクは現在動作しません(というか利用してません。後でリンク解除しておきます。)
-
2015年7月24日 12:43 PM #29841
Anz
ゲストこんにちは。
Hidekichi様、別角度からのアドバイス有難うございます。
もし、セレクタによって抜粋の文字数をわりと使い分ける用途が出てきたら、Hidekichi様のご提示していただいた方法はとても参考になると思いました。ただ、今回の目的のプライオリティとしては、リストの抜粋よりブログカードの抜粋を少なく、ということでしたので、一応それは達成されていますので、個人的には満足しています(記事数が多いので、内部リンクをブログカードのように見せられたらという目的でしたので)。
ですが、わいひら様からご教示いただいたり、また自身でもあれこれ子テーマに移してきたブログカードに関係するcustom_excerpt周りを弄っているプロセスで、デフォルトの文字数と、custom_excerptで指定する文字数の相関関係(ある一定数のcustom_excerptになるとそれが反映されるといったあたりの相関)が少し気になったので、一応ご報告させていただいた次第です。
個人的には、thumb100は4:3のアスペクト比且つfalseで出しているので(100×75)、ブログカードの主な用途が内部リンクのビジュアル化であれば、custom_excerptが60ちょっとでもすごく困るわけではないので(逆にテストしてみた260とかになると長過ぎてしまうので)、今回ご教示いただいた方法で暫くはやっていこうかなと思っています。
いろいろアドバイスいただきまして有難うございました。
それでは失礼いたします。 -
2015年7月24日 5:38 PM #29855
-
2015年7月24日 11:27 PM #29888
Anz
ゲストこんにちは。
今まで、Simplicity 1.7 安定版(1.7.0 20150604c、だと思うのですが)、こちらを使用させていただいていました。
それで、つい今しがた、WordPressの管理画面からのアップデートだとエラーが出たので、FTPのほうから
1.8.0 20150721f
こちらをインストールしてみました。
結果、小テーマのほうで指定したcustom_excerptの文字数、ちゃんと反映されいるようです(文字数値をいくつか変えてテストしてみたのですが、その値に応じて文字数の増減がされていました)。
CSSの差分はこれからちょっと見ていき(とりあえず子テーマのほうに1.7系のカスタマイズしたCSSを持ってきて、親テーマの1.8系のCSSは「SNSに関するスタイルシートの設定」以下だけを残しておきました。タイトルから本文までの並びをカスマイズしていて、1.8系のだとその部分合わないようでしたので)、子テーマのCSSもフィクスしていこうかなと思っています。
最後のほうは蛇足になってしまいましたが、バージョン「1.8.0 20150721f」では、ブログカードの文字数は子テーマのfunctions.phpの設定が反映されていたことをご報告させていただきました。以上になります。
失礼いたします。 -
2015年7月25日 5:06 PM #29910
わいひらキーマスターバージョン1.7.7あたりで不具合報告があって、一度抜粋文字数の不具合を修正しています。
Simplicity1.8安定版公開。1.7→1.8変更点まとめ。CSSの表示も、ブラウザキャッシュが残っている影響もあるかもしれません。
ただ、子テーマに施したCSSの影響であることも考えられるため、細かなことは、実際のものをみないとわからないかもしれません。
-
-
投稿者投稿
- トピック「ブログカードの抜粋文字数について」には新しい返信をつけることはできません。