ブログ内検索

プログラミング教室
オンライン肥料教室を開催しています

カテゴリー : SOY_CMS/page-5

SOY CMSマニュアルページ作成中

SOY CMSの開発秘話を投稿しました。→SOY CMSの開発秘話
 

SOY CMSのキャッシュモードで表示の高速化

/** Geminiが自動生成した概要 **/
SOY CMSのブログでデータベースをMySQLからSQLiteに変更することで、パフォーマンス向上とデータ管理の簡素化が期待できます。特に共有サーバーなど、MySQLのチューニングが難しい環境では効果的です。変更手順は、まずphpMyAdmin等でMySQLのデータをエクスポートし、SQLite形式に変換します。次に、SOY CMSの設定ファイルでデータベース接続設定をSQLiteに変更し、変換したデータをインポートします。記事データが多い場合、変換とインポートに時間がかかるため、夜間などアクセスが少ない時間帯に行うのがおすすめです。また、SQLiteはMySQLと比べて同時アクセス性能が劣るため、高トラフィックのサイトには不向きです。変更前にデータベースのサイズやアクセス状況を確認し、SQLiteのメリット・デメリットを理解した上で検討することが重要です。

 

SOY CMSのブログで年毎に月別アーカイブのリンクを出力するブログブロックを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログで、長年の運用による月別アーカイブの増加でデザインが崩れる問題を解決するブログブロックが追加されました。従来の縦に長いアーカイブ表示を、年毎に折りたたみ可能な形式で出力します。 新しいブロック`b_block:id="archive_every_year"`は、`cms:id="year"`で年を、`cms:id="archive"`で各月のアーカイブリンクを生成し、年毎に異なるIDを割り当てます。これにより、jQuery等で年毎の折りたたみ表示を実装可能になります。表示例では2018年、2017年、2016年と年ごとに月別アーカイブをまとめて表示しています。新機能はパッケージに含まれ、サイト(https://saitodev.co/soycms/)からダウンロードできます。ただし、古いバージョンからのアップデートでは、ブログページ毎のブロック使用設定でarchive_every_yearを有効にする必要があります。

 

SOYCMSのブログでデータベースをMySQLからSQLiteに変更する

/** Geminiが自動生成した概要 **/
SOY CMSブログで表示速度低下に悩んでいたところ、MySQL版が遅い共有サーバ環境のため、SQLiteに移行するプラグインを開発しました。ベンチマークは1.3倍改善、表示速度は2秒以下に。MySQL→SQLite、SQLite→MySQLの切り替えが可能で内部SEO対策にも有効です。Gravatar連携など一部プラグインは未対応ですが、カスタムフィールド等は対応済み。使用前にバックアップと注意点記事の確認を推奨。ダウンロードはsaitodev.co/soycms/から。この開発を通して、MySQL専用CMSは共有サーバではSEO的に不利になりやすいと感じました。

 

SOY Shopで管理画面のロゴ画像等の設定を設けました

/** Geminiが自動生成した概要 **/
SOY Shopの管理画面のロゴとアプリ名を変更できる設定が追加されました。これは、SOY Shopがネットショップだけでなく、在庫管理、顧客管理、見積り作成など多様な業務アプリとして利用されるケースが増えたためです。管理画面のロゴをカスタマイズすることで、納品時の説明の手間を省き、それぞれの用途に合わせた表示を実現します。従来のネットショップとしての利用に加え、プラグインによる機能拡張で、顧客名簿管理や土壌分析アプリ、パイプハウス施工管理アプリなど、多様な業務システム構築が可能となっています。SOY Shopはネットショップ構築だけでなく、様々なビジネスニーズに対応できる柔軟性を備えたプラットフォームへと進化しています。

 

SOY CMSのラベル一覧でアコーディオンの機能を追加しました

/** Geminiが自動生成した概要 **/
SOY CMSのラベル一覧画面が見やすくなりました!ラベル数が増えると管理画面が煩雑になる課題に対し、ユーザーからの改修提案を元にアコーディオン機能が実装されました。分類ごとにラベルを折り畳めるようになり、UIが大幅に改善。 HTMLモジュールで共通部分を管理する等の対策も紹介しつつ、ユーザー参加型の開発を推進していることが伺えます。GitHubでのプルリクエストや問い合わせフォームからの連絡を歓迎しており、最新版はsaitodev.co/soycms/からダウンロード可能です。

 

SOY CMSのブログの説明でWYSIWYGエディタに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ説明欄がWYSIWYGエディタに対応しました。従来はHTML編集ができなかったブログの説明文を、リッチテキストで記述できるようになりました。 これを実現する「ブログ説明WYSIWYGプラグイン」が新たに開発され、HTMLを許可する`b_block:id="blog_description_raw"`タグも追加されました。このプラグインにより、ブログページの設定画面で、説明文入力欄がWYSIWYGエディタに切り替わり、より表現力豊かなブログ説明を作成できます。 ダウンロードはsaitodev.co/soycms/から可能です。この改良は、以前のカテゴリー詳細表示プラグインへのWYSIWYGエディタ対応に続くものです。

 

SOY Inquiryで同一IPアドレスからの連続した問い合わせをブロックする

/** Geminiが自動生成した概要 **/
SOY Shopでクレジットカード番号の不正取得を試みる「クレジットマスター」への対策が強化されました。クレジットマスターは短時間で大量のカード番号を試し、有効な番号を盗み出す攻撃です。対策として、クレジットカード入力画面にreCAPTCHA v3を導入し、ボットによるアクセスを検知します。また、一定回数以上の決済失敗時にアカウントをロックする機能を追加し、不正アクセスの被害を最小限に抑えます。さらに管理画面へのログインにもreCAPTCHA v3を適用し、セキュリティを向上させました。これらの対策により、クレジットマスターからの攻撃を効果的に防ぎ、安全なECサイト運営を支援します。

 

SOY ShopでSTORES決済(旧Coineyペイジ支払い)モジュールを作成しました

/** Geminiが自動生成した概要 **/
SOY ShopにCoineyペイジ決済モジュールが追加されました。Coineyは、カードリーダー(Coineyターミナル)を用いた決済に加え、Coineyペイジを利用したオンライン決済にも対応しています。モジュール導入により、SOY Shop上でCoineyペイジへの遷移によるクレジットカード決済が可能になります。実店舗とネットショップ両方でCoineyを利用したい場合に最適です。設定方法はモジュール設定画面に記載されています。Coineyは交通系電子マネー決済にも対応しており、導入によりSuica等の電子マネー決済を簡便に導入できます。Coineyペイジは新機能のため、現時点ではテスト環境は未対応ですが、順次対応予定です。

 

SOY Shopでクレジットマスターの対策を強化しました

/** Geminiが自動生成した概要 **/
SOY Shopがクレジットカード情報の不正取得攻撃対策を強化。クレジットカード入力画面への不自然なリダイレクトを検知した場合、該当IPアドレスからのアクセスを遮断する機能を追加。さらに、PAY.JPクレジットモジュールでは、モジュール内でカード情報送信の試行回数を記録し、一定回数を超えるとカート利用を禁止する。これらの対策により、ネットショップが不正利用の踏み台となるリスクを大幅に低減。今後もセキュリティ強化を継続していく。最新版は公式サイトからダウンロード可能。

 

SOY Inquiryで悪質なお問い合わせをブロックする機能を追加しました

/** Geminiが自動生成した概要 **/
SOY Inquiryに、悪質な問い合わせをブロックする機能が追加されました。qq.comドメインからのスパム問い合わせが急増したため、設定画面でカンマ区切りでドメインを指定してブロックする機能を実装。メールアドレス必須設定時に限り、アドレス未入力もブロック対象となります。 この機能追加により迷惑問い合わせは解消されました。ただし、完璧な対策ではないため、将来的には画像認証の改善も検討されます。更新版パッケージはサイト(https://saitodev.co/soycms/soyinquiry)からダウンロード可能です。

 

SOY CMSで記事一覧をカレンダー形式で表示する

/** Geminiが自動生成した概要 **/
SOY CMS用の「記事カレンダー」プラグインが開発されました。ブログ記事をカレンダー形式で表示し、投稿日を視覚的に把握できます。記事タイトルだけでなく、カスタムフィールドの内容も出力可能で、サムネイルプラグインと組み合わせることで画像表示も可能です。これにより、記事一覧をカレンダー上にサムネイル付きで表示するなど、柔軟な表示を実現できます。予約サイト構築など、従来のカレンダー機能とは異なる点が特徴です。サンプルは「毅と亮子のサラメシ」サイトで確認できます。パッケージはsaitodev.co/soycms/からダウンロード可能です。

 

SOY Shopの注文検索でクーポンコードによる検索を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文検索機能が強化され、クーポンコードによる検索が可能になった。顧客管理のニーズに応え、クーポン利用状況の把握が容易になった。さらに、最近のアップデートでは備考・コメントのAND/OR検索も追加され、業務アプリ functionalities / 機能性も向上。紹介記事はないものの、レンタル屋向け顧客管理強化やパイプハウス施工管理アプリ開発と合わせて、ネットショップの枠を超えた業務アプリの可能性を示している。最新版はsaitodev.co/soycms/soyshop/からダウンロード可能。

 

SOY Shopでキャンセルと仮登録の注文の自動削除プラグインを作成してみた

/** Geminiが自動生成した概要 **/
オープンソースのネットショップパッケージは自由度が高い反面、軌道に乗った後に予期せぬ問題に直面することがある。記事ではSOY Shopを例に、月商1000万円を超えるとキャンセルや仮登録注文データの蓄積が処理速度に影響することを指摘。標準機能ではこれらのデータは削除されず残り続けるため、パフォーマンス低下を招く。解決策として、一定期間以前の不要な注文データを自動削除するプラグインを独自開発。管理画面を開く度に自動で削除を実行することで、データ量の増加を抑え、サイトのパフォーマンス維持を図る。この事例は、オープンソース利用における自由と引き換えに、独自対応が必要な場面が存在することを示している。

 

SOY Shopの管理画面で業務に関係ない項目を非表示にして業務改善を行おう

/** Geminiが自動生成した概要 **/
SOY Shop管理画面の業務改善として、BtoC商売に不要な「勤務先名称」などの項目を非表示にする機能が実装されました。これは、特に電話注文時の入力ミスを減らし、オペレーターが入力に迷う状況を解消するためです。不要な項目を非表示にすることで、キーボード操作の時短、確認作業の効率化、新入社員向けマニュアル作成の手間削減など、多岐にわたる業務改善と間接的な経費削減が期待されます。本改修は、業務フローの見直しを促し、よりスムーズなショップ運営に貢献します。最新パッケージは公式サイトからダウンロード可能です。

 

jQuery.uploadプラグインをjQuery3系でも動作するように修正してみた

/** Geminiが自動生成した概要 **/
jQuery.uploadプラグイン (v1.0.9) をjQuery 3.3.1で使用した際、「a.indexOf is not a function」エラーが発生。原因は`iframe.load()`の廃止。jQuery3以降では`.load()`メソッドがオブジェクトに対して使用できなくなっていた。解決策として、`iframe.on('load', function(){})`と書き換え、`load`イベントを`on`メソッドで登録することで動作するようになった。この修正は後にプルリクエストとして採用され、本家コードに反映済み。

 

SOY ShopのPAY.JPクレジットカード支払いモジュールでカード情報非通過化対応をしました

/** Geminiが自動生成した概要 **/
SOY ShopのPAY.JPクレジットカード支払いモジュールがカード情報非通過化に対応しました。2018年8月1日以降、加盟店はカード情報を直接扱うことが禁止され、トークン化が必須となりました。 そのため、モジュールはカード情報をPAY.JPサーバーに送信し、トークンを受け取って処理するように改修されました。既存モジュール利用者は、サイトのセキュリティ維持のため早急にバージョンアップが必要です。最新版はサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。詳細は「SOY CMSのバージョンアップについて」を参照ください。

 

SOY Shopの注文編集で配達時間帯の編集をセレクトボックス形式に変更しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文編集画面で、配送時間帯の入力をテキストエリアからセレクトボックスに変更しました。 従来、ヤマト運輸B2等外部システムとの連携時に、時間帯の書式誤りによる不具合が発生する可能性がありました。今回の変更で、管理画面上で正しいフォーマットを選択式で指定できるようになり、操作ミスを防止、作業効率改善を実現します。 最新版はsaitodev.co/soycms/soyshop/ からダウンロード可能です。

 

SOY CMSを介さずにSOY2DAOを使ってみる2

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOでSQLを実行し、オブジェクトで結果を取得する方法を解説しています。 独自SQLの実行には`executeQuery()`ではなく`executeObjectQuery()`を使用します。`executeObjectQuery()`の第一引数にSQL文、第二引数にDAOクラス名を指定します。戻り値は指定したクラスのオブジェクト、もしくはオブジェクトの配列となります。記事では、`SOY2Sample`クラスと対応するテーブル`soy2_sample`を例に、`id`と`text`を取得するSQLを実行し、結果を`SOY2Sample`オブジェクトの配列として受け取る方法をコード付きで示しています。これにより、データベースから取得したデータをオブジェクトとして扱いやすくなります。

 

SOY CMSを介さずにSOY2DAOを使ってみる1

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにSOY2DAOを単体で利用する方法を紹介。SQLiteのインメモリデータベースを例に、テーブル作成、データ挿入、検索のコードを記述。WEBAPP_DIRの定義、SOY2のinclude、RootDir設定、SOY2DAOConfigによるDSN設定を行い、SOY2DAOでSQLを実行。結果として、挿入したデータが期待通りに取得できることを確認。次回はDAO本来の機能を探る。

 

SOY CMSで記事の見出し自動生成プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ機能拡張として、長文記事の見出し自動生成プラグインが開発されました。記事内のH1〜H3タグを解析し、階層構造を持つ目次をHTMLで生成、任意の場所に表示します。出力されるHTMLは、各見出しへのアンカーリンクを含み、見出しにも対応するID属性が付与されるため、スムーズなページ内ナビゲーションが可能です。このプラグインにより、WordPress等のブログ特化CMSに比べて弱かったSOY CMSのブログ機能が強化され、強力なEC機能との連携による販促ブログとしての活用が期待されます。開発者は、SOY CMSをブログとECを統合したプラットフォームとして捉え、今後もブログ機能の改善を進める方針です。関連情報として、SOY Shopとの連携による有料ブログ運営や、下書き自動保存機能の記事へのリンクが提供されています。

 

SOY Shopの注文詳細の支払い方法の変更をラジオボタン式に変更した

/** Geminiが自動生成した概要 **/
SOY Shopの注文詳細画面で、支払い方法の変更方式がテキストエリア入力からラジオボタン選択に変更されました。従来は支払い方法のラベル表示のみ変更可能で、注文データ上のモジュール自体は変更されませんでした。今回の変更により、ラジオボタンで選択した支払い方法のモジュール自体が変更されるようになりました。これにより、注文検索画面での絞り込み検索が正しく機能するようになります。ただし、手数料は変更時に削除されるため、手動で再設定が必要です。将来的には送料の自動計算機能も追加予定です。変更を含むパッケージはsaitodev.co/soycms/soyshop/からダウンロードできます。

 

SOY2HTMLのIgnoreプラグインを使ってみる

/** Geminiが自動生成した概要 **/
SOY2HTMLのIgnoreプラグインの使い方を解説。index.phpに`SOY2HTMLPlugin::addPlugin("ignore", "IgnorePlugin");`を追加することで、HTMLテンプレート内で`<!-- soy:ignore="***" --><!-- /soy:ignore="***" -->`で囲まれた部分がSOY2HTMLによるレンダリング時に無視される。ブラウザで直接HTMLファイルを開いた場合は、無視された部分がそのまま表示される。これにより、SOY CMSに組み込む前のテンプレートファイルにおいて、デザイナ向けの説明文などを記述し、CMS組み込み時には表示させないといった使い方ができる。

 

SOY CMSを介さずにSOY2HTMLを使ってみる

/** Geminiが自動生成した概要 **/
SOY CMSを使わずにそのテンプレートエンジンであるSOY2HTMLのみを利用する方法を解説。ルートディレクトリにindex.php、webappディレクトリ下に必要なファイルを設置する構成で、index.phpでSOY2ライブラリを読み込み、SOY2HTMLの設定を行う。HTMLファイル(TopPage.html)と対応するPHPファイル(TopPage.class.php)を作成し、soy:idを使った表示内容の変更例を示している。PHPファイルではWebPageクラスを継承し、コンストラクタでHTMLファイルを読み込み、addLabelでsoy:idに対応する値を設定することで、HTMLのsoy:id部分がPHPで指定した値に置き換わって表示される。

 

SOYShopのCSVインポートエクスポートで出力時のチェックを保持するようにした

/** Geminiが自動生成した概要 **/
SOY ShopのCSVインポート/エクスポート機能において、出力項目のチェック状態を保持する機能が追加されました。カスタムフィールドやプラグイン追加でCSVの項目が増え、確認が煩雑になる問題に対し、一度チェックした項目を保存し次回反映することで操作の手間を軽減します。現在試作段階で、カスタムサーチフィールドなど一部プラグインでは未対応ですが、多くの項目チェックの手間を省くことが期待できます。パッケージはsaitodev.co/soycms/soyshop/からダウンロード可能です。

 

SOY2HTMLで条件によって非表示にする - HTMLModel編

/** Geminiが自動生成した概要 **/
SOY2HTMLのHTMLModelは、条件付き出力制御を可能にする。HTMLの一部をHTMLModelで囲み、visible属性に条件式を指定することで、条件を満たした場合のみその部分がレンダリングされる。例として、ブログ記事の「続きを読む」リンクは、追記がある場合のみ表示したい場合に利用できる。HTMLModelは、単に出力の有無だけでなく、外部CSSパスの動的な制御など複雑な処理も可能だが、基本的な使い方はシンプルで、visible属性による表示制御が便利である。HTMLModel自体は何もせず、親クラスであるSOY2HTMLの挙動を理解する必要がある。

 

SOY Shopの注文検索でオーダーカスタムフィールド(日付)の項目を追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文検索機能を拡張し、オーダーカスタムフィールド(日付型)を検索条件に追加できるプラグインを開発しました。管理画面の注文一覧にカスタムフィールドの日付検索欄が追加され、注文詳細に記録した任意の日付情報(例:返答期限)に基づいた検索が可能になります。この機能は「やまどうぐレンタル屋さん」で実装した顧客管理機能強化の一環で、管理画面のみ表示のカスタムフィールドに「○月○日までに返答」といった伝言を記録し、検索で容易に抽出するといった活用が想定されます。プラグインはsaitodev.coからダウンロード可能です。

 

SOY Inquiryでお問い合わせがあった場合にチャットワークに通知したい

/** Geminiが自動生成した概要 **/
SOY Inquiryでお問い合わせがあった際にChatworkに通知する方法を紹介します。まず、フォーム設置ディレクトリ(例:default)にmail.admin.phpを作成します。このファイルに、Chatwork APIトークン、ルームID、お問い合わせ内容をPOSTするcURLコードを記述します。 APIトークンとルームIDは別途取得が必要です。コード内の`$mailBody[0]`にはお問い合わせ本文が入っています。 設置完了後、テスト送信すると、指定のChatworkルームに「【saitodev.co】お問合わせがありました。」に続いてお問い合わせ内容が通知されます。

 

SOY Shopの注文検索で支払い状況等の複数項目選択モードを追加しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文検索機能が強化され、複数項目選択モードが追加されました。従来は注文状況や支払い状況の検索で1つの項目しか選択できませんでしたが、複数選択が可能になり、一度に複数の状況の注文を把握できるようになりました。例えば、「支払い確認済み」と「直接支払い」の注文を同時に検索できます。以前は、それぞれの状況で個別に検索する必要がありましたが、今回のアップデートにより、複数選択モードに切り替えることで、チェックボックス形式で複数の項目を選択できるようになりました。これにより、業務効率の向上が期待されます。対応版パッケージはサイト(https://saitodev.co/soycms/soyshop/)からダウンロード可能です。

 

SOY Shopで注文状態の項目を追加できるプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shopの注文状態に任意の項目を追加できるプラグインが開発されました。やまどうぐレンタル屋さんでのレンタル商品返却管理の課題を解決するために、注文状態と支払状況にフラグを追加する拡張ポイントが実装され、この機能を汎用化したプラグインが作成されました。プラグイン設定画面で注文状態を追加すると、注文詳細画面と注文検索画面に反映されます。これにより、返品待ちや返済済みといった独自のステータス管理が可能になり、注文検索の効率化に繋がります。生鮮食品など返品が発生するショップやレンタル商品を扱うショップで特に役立ちます。プラグインはsaitodev.coからダウンロードできます。

 

SOY CMSのブログブロックの使用を制限して、ブログページの高速化

/** Geminiが自動生成した概要 **/
Googleは常時SSL化をランキング要因の一つとしています。つまり、サイトがHTTPSを使用しているかどうかは、検索結果の順位に影響を与えます。しかし、その影響は軽微であり、他のSEO対策と比べると優先度は低いと言えるでしょう。常時SSL化の主なメリットはセキュリティの向上です。ユーザーの情報を暗号化することで、盗聴や改ざんのリスクを軽減できます。これはユーザーの信頼感向上に繋がり、間接的にSEO効果に繋がる可能性があります。また、常時SSL化によってサイトの表示速度が向上する可能性も指摘されています。Googleはサイトの表示速度もランキング要因としているため、結果的にSEOに良い影響を与える可能性があります。しかし、常時SSL化自体が劇的なSEO効果をもたらすわけではないので、他の重要なSEO対策を疎かにしてまで優先するべきではありません。コンテンツの質やユーザーエクスペリエンスの向上など、他のSEO対策と並行して行うことが重要です。

 

やまどうぐレンタル屋さんで顧客関連管理の機能の強化を行いました

/** Geminiが自動生成した概要 **/
登山用品レンタルの「やまどうぐレンタル屋」は、SOY Shopで運営しつつSalesforceを用いて顧客管理を行っていたが、SOY Shop内で完結させたいという要望からCRM機能強化を実施。オーダーカスタムフィールドや拡張ポイントを活用し、レンタル特有の発送・返却管理、納品書・検品書出力管理、配送状況連携、電話注文対応、実店舗受取管理などをSOY Shop内で実現。プラグインによる拡張のみでSalesforce並みの機能を実現し、本体のカスタマイズは行わずバージョンアップへの影響を排除。管理画面の表示速度最適化も実施。この機能強化は拡張ポイントを活用したプラグイン作成で再現可能。

 

SOY CMSの記事のCSVエクスポートでラベルで絞り込みを追加しました

/** Geminiが自動生成した概要 **/
SOY CMSの記事CSVエクスポート機能に、新たに「ラベルでの絞り込み」機能が追加されました。これにより、全記事の出力ではなく、特定のラベルが付与された必要な記事のみをCSV形式でエクスポートすることが可能になり、データ管理の効率が大幅に向上します。この最新機能を含むパッケージは、公式サイト(https://saitodev.co/soycms/)からダウンロードしてご利用いただけます。記事の選別が容易になり、より柔軟な運用が実現します。

 

SOY CMSの記事投稿時の画像のアップロードでファイルマネージャをメインで使用する

/** Geminiが自動生成した概要 **/
SOY CMSの記事投稿画面で画像アップロード時にファイルマネージャを優先利用するための設定方法を紹介しています。サイト設定で「記事投稿時のおイメージの挿入設定」を行い、希望のアップロード方法(ファイルマネージャ、ドラッグ&ドロップ等)にチェックを入れます。これにより、記事投稿画面の画像挿入時に設定した項目がデフォルトで選択された状態になります。記事では、ファイルマネージャを優先利用するための設定例を画像付きで解説し、より使いやすくする方法を提案しています。関連記事として、SOY CMSで使用しているelFinderでjsファイルのアップロードを許可する方法を紹介する記事へのリンクも掲載されています。

 

SOY ShopでTrackingmore連携プラグインでwebhookに対応しました

/** Geminiが自動生成した概要 **/
SOY Shopで国際荷物追跡サービス「Trackingmore」と連携するプラグインを開発し、「webhook」機能を追加しました。webhookでは、配送業者が発送を開始するとTrackingmoreからSOY Shopに通知が届きます。これにより、リアルタイム追跡の手間を省きつつ、SOY Shopの注文状態や発送メールの自動更新が可能になります。この連携により、出荷予定日前に代行業者から発送情報を受け取れなくても、配送状況を監視し、集荷や発送が確認され次第、発送済みメールを自動送信できます。これにより、確認業務が大幅に削減されます。リアルタイム追跡も併用することで、変更情報の確度が向上します。

 

SOY ShopでTrackingmore連携を試作中

/** Geminiが自動生成した概要 **/
SOY Shopと荷物の追跡サービスTrackingmoreを連携するプラグインが作成されました。このプラグインにより、代行倉庫サービスを利用して出荷された商品の発送状況をリアルタイムで確認できるようになります。ただし、現時点では連続でAPIを叩く制限があるため、トラッキング件数の制限や実行間隔の調整が必要です。今後、Webhookを使用した配送状況確認機能が追加される予定です。この機能により、サーバのリソース占有が軽減されることが期待されています。利用に際しては、課題点に留意してください。

 

SOY CMSで一つのページで複数のブログページのカテゴリ一覧を出力してみる

/** Geminiが自動生成した概要 **/
SOY CMSで複数のブログページを作成した場合、各ページのカテゴリ一覧を他のページで出力するモジュール「cms:module="common.multi_blog_category"」が追加されました。使用方法は、モジュール内に「b_block:id="category_on_{ブログページのURI}"」と記述します。これにより、ブログページ毎のカテゴリ一覧を出力できます。例えば、ブログ1ページ(URI:blog)とブログ2ページ(URI:sub/blog)のカテゴリ一覧を標準ページに出力するには、「b_block:id="category_on_blog"」と「b_block:id="category_on_sub_blog"」を使用します。このモジュールにより、標準ページから他のブログページのカテゴリ一覧にアクセスし、各ブログのカテゴリページに移動できるようになります。

 

SOY Shop内でパイプハウスの施工管理アプリを開発しました

/** Geminiが自動生成した概要 **/
SOY Shopの在庫管理機能と管理画面からの注文登録機能を拡張し、パイプハウスの見積書作成アプリを開発。従来のエクセル管理では、膨大な部品の仕入れ値確認に時間と手間がかかっていたが、新アプリでは商品登録時に仕入れ値を記録することで、次回以降の見積書作成時の再確認作業を大幅に削減。商品名検索によるカート追加や、検索結果にない場合の即時商品登録機能も実装。さらに、見積書の商品一覧の並び替え機能、注文内容の自動バックアップ機能も追加することで、作業効率と正確性を向上。これらの機能はパイプハウス以外にも応用可能で、既存のネットショップ運営における経費削減にも貢献する。開発したパッケージは専用サイトからダウンロード可能。

 

SOY Shopで返金管理プラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY Shop向け返金管理プラグインが開発されました。注文詳細画面から返金・増額の振込額や銀行口座情報を登録可能になり、管理画面の注文一覧検索で返金関連情報による絞り込み検索もできるようになりました。 プラグインはsaitodev.coからダウンロードできます。このプラグインは、注文毎のキャンセルや変更に伴う返金・増額を記録し、処理状況を追跡する機能を提供します。注文状態に「返金処理待ち」ステータスも追加され、より詳細な注文管理が可能になります。 これは、既存の注文検索フォーム拡張ポイントと注文状態・支払状況フラグ追加拡張ポイントを利用して実現されています。

 

SOY CMSで記事のCSVエクスポート・インポートを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSに待望の記事CSVエクスポート・インポート機能(試作版)が実装されました。これまで記事の自由な概念により未実装でしたが、今回、ラベルに関わらず全ての記事を出力する機能が開発されました。インポート範囲や詳細機能は今後、利用者の用途を元に検討されていく予定です。この新機能により、SOY CMSユーザーの記事管理効率が大幅に向上することが期待されます。対応パッケージは公式サイトからダウンロード可能です。

 

SOY Shopの注文詳細の編集で代金合計に含む項目を追加できるようにしました

/** Geminiが自動生成した概要 **/
SOY Shopの注文詳細編集機能に、代金合計に含めるかどうかのチェックボックスを追加しました。これにより、内税のように明細には表示するものの、合計額には含まない項目を指定できます。ただし、注文詳細表示ではどの項目が合計額に含まれているかわかりにくいという課題があります。今後、わかりやすい表示方法の検討が進められます。

 

SOY2HTMLでリンクを出力する - HTMLLink編

/** Geminiが自動生成した概要 **/
SOY2HTMLのHTMLLinkクラスは、PHPでリンクを生成するためのクラスです。`text`属性でリンクテキストを、`link`属性でhref値を設定します。`SOY2PageController::createLink()`を使うと、管理画面のURLを簡単に生成できます。HTMLには`<a soy:id="detail_link"></a>`と記述します。HTMLActionLinkクラスはHTMLLinkを継承し、URLにトークンを付与することでセキュリティを強化します。`soy2_check_token`と併用し、URL直打ちを防止します。

 

SOY2HTMLで繰り返し表示 - HTMLList編

/** Geminiが自動生成した概要 **/
SOY CMSのブロック内で繰り返し表示される記事に、一定の間隔で任意の文字列を表示するには、下記の手順に従います。1. HTMLListクラスを継承したPHPクラスを作成し、populateItemメソッドで表示したい内容をHTMLタグで記述します。2. HTMLファイルで、populateItemメソッドで作成したHTMLタグをsoy:idを使用して囲みます。3. 表示する間隔をsoy:id="loop"に指定します。4. 表示する文字列をsoy:id="index"に指定します。これで、指定した間隔で任意の文字列が繰り返し表示されます。

 

SOY2HTMLでセレクトボックスを設置する - HTMLSelect編

/** Geminiが自動生成した概要 **/
SOY2HTMLのHTMLSelectクラスは、HTMLのセレクトボックスを生成する。`$this->addSelect()`で利用し、オプションは第二引数の配列で指定する。 `options`キーに配列を渡すとoptionタグが生成され、連想配列でない場合はvalue属性が設定されない。`indexOrder`をtrueにすると、数値インデックスがvalue属性となる。`selected`キーで選択状態を指定、複数選択には配列で渡す。多重配列でoptgroupも作成可能。`each`キーで各optionタグに属性を追加できる。

 

SOY2HTMLでラジオボタンやチェックボックスを設置する - HTMLCheckBox編

/** Geminiが自動生成した概要 **/
SOY2HTMLでラジオボタンとチェックボックスを設置する方法を解説。HTMLCheckBoxクラスを用い、PHP側で`addCheckBox`メソッドを使い、HTML側で`<input type="(radio|checkbox)" soy:id="id名">`を記述する。`addCheckBox`の第二引数配列には、name, value, selected(チェック状態), label(ラベルテキスト)を指定する。ラジオボタンはnameを共通にすることでグループ化される。チェックボックスは単独で動作する。HTMLCheckBoxクラスはHTMLInputを継承し、labelタグを自動生成する機能を持つ。`isBoolean`をtrueに設定すると、値が未送信の場合に備えてhiddenで値0を送信する。

 

SOY2HTMLでテキストエリアを設置する - HTMLTextArea編

/** Geminiが自動生成した概要 **/
HTMLTextAreaクラスは、テキストエリア要素を生成します。name属性とテキストの内容を指定し、その内容をinnerTextとしてレンダリングします。getTextメソッドはテキストの内容を取得し、オブジェクトを取得するオブジェクトメソッドはHTMLエスケープされたテキストを改行で囲んで返します。

 

SOY2HTMLでテキストフォームを設置する - HTMLInput編

/** Geminiが自動生成した概要 **/
SOY2HTMLを使用してテキストフォームを作成する方法を説明します。`HTMLInput`クラスを利用して、フォームにテキストフォームを追加できます。`addInput()`メソッドを使用して、フォーム要素のnameとvalue属性を設定します。これにより、PHPの記述混入を回避しつつ、デザインを崩さずにHTMLファイルを直接表示できます。テキストフォームの実際のコードは、`HTMLFormElement`クラスを継承した`HTMLInput`クラスで定義されています。

 

SOY Shopの各種プラグインの設定を保存する方法

/** Geminiが自動生成した概要 **/
SOY Shopのプラグイン設定を保存するには、SOYShop_DataSetsクラスのputメソッドを使用します。キーバリューストアのようにデータを保存でき、配列もシリアライズして文字列として保存できます。データの取得はgetメソッドで行い、指定したキーに対応する値を取り出します。第二引数で値がなかった場合の代替値を指定することも可能です。

 

SOY2HTMLでセキュアなフォームを設置する - HTMLForm編

/** Geminiが自動生成した概要 **/
HTMLFormクラスは、HTMLのフォーム要素を生成するためのコンポーネントです。formタグを生成し、メソッド(デフォルトはPOST)やアクション、ターゲットなどの属性を設定できます。POSTメソッドの場合、CSRF対策としてsoy2_tokenという隠しフィールドを自動的に追加します。アクションが指定されていない場合は、現在のリクエストURIがアクションとして設定されます。また、JavaScriptのonSubmitイベントを設定することも可能です。disabled属性の設定も可能です。

 

プラグイン毎に詳細画面を持たせる拡張ポイントsoyshop.config.php

/** Geminiが自動生成した概要 **/
SOY Shopプラグインの拡張ポイントsoyshop.config.phpは、プラグイン毎に詳細設定画面を作成するための機能です。プラグインディレクトリにsoyshop.config.phpを設置し、インターフェース`SOYShopConfigPageBase`を実装することで、`http://ドメイン/CMSインストールディレクトリ/soyshop/index.php/Config/Detail?plugin=プラグインID` でアクセス可能な設定ページが生成されます。主要なメソッドは`getConfigPage()`(設定画面のHTMLを出力)、`getConfigPageTitle()`(設定画面のタイトル)、`redirect()`(リダイレクト)です。`getConfigPage()`では、SOY2HTMLを用いてHTMLを生成するのが一般的です。PAY.JPクレジットカード支払いモジュールでは、`PayJpConfigPage`クラスとテンプレートファイルを使用して設定画面を構築しています。`redirect()`メソッドは、設定更新後などにURLパラメータを追加してリダイレクトする際に使用します。

 

プラグイン毎の詳細画面へのリンクの拡張ポイントsoyshop.info.php

/** Geminiが自動生成した概要 **/
soyshop.admin.top.php拡張ポイントは、SOY Shop管理画面の新着情報欄にカスタム項目を追加できます。`getLink()`メソッドでリンクURL、`getTitle()`でタイトル、`getContent()`で本文、`getIcon()`でアイコンURLを返却することで項目が生成されます。`getLink()`では`SOY2PageController::createLink()`を使うことで環境に依存しないURLを作成可能です。例えば、特定の注文一覧ページへのリンクを追加する場合、`getLink()`で`SOY2PageController::createLink("Order.List?search[order_status]=5")`のように指定することで、注文ステータスが「発送済み」の注文一覧ページへのリンクを生成できます。


Powered by SOY CMS  ↑トップへ