info

Home
[WordPress]ルーティング  @ CMS , WordPress 2017年8月26日
テーマのfunctions.phpに追記する
/**
 * ルーティング(リライトルールの追加)
 * ここの設定を反映させるには下記の操作が必要
 * 管理画面にて「設定」->「パーマリンク設定」->変更せずに「変更を保存」
 * add_rewrite_ruleの第三引数の説明は下記
 * 'top' または 'bottom'。'top' の場合、ルールは WordPressのすべての既存ルールに優先する。'bottom' の場合、ルールはすべての既存ルールがマッチしない場合に検査される。
 */
function add_user_rewrite_rules() {
    add_rewrite_rule('^hoge/?$', 'index.php?c_controller=hoge&c_method=', 'top');
    add_rewrite_rule('^hoge/([^/]*)/?$', 'index.php?c_controller=hoge&c_method=$matches[1]', 'top');
}
add_action('init', 'add_user_rewrite_rules');

/**
 * ルーティング(リライトルールの追加)関連追加処理
 * c_type,c_actionをパブリッククエリ変数として登録
 * get_query_var('c_controller')で取得
 */
function add_user_routes_query_vars($query_vars){
    $query_vars[] = 'c_controller';
    $query_vars[] = 'c_method';
    return $query_vars;
}
add_filter('query_vars','add_user_routes_query_vars');
[PHP]Imagickサンプル  @ PHP 2017年8月10日
Imagickサンプル
<?php
$_data = array(
        'dir'       => './output/',
        'filename'  => date('YmdHis'),
        'filetype'  => 'png',
        'fontsize'  => 24,
        'width'     => 1000,
        'height'    => 640,
        'text'      => 'sample text',
        'textcolor' => '000000',
        'color'     => 'eeeeee',
        );
$filepath = realpath($_data['dir']).DIRECTORY_SEPARATOR.$_data['filename'];

$draw = new ImagickDraw();
$draw->setFont( realpath('./font/GenEiGothicP-Regular.otf') );
$draw->setFontSize($_data['fontsize']);
$draw->setFillColor(new ImagickPixel('#'.$_data['textcolor']));
$draw->setTextAlignment(Imagick::ALIGN_CENTER);
$draw->annotation($_data['width']*0.5,$_data['height']*0.5, $_data['text'] );

$canvas = new Imagick();
$canvas->newImage($_data['width'], $_data['height'], new ImagickPixel('#'.$_data['color']), $_data['filetype']);
$canvas->drawImage($draw);
$canvas->writeImage($filepath);
$canvas->clear();
[MovableType]フィールド名を変数で指定  @ CMS , MovableType6.x 2017年8月1日
フィールド名を変数で指定
カスタムフィールド
CFEntryDataAddress1~CFEntryDataAddress10
CFEntryDataDetailImage1~CFEntryDataDetailImage10
を表示
<MTFor var="x" from="1" to="10">
	<MTIgnore>テキストの時</MTIgnore>
	<MTSetVarBlock name="_CFEntryDataAddress"><MTCFEntryDataAddress<MTVar name="x">></MTSetVarBlock>
	<MTSetVarBlock name="_CFEntryDataAddressValue"><MTVar name="_CFEntryDataAddress" decode_html="1" mteval="1"></MTSetVarBlock>
	<MTIf name="_CFEntryDataAddressValue" ne="">
		<MTVar name="_CFEntryDataAddressValue" encode_html="1">
	</MTIf>

	<MTIgnore>画像の時</MTIgnore>
	<MTSetVarBlock name="_CFEntryDataDetailImage"><MTCFEntryDataDetailImage<MTVar name="x">></MTSetVarBlock>
	<MTSetVarBlock name="_CFEntryDataDetailImageValue"><MTVar name="_CFEntryDataDetailImage" decode_html="1" mteval="1"></MTSetVarBlock>
	<MTSetVar name="_CFEntryDataDetailImageAsset" value="">
	<MTIf name="_CFEntryDataDetailImageValue" ne="">
		<MTSetVarBlock name="_CFEntryDataDetailImageAsset">
			<MTCFEntryDataDetailImage<MTVar name="x">Asset>
					<img src="<MTAssetThumbnailURL width="450" force="1">">
			</MTCFEntryDataDetailImage<MTVar name="x">Asset>
		</MTSetVarBlock>
	</MTIf>
	<MTIf name="_CFEntryDataDetailImageAsset" ne="">
		<MTVar name="_CFEntryDataDetailImageAsset" decode_html="1" mteval="1">
	</MTIf>
</MTFor>
[JavaScript]deep-link.js  @ JavaScript 2017年7月10日
deep-link.js
aタグタップでアプリ起動 > 無ければストアへ遷移

サンプル:http://ktyr.net/js/69/
GitHub:https://github.com/timseverien/deep-link.js

サンプルにおける修正点1
最後に’;end’が付いてないと動かない端末がある
if(isAndroidBrowser) {
return 'intent:' + app.split(':')[1] + '#Intent;scheme=' + scheme + ';package=' +
  store + ';S.browser_fallback_url=' + encodeURI(href)+';end';
}

サンプルにおける修正点2
でdeep-link.jsを読み込む時、初期化処理をDOM読み込み後に実行するよう変更
var init = function(){
	var elements = document.getElementsByTagName('a'),
		i = elements.length;
	while(i--) parseElement(elements[i]);
};
document.addEventListener('DOMContentLoaded',function(){
	init();
});
[Swift]addObserverでresize event  @ App Develop , Swift 2017年7月1日
addObserverでresize event
self.contentView.addObserver(self, forKeyPath: "frame", options: NSKeyValueObservingOptions(rawValue: 0), context: nil)

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    //処理
}
[CodeIgniter]email  @ PHP , CodeIgniter 2017年6月10日
email

views/mail/user_mail.php
メール本文

libraries/MY_Email.php
<?php
class My_Email extends CI_Email {
	public function __construct(array $config = array())
	{
		parent::__construct($config);
	}

	/**
	 * get Body by tempalte
	 *
	 * @param	string
	 * @param   array
	 * @return	string
	 */
	public function get_template_contents($template, $values = array())
	{
		$file = VIEWPATH . $template;
		if(!file_exists($file)){
			$file .= '.php';
		}

		extract($values);
		ob_start();
		include($file);
		$contents = ob_get_contents();
		ob_end_clean();
		return $contents;
	}
}

config/config_mail.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$config['user_mail'] = array(
    'from'      => 'from@sample.co.jp',
    'from_name' => 'fromName',
    'subject'   => 'メールタイトル',
);

controller
$this->load->library('email');
$config_key = 'user_mail';
$this->load->config('config_mail');
$user_mail = $this->config->item($config_key);

$mail = new PHPMailer();
$mail->CharSet = "iso-2022-jp";
$mail->Encoding = "7bit";
$mail->AddAddress('to@sample.co.jp');
$mail->From = $user_mail['from'];
$mail->FromName = mb_encode_mimeheader(mb_convert_encoding($user_mail['from_name'], "JIS", "UTF-8"));
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($user_mail['subject'], "JIS", "UTF-8"));
$body = $this->email->get_template_contents('mail/'.$config_key);
//$mail->Body = mb_convert_encoding($body, "JIS", "UTF-8");
$mail->Body = mb_convert_encoding($body,"ISO-2022-JP-ms","UTF-8");//機種依存文字が含まれるならこちら
$result = $mail->Send();
[MovableType]プラグイン「PageBute」でページネーションテンプレ  @ CMS , MovableType6.x 2017年6月10日
プラグイン「PageBute」でページネーションテンプレ

<MTIgnore>1ページに表示する記事数</MTIgnore>
<MTSetVar name="per_page" value="12">

<MTSetVarBlock name="entries_count"><MTEntriesCount></MTSetVarBlock>
<MTIf name="entries_count" gt="$per_page">
		<ul>
			<MTPagination>

				<MTPaginationHeader>
					<MTIfPaginationFirst>
						<li class="prev"><a href="<MTPaginationPrev>">前へ</a></li>
					<MTElse>
						<MTignore>最初のページの時</MTignore>
						<li class="prev"><span>前へ</span></li>
					</MTIfPaginationFirst>
				</MTPaginationHeader>

				<MTIfPaginationCurrent>
					<MTignore>現在のページ</MTignore>
					<li class="is_active"><a href=""><MTPaginationLink element="number"></a></li>
				<MTElse>
					<MTignore>それ以外(遷移用のリンクあり)</MTignore>
					<li><a href="<MTPaginationLink>"><MTPaginationLink element="number"></a></li>
				</MTIfPaginationCurrent>

				<MTPaginationFooter>
					<MTIfPaginationLast>
						<li class="next"><a href="<MTPaginationNext>">次へ</a></li>
					<MTElse>
						<MTignore>最後のページの時</MTignore>
						<li class="next"><span>次へ</span></li>
					</MTIfPaginationLast>
				</MTPaginationFooter>
				
			</MTPagination>
		</ul>
</MTIf>