サイトを更新しました

タイトルの通り、サイトを更新しました。
以下変更点と忘備録です。

カテゴリアーカイブと個別記事にパンくずリストを追加

個別記事

<?php

  $categories = get_the_category();
  $categories = array_reverse($categories);
  $breadclumbs = array("<a href='".site_url()."'>架空会社ぱあぷう</a>");
  foreach($categories as $category){
    $breadclumbs[] = "<a href='".esc_url(get_category_link($category->cat_ID))."'>".$category->name."</a>";
  }
?>

    <?= implode(" > ", $breadclumbs) ?>

カテゴリアーカイブ

<?php
  $categories = get_the_category();
  $breadclumbs = array();
  foreach($categories as $category){
    if($category->cat_ID == $cat){
        $breadclumbs[] = "<a href='".esc_url(get_category_link($category->cat_ID))."'>".$category->name."</a>";
        while($category->category_parent){
            $category = get_category($category->category_parent);
            $breadclumbs[] = "<a href='".esc_url(get_category_link($category->cat_ID))."'>".$category->name."</a>";
        }
        break;
    }
  }
  $breadclumbs[] = "<a href='".site_url()."'>架空会社ぱあぷう</a>";
  $breadclumbs = array_reverse($breadclumbs);
?>

    <?= implode(" > ", $breadclumbs) ?>

子カテゴリ→親カテゴリはサクッと取れたんですけど親カテゴリ表示の際に自分のカテゴリを取得するのがちょっと大変でした。
get_the_category()って自分のカテゴリだけ取ってくれるわけじゃないのね……。

All in One SEO Pack導入

言わずと知れた有名プラグイン。便利すぎて毎回使いこなせないな〜と思いながら毎回入れます。

All in One SEO Pack

OGPを設定


twitterに共有すると画像が出るようになりました。
肝心の共有ボタンは無いのであとで追加します。

ファビコンを追加

弊社ロゴ(サイト左上)は本職のデザイナーさんに格安で作成していただいたもので、これを32×32サイズに切り抜いてファビコンとしました。

  1. 32×32サイズのキャンパスを作成する
  2. ロゴのデータファイル(.ai)からオブジェクトをコピー&ペーストして位置を合わせる
  3. 見切れてるパス削ったりする
  4. キャンパスと同サイズの長方形を新規作成、キャンパスに重ねる
  5. 長方形とロゴオブジェクトを選択、変形→パスファインダー→切り出し
  6. 完成!

ファビコン反映されてるのまだ見えてないけど。
以上、更新報告でした。SNSシェアボタン系は多分プラグイン入れるだけなので記事書かないです。

Laravel5.4でCookieを使うメモ

 仕事で作って案の定却下されたけど勿体無いので供養だオラァ!!

経緯

  • Remember meの機能をつけることになる
  • なるほどと思ってつける
  • テスト仕様書を見たら想定されている機能が違う(語の定義が食い違っていた)
  • 気合で組み込む
  • コードレビュー時点で怒られが発生、棄却

語の定義の話

上司「リメンバーミーって画面にIDとパスワード保存してくれるやつじゃろ」
私「リメンバーミーってログイン状態保持してくれるやつじゃろ」
→事故発生

ちなみにLaravelのリメンバーミーはログイン状態を保持してくれるやつ。だからこそ上司との意見の食い違いに気付けなかった。
説明するより組んで見せた方が早いと判断して取り敢えず組んだ(冒頭の「案の定」はそのため)
っていうか画面にIDとパスワード覚えてくれるやつはリメンバーミーっていうかブラウザの機能では?(素)

ソース

クッキー保存

ちなみに今回はログインも独自ソースなのでこれで済んでるけどAuthenticatesUsersはtraitなのでそのへんはなんとかしてください。まあコピペでなんとかなるじゃろたぶん。

# LoginController.php

public function login(Request $request)
{
    // 〜ログイン処理〜
    // 〜ログイン成功〜
    if($request->input('remember')){
        $name = cookie()->make("name", encrypt($request->input('name')), 129600);
        $password = cookie()->make("password", encrypt($request->input('password')), 129600);
        return redirect('/home')->withCookie($name)->withCookie($password);
    }
}

クッキー展開

#LoginController.php

public function showLoginForm(Request $request)
{
    $name=$password="";
    if(old('name')!=null){
        $name=old('name');
        $password=old('password');
    }else if($request->hasCookie('name')){
        $name=decrypt($request->cookie('name'));
        $password=decrypt($request->cookie('password'));
    }
    return view('auth.login',compact('name','password'));
}

 優先順位は前回入力値が上。しかしなんで画面にIDとパス残ってるのに入力を間違うなんてことがあろうか(反語)
 あとはこのnameとかpasswordをvalueに設定してやるだけ。エラーで戻ってきてもちゃんと復元してくれるよ!