Nambahin Description Ke Postingan

Setelah berhasil deploy ke git pake plugin dan udah bisa diliat hasilnya.

Cuman kok pas liat html source, kok authornya orang laennn.

scshoot

Setelah ditelusuri, ternyata dari template yang dipake manggil open_graph helper. Emang sih, gw gak set site description di _config.yml, tapi teteuppp ntah kenapa kok yg muncul nama itu.

Ya sudah lah ya, sekarang gimana caranya biar nama itu gak muncul. Tambahin meta description di setiap post.

Karena terlalu banyak file yang kudu diupdate, akhirnya bikin script kecil, karena gak ngerti nodejs, scriptnya pake php.

Pertama kumpulkan semua files yang mau kita tambahin description-nya.

$pattern   = '/^.+_(posts|drafts).+\.rst$/i';
$files     = [];
$path      = realpath('/path/to/source/dir');

$directory = new \RecursiveDirectoryIterator($path);
$iterator  = new \RecursiveIteratorIterator($directory);
$regex     = new \RegexIterator($iterator, $pattern, \RecursiveRegexIterator::GET_MATCH);

foreach ($regex as $file) $files[] = $file[0];

Kenapa $file[0]? gak tau :D, mungkin hasil dari preg_match($pattern, $path)

>>> preg_match($pattern, '/path/to/source/dir/_drafts/2004-12-04-open-only-if-you-have-time-for-god.rst', $file);
=> 1
>>> $file
=> [
     "/path/to/source/dir/_drafts/2004-12-04-open-only-if-you-have-time-for-god.rst",
     "drafts",
   ]

Nah, mungkin yg direturn itu adalah hasil dari preg_match tadi.

Setelah semua filesnya udah kumpul, tinggal update satu per satu.

Ambil meta (paling atas)

$content = file_get_contents($file);

$add_description = function(& $content) {
    /*
     * hanya tambah description kalo blom ada
     * samain aja descriptionnya dengan title
     */
    if (! preg_match('!^description:!mi', $content)) {
        if (preg_match("!^(title: (?<title>.+))$!mi", $entry, $match)) {
            $entry .= "\ndescription: {$match['title']}";
        }
    }
};

if (preg_match('!^(?<fl>-{2,})$\n(?<c>.*)\n^(?<sl>-{2,})$!sim', $content, $match)) {
    $match     = ['fl' => $match['fl'], 'c' => $match['c'], 'sl' => $match['sl']];
    $original  = join("\n", $match);

    $add_description($match['c']);

    $new_meta  = join("\n", $match);
    $content   = str_replace($original, $new_meta, $content);

    file_put_contents($file, $content);
}

nah kira-kira seperti itu.