MTEntriesを複数条件でフィルタリングする(スニペットは無理?)

MT、PowerCMSを触るときに絶対使うのがMTEntriesタグ。

 

一覧ページだったりを作るのによくつかうけれど、

少し複雑なフィルタリングを掛けようとすると意外と難しかったり、出力できないことがしばしば。。。

 

今回はカスタムフィールド(ラジオボタン)複数でフィルタリングを掛けたときのメモ。

 

■カスタムフィールド1

・ベースネーム:radio_sample

・テンプレートタグ:radioSample

・オプション:opA、opB

■カスタムフィールド1

・ベースネーム:radio_sample

・テンプレートタグ:radioSample

・オプション:op1、op2、op3

--------------------------------------------------------------

■やりたいこと

・複数カスタムフィールドの値でフィルタリングを掛けたい

ex) 文字で表すと opA AND op1 や opA AND op3 といった具合

 

<例1>

<MTEntries field:radio_sample="opA">

    <MTEntries field:radio_sample="opB">

        <MTIgnore>/*ここに出力内容*/</MTIgnore>

    </MTEntries>

</MTEntries>

 

手っ取り早いのがこのやり方。

だけど、MTEntriesを入れ子にするのは見た目がよろしくないような気がする・・・(個人の意見だけれども)

なので私のやり方は次の例2

 

<例2>

<MTIgnore>出力したくないものを先に出力</MTIgnore>

<MTEntries field:radio_sample="opB"><MTEntries>

 

<MTEntries field:radio_sample="op1" unique="1">

    <MTIgnore>/*ここに出力内容*/</MTIgnore>

</MTEntries>

 

一度除外したいものを先に空で出力し、unique="1"で重複記事を消すことでフィルタリングをかける。

もし、同一テンプレート内で再度MTEntriesを呼び出す場合はまた入れ子の式を書かなくて済むのでできれば例2を使ったほうがべんり(かも?)。

 

※ちなみに、スニペットで作ったカスタムフィールドの値でMTEntriesのフィルタリングはかけれないので注意

(1時間ほど格闘しましたができませんでした・・・知っている方は教えてくださいmm)

 

おわり。

 

 

 

 

 

 

 

WebサイトのSSL化を行ったときに躓いたメモ

WebサイトをSSL化するときにサーバーの設定を変更しなければならないがそのときに躓いたので調べたこと、わかったことをメモ。

 

その1:httpとhttpsで動作するサーバーは違う

表現が合っているかは微妙・・・

 

特定のページにアクセスするときにhttp通信からhttps通信にで切り替えたいので、

htaccessで切り替えるのが定石(と思います)

 

https通信でアクセスしたページでグロナビ等のリンクを踏んだときにヘッダーやフッターが読み込まれなかった。

↑どうやらhttps通信のままWebサイト内を行き来するらしい。

 

そこでルートのディレクトリにこれまたhtaccessを置いてhttpsさせたいページ以外はhttpに切り替える設定にしたが、これがどうして動かなかった。

 

いろいろと調べるとどうやら、

httpでアクセスした場合はhttpサーバー

httpsでアクセスした場合はhttpsサーバー

 となるらしく、httpsのサーバー設定を行ったときにOptionでhtaccessの許可を行っていなかったこと、SNIの設定を行っていなかったことが原因でした。

 

私の勝手なイメージで、httpサーバーの設定は引き継がれているものだと思っていました・・・

 

 その2:画像やJSの取得元がhttp通信の場合取得できない

例えば、本来httpのWebサイトをGoogleSSL化えこひいきでhttpsにしないといけなくなったときの落とし穴

 

画像やJSをURL指定でhttp通信を使って取得している場合は取得できないのでサーバー設定やhtaccessで拡張子(js, png, jpg)を例外的に通過させるか、HTMLソース内のURLを変える必要があります。

これをしなかった場合、画像やJSが読み込まれないので注意です。

 

SQL fiddle の使い方

SQL Fiddleの使い方をメモする

 

SQL Fiddleは下記のURLでアクセス

http://sqlfiddle.com/

 

 下記の画面が出てくる

f:id:taichiro0611:20160229011200p:plain

ページ最上部の「MySQL 5.6」をクリックするとプルダウンメニューが表示される。

メニューにはDBが各種存在し、自由に選択できる。

 

使い方としては、

------------------------------------------------------------------------------------

①プルダウンメニューからDB選択

②左ウィンドウでTABLE、INSERT文を記入し、初期データを作成

③左ウィンドウすぐ下の「BuildSchema」をクリックする

※クリックすると②で作成したテーブルをビルドします。

④右ウィンドウでSELECT文を記入

⑤「RunSQL」をクリック

-------------------------------------------------------------------------------------

 

 

 

⑤をクリックするとページ最下部に実行結果が出力されます。

※ページ最上部の「MySQL 5.6」横の「View Sample Fiddle」から動作サンプルを実行できます。

 

また、1からテーブルを作るのが面倒だなぁと思う場合、

「Text to DDL

から簡単にシンプルなテーブルであれば作成できます。

クリックすると下記のような画面が出ます。

 

f:id:taichiro0611:20160229013305p:plain

 

たとえば

TableNameにTable1

そのすぐ下のテキストボックスに

id | name
1 | aaaa
2 | bbbb
3 | cccc

と入力し、「Append to DDL」をクリックすると下記のSQLが生成されます。

 

CREATE TABLE Table1
    (`id` int, `name` varchar(4))
;
    
INSERT INTO Table1
    (`id`, `name`)
VALUES
    (1, 'aaaa'),
    (2, 'bbbb'),
    (3, 'cccc')
;

 

などなどテスト用や勉強に使うときにサーバー構築することなく使用できるのでとっても便利。

Facebook apiからJSON形式で投稿を取得する

Facebook apiからJSON形式で投稿を取得するメモ

 

https://developers.facebook.com/tools/explorerにアクセス

ここで取得するデータを試しに取ってくることができる。

 

取得の際は右側の

getToken

のプルダウンから

getPageAccessToken

を選択することでAccessTokenが生成される

※ここで取得する場合取得できる期間が短いのでWebサイトで動作させる場合は

右上のMyAppから新しく作成してAppTokenを生成する必要あり。

 

AccessTokenを取得できればSubmitボタンを押すことでJSONを取得できる。

 

取得するデータの指定は左側のウィンドウから自由に選べる。

 

実際に投稿取得するときは下記のURLがルートになる

https://graph.facebook.com/

 

URLの下にバージョンを指定し、Submitボタンがある列の文字列をURLに追記すると晴れてJSONデータを取得できる

 

例として自身のidと名前を取得したい場合は下記のURLになる。

https://graph.facebook.com/v2.5/me?fields=id,name

 

画像ファイルの拡張子が書き換えられたときの検出

 

画像データの拡張子が書き換えられたときにエラーを吐き出します。

 

以下サンプル

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

'画像ファイルを読み込む
Dim imgPath As String = "C:\test.jpg"
Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(imgPath)

Dim fileExtension As String = System.IO.Path.GetExtension(imgPath)

'イメージのファイル形式を調べる
If fileExtension = ".gif" Then
If img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif) Then
'--ここにエラー処理を書く(拡張子gifでデータのフォーマットが違うとき)
EndIf
ElseIf
fileExtension = ".jpg" Then
If img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg) Then
'--ここにエラー処理を書く(拡張子Jpegでデータのフォーマットが違うとき)

End If
Else
'--ここにエラー処理を書く(今回はjpg,gifのみの検出の為それ以外)
EndIf

'画像リソースの開放
img.Dispose()
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

拡張子は以下の処理で取得できます。
Dim fileExtension As String = System.IO.Path.GetExtension(imgPath)
<結果>
fileExtension : ".jpg" や ".gif"などドット付きで取得します

画像データは以下の処理で取得できます

'画像データの読み込み
Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(imgPath)

'画像フォーマットとイコールか判別
img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg)

その他ビットマップやpng画像も判別できるようです。

以上

VirtualBox+VagrantでRuby on Rails環境構築

VirtualBox+VagrantRuby on Rails環境構築しました。

 

VirtualBox:仮想環境を構築するソフトウェア

Vagrant:仮想環境にサーバーなどをインストールするソフトウェア

 

■必要なものをダウンロード

以下のURLからVirtualBoxVagrantをダウンロードします。

https://www.virtualbox.org/wiki/Downloads

https://www.vagrantup.com/downloads.html

また、Vagrantを使って作る仮想マシンのイメージはBoxイメージを使うのでこれもダウンロード

http://www.lyricalsoftware.com/downloads/centos65.box

 

仮想マシンの作成

仮想マシンを作りたいディレクトリにBoxイメージを配置

例:C:\Work

*以下コマンドライン上で操作

 

VagrantにBoxイメージを登録

vagrant box add base centos65.box

 

・初期化と仮想マシンの起動

vagrant init

vagrant up

 

 

・接続確認

vagrant ssh

→ここでsshクライアントがないといわれたのでPuttyごった煮版をインストールし、接続しました。

PuTTY ごった煮版

 

これで仮想マシンの構築はできました。

続いてRubyの導入です。

 

Ruby on Railsの導入に必要なソフトをインスコ

RVN:Rubyのバージョン管理

gem:Rubyのライブラリ提供サービス(PHPでいうPearみたいな)

Ruby:もちろんRuby

 

・RVNインストール

公式ホームページから以下のコマンドでインストールできるそうです。

1.gpg --keyserver hkp://keys.gnupg.net --recv-keys

2.\curl -sSL https://get.rvm.io | bash

2のコマンドを行った段階で警告が出たので警告通りコマンドを実行

source ~/.profile

 

rvnコマンドでマニュアルが表示されれば完了

 

Rubyのインストール

rvn install [Rubyのバージョン番号]

 

確認は

rvn list

でバージョンとあったRubyが表示されれば完了

また、Rubyインストール時にgemも導入されます。

Ruby on Railsのインストール

gem install rails

これで環境の構築は終了です。

 

Railsでプロジェクトを作って確認しよう!

仮想マシンとの共有フォルダをVagrantが生成してくれているのでそこに移動します。

cd /vagrant

 

プロジェクトを作っていきます。

rails new test

 

出来上がったらサーバーを起動します

rails server -b 0.0.0.0

ここでエラーが発生したので以下のURLを参考にGemファイルを編集しました。

kiyotakagoto.hatenablog.com

 

サーバーが無事立ち上がればOKです。

アクセスの為ポートフォワーディングの設定をします。

gemファイルで以下の赤文字のように変更

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

# Create a forwarded port mapping which allows access to a specific port

# within the machine from a port on the host machine. In the example below,

# accessing "localhost:8080" will access port 80 on the guest machine.

# config.vm.network "forwarded_port", guest: 80, host: 8081

config.vm.network "forwarded_port", guest: 3000, host: 3000, auto_correct: true

--------------------------------

今回はポート3000番を使いました。

Vagrantを再起動します

vagrant reload

 

再起動後下記URLにアクセスできれば完了です。お疲れさまでした。

http://127.0.0.1:3000/