タイトルのようなエラーが出た場合の対処方法。

 英語だと

 

…is not recognized as the name of a cmdlet

 

 という感じ。

 モジュールが足りてない可能性があるのでPowerShell Gallaryで探してインストールする。

 今回のAzTableの場合は

 

Install-Module -Name AzTable	

 

 


 Azureを扱う際にPower Shellを使うことが無いので、しばらくぶりに触ってみようとするとAzとAzureRMの情報が混在していて戸惑います。

 普段使いの人は新しいAzに慣れているのでしょうが、私みたいな半端者には過渡期は辛いです。

 

 なんでPower Shellを使わないかというと、仕事の関係でMicrosoftアカウントが複数のAzure Subscriptionに紐づいているのですがPower Shellだと普段使いじゃないサブスクリプションが既定になっていて切り替えが面倒だからです。

 既定のサブスクリプションを変えれば良いじゃないか、という話なのですが、Azure Portalで確認するとDefaultのサブスクリプションと日本語で既定と書かれたサブスクリプションがあって、怖くて触れないです。もしサブスクリプションの操作でミスる・・・。

 

 というわけで、Azでサブスクリプションを切り替えるコマンドだけ備忘録的に残しておきます。

 

$context = Get-AzSubscription -SubscriptionId "<サブスクリプションのID>"
Set-AzContext $context

 

 


 2020年1月24日に「基礎から学ぶbaserCMS」が発売になります。

 CakePHPベースの国産CMSについて書いた入門書です。

 

 出版に際して、baserCMSコミュニティの皆さんには大変お世話になりました。

 ありがとうございます!

 

 普段は予定よりページ数が少なくなる私ですが、今回はコミュニティの熱い想いに押されたのか、書き過ぎてしまいました。

 総ページは260ページぐらいなのですが、実際はもう少し書いていて、書籍にならなかった分は出版社のご厚意でDLで手に入るようにしてもらいました。C&R研究所様、わがままを叶えていただきありがとうございます。

 詳しくは書籍を参照ください。

 

一足早く見本を手にできるのが著者の喜びですね


 今年もパートナー新年会が開催されます。

 新しいパートナー制度など、EC-CUBEに携わる開発会社に影響がありそうな情報発信もあるようです。

 

(参考)EC-CUBEパートナー新年会2020

https://www.ec-cube.net/event/detail.php?event_id=217

 

 日本発のフレームワークを利用する利点の大きな1つがこういうイベントだと思います。

 EC-CUBEのかじ取りをする本家の方の生の声として、現状または今後に対する話を聞けたり、他開発会社さんと情報共有ができる良い機会だと思います。

 

 これまでの経験だと、雑談の時間はフランクに色々話し合うことができました。

 パートナー制度に参加していなくても参加資格はあるようなので、EC-CUBEを仕事にしようと考えている開発者の方は参加すると面白い話が聴けるでしょう。

 


 本記事はHTMLやJavaScriptにあまり詳しくない店舗運用者様などを想定した解説記事です。

 EC-CUBE 4のトップページを編集してみたいけど、どのように触っていいのかわからないというような場合にどのように編集すればよいかを書いていきます。

 

レイアウト、メインコンテンツ、ブロック

 

 EC-CUBE 4のページは「レイアウト」が決められており、そのレイアウトで「そのページ固有のメインコンテンツ」と「複数のページで利用できるブロック」を設定しています。

 まずは、変更したい場所がページのメインコンテンツなのか、ブロックなのか確認する必要があります。

 

レイアウト

 

 レイアウトは初期状態のEC-CUBE 4ではメインページと、その他ページが異なるレイアウトになっています。

 

 管理サイトの「コンテンツ管理」→「レイアウト管理」でそれぞれのレイアウトを確認することができます。

 

 

 「トップページ用レイアウト」クリックすると、

トップページのレイアウト画像

トップページのレイアウト

 

 上の画像のようにトップページのレイアウト情報を表示することができます。

 トップページは#headerの部分に「ヘッダー(商品検索・ログインナビ・カート)」「ロゴ」「カテゴリナビ(PC)」という3つの項目が表示されています。この1つ1つがブロックです。

 それ以外にも#contents_topや#main_topという表記があり、今回は解説しませんが、未登録のブロックをドロップすることで、別のブロックを表示することもできます。

 

メインコンテンツ

 

 #main_topの下に「Main」という表示があります。

 これが各ページ固有の内容を表示する部分です。 

 

 例えば、トップページなら、画像を3つスライドショー形式で表示している部分が固有の内容です。

 

 メインコンテンツの内容は「コンテンツ管理」の「ページ管理」から確認及び編集することができます。

 

 

 上画像の「TOPページ」をクリックすることでトップページのメインコンテンツを編集できます。

 

 「ファイル名」に表示されている「app/template/default/index.twig」が、「コード」欄に表示されているHTML(およびCSS、JavaScript)が実際に記述されているファイル名です。

 このページで内容を編集するか、ファイルを編集することで表示を変更することができますが、今回は管理サイトで作業を行うことを想定して、このページの内容を変更することとします。

 

スライドショーの画像を変更したい

 

 例として、スライドショーの画像を変更してみます。

 先ほど表示したページ管理のトップページの「コード」欄のスライドショー画像を指定している部分は以下です。

 

{% block main %}
    <div class="ec-sliderRole">
        <div class="main_visual">
            <div class="item slick-slide"><img src="{{ asset('assets/img/top/img_hero_pc01.jpg') }}"></div>
            <div class="item slick-slide"><img src="{{ asset('assets/img/top/img_hero_pc02.jpg') }}"></div>
            <div class="item slick-slide"><img src="{{ asset('assets/img/top/img_hero_pc03.jpg') }}"></div>
        </div>
    </div>
{% endblock %}

 

 コードの中に「img_hero_pc01.jpg」という画像ファイル名があります。これがスライドショーの一番目に表示する画像ファイルの指定です。この辺は、ある程度HTMLなどの知識が無いと特定が難しい部分ですが、見つけることは可能だと思います。

 ただ単純なHTMLではなく、Twigの機能を使った指定になっています。

 

asset(‘assets/img/top/img_hero_pc01.jpg’)

 

 このファイルはEC-CUBE 4をインストールしたディレクトリの下の以下の場所にあります。

 

html/template/default/assets/img/top/

 

 フォルダの中身を確認するとこのようにimg_hero_pc01.jpgなどがありますね。

 似たような名前のimg_hero_sp01.jpgなどがありますが、これはスマートフォン表示の際の画像です。今回はスマートフォンについては言及しませんが、スマートフォン対応しているサイトでは同様にこの画像も変更する必要があります。

 

 「スライドショー表示されている画像3つを変更したい」という場合、2つの方法が取れます。

 

・HTMLを触らずに画像を差し替える

・HTMLを変更して、表示したい画像を指定する

 

 HTMLを触らない方法は、HTMLの知識の無い方でも変更可能というのがメリットです。ファイル名が実際表示する画像の内容に合わない、画像の差し替えより凝ったことができない、などのデメリットもありますが、HTMLを編集してページの表示を崩してしまう恐れはありません(画像サイズによって表示が伸びたりすることはあるので、画像サイズは他画像とそろえる必要はあります)。

 この場合は、img_hero_pc01.jpg、img_hero_pc02.jpg、img_hero_pc03.jpgを表示したい画像と差し替えればOKです。

 

 HTMLを変更する場合は、「コンテンツ管理」の「ページ管理」でTOPページをクリックし、「コード」欄を書き換えます(注意:かならず編集前のコードをコピーないし、ファイルをバックアップして元に戻せるようにしておいてください!)。

 例えば、ex.jpgという画像を表示したい場合は、ほかの画像と同様の「html/template/default/assets/img/top/」以下にex.jpgを配置し、コードの該当箇所を以下のように書き換えます。

 

{% block main %}
    <div class="ec-sliderRole">
        <div class="main_visual">
            <div class="item slick-slide"><img src="{{ asset('assets/img/top/ex.jpg') }}"></div>
            <div class="item slick-slide"><img src="{{ asset('assets/img/top/img_hero_pc02.jpg') }}"></div>
            <div class="item slick-slide"><img src="{{ asset('assets/img/top/img_hero_pc03.jpg') }}"></div>
        </div>
    </div>
{% endblock %}

 

 最後に右下の「登録」ボタンをクリックして変更を反映させます。

 

 これらの作業は、HTMLやプログラミングの知識が無いと危険な作業ですので、バックアップを取って元に戻せるようにしてください。最後に書きますが、ご自身で修正が難しい場合は、デザインテンプレートや開発会社に依頼する方がより安全で、凝ったサイトを作成することができます(お金はかかりますが)。

 

ブロック

 

 メインコンテンツに編集したい内容が見当たらない・・・という場合はブロックとして配置されていることを疑ってください。

 例えば、トップページの以下の表示は「新入荷商品特集」というブロックです。

 

 

 どうやって、見当をつけるかというと、先述のレイアウト管理からトップページのレイアウトを確認するとある程度推測することができます。

 

 Mainの下に「新入荷商品特集」や「トピック」という項目がありますね。

 

「新入荷商品特集」の内容

 

 ブロックのコードは「コンテンツ管理」→「ブロック管理」から確認できます。

 一覧から「新入荷商品特集」をクリックすると、コードが確認できます。

 

<div class="ec-role">
    <div class="ec-eyecatchRole">
        <div class="ec-eyecatchRole__image">
            <img src="{{ asset('assets/img/top/img_about.jpg') }}" alt="" role="presentation"/>
        </div>
        <div class="ec-eyecatchRole__intro">
            <p class="ec-eyecatchRole__introEnTitle">{{ 'front.block.eyecatch.title__en'|trans }}</p>
            <p class="ec-eyecatchRole__introTitle">{{ 'front.block.eyecatch.title__ja'|trans }}</p>
            <p class="ec-eyecatchRole__introDescriptiron">{{ 'front.block.eyecatch.descriptiron'|trans|nl2br }}</p>
            <a class="ec-blockBtn--top" href="{{ url('product_list') }}?category_id=4">{{ 'front.block.eyecatch.view_list'|trans }}</a>
        </div>
    </div>
</div>

 

 このコードに「ジェラートとは・・・」のようにページで表示されている文言があれば、特定は容易なのですが、EC-CUBE 4は多言語対応しており、それぞれの言語に合わせた表示を別の場所で行っています。

 多言語対応が不要な場合は、{{ ‘front.block.eyecatch.title__en’|trans }}などの代わりに日本語の文字を入れてもいいのですが、仕掛けを説明すると表示する文字はsrc/Eccube/Resource/locale/messages.ja.yamlというファイルに記述されています。

 今回の部分を抜粋すると、

 

front.block.eyecatch.descriptiron: |
  ジェラートとはイタリアン・アイスクリームのことで、一般的なアイスクリームに比べて、乳脂肪分が低くいのが特徴です。
  当店では厳選した旬の果物のおいしさをそのままジェラートに仕上げました。風味が濃厚でありながら、甘さ控えめでヘルシーなキューブジェラートをご堪能ください。
  さらにジェラートの製法を活かした、アイスキャンディ・アイスサンドも販売しております。

 

 こんな感じです。コードの「front.block.eyecatch.descriptiron」の部分がこれに置き換わることが推測できると思います。

 新入荷商品特集の文言を変更する方法は2通り考えられます。

 

・src/Eccube/Resource/locale/messages.ja.yamlの該当箇所を書き換える

・多言語対応などが必要ないなら、messages.ja.yamlを使わない

 

 messages.ja.yamlを使わない場合を紹介します。「新入荷商品特集」コードの該当部分を以下のように変更します。

 

<div class="ec-role">
    <div class="ec-eyecatchRole">
        <div class="ec-eyecatchRole__image">
            <img src="{{ asset('assets/img/top/img_about.jpg') }}" alt="" role="presentation"/>
        </div>
        <div class="ec-eyecatchRole__intro">
            <p class="ec-eyecatchRole__introEnTitle">ここには英語のタイトルが表示されていました</p>
            <p class="ec-eyecatchRole__introTitle">日本語のタイトル</p>
            <p class="ec-eyecatchRole__introDescriptiron">説明文を表示します</p>
            <a class="ec-blockBtn--top" href="{{ url('product_list') }}?category_id=4">{{ 'front.block.eyecatch.view_list'|trans }}</a>
        </div>
    </div>
</div>

 

 このように変更すると下の画像のように表示が変わります。右側の画像が文字数の減少に合わせて大きくなっているので、HTMLやCSSで要微調整ですが、文字が変わっているのがわかると思います。

 

まとめ

 

 このように、EC-CUBE 4の表示の変更はレイアウト、メインコンテンツ、ブロックの仕組みを知ったうえで該当箇所を探す必要があったり、多言語対応の影響で変更するファイルが分かりづらくなっている側面があります。

 Twigの仕組みもHTMLやCSSを勉強しただけでは少し難しいかもしれません。

 

 「これは自分では難しい!」と感じた場合はデザインを変更するテンプレートをオーナーズストアで購入するか、開発会社にカスタマイズを依頼するのも検討してみてください。


 2019年3月23日に開催されました.NETラボ 勉強会 2019年3月のセッションスライドを公開します。

 Azure Reposでソース管理しつつ、Azure Boardsでタスク管理、Azure PipelinesでCI・CD、Azure Test Plansで手動テストを実施。それぞれが密に連携できる・・・と活用すると相乗効果で便利になるツールなので、ぜひお試しください。

 

 .NETラボ4月の勉強会も申し込み開始していますので、そちらもぜひ!

 .NETラボ 勉強会 2019年4月

 

AzureDevOpsの機能解説 from Makoto Nishimura

 前回、DevOpsのお話でAzure DevOpsにちらっと触れたのですが、今回は各機能をしっかり紹介しようと思います。

 今回はプログラミング教育やHyper-Vネットワーク、SQL Serverなどの話があっておすすめです!

 

 申し込みは以下のCompassサイトから。

 

 .NETラボ 勉強会 2019年3月


 Xdebug有効な設定でプラグインをインストールしようとするとタイトルのようにエラーが発生。
 
Maximum function nesting level of ‘1000’ reached, aborting
 
 サイト上ではエラー情報が無かったので、var/log以下のファイルで確認。
 
 php.iniのxdebugの項目の以下の数値を変更して。Webサーバーを再起動。
 
 xdebug.max_nesting_level=10000
 
 前回はmemory_limitで引っかかった。インストールなどの処理時間がかかるケースではmax_execution_timeを増やした方がいいし、アップロードするファイルによってはupload_max_filesizeを増やしておきたい。