ブログ内検索:

プログラミング教室
最近興味があることや肥料教室についてのメルマガを配信しています
検索キーワード:「サイトID」
 

SOY CMSで$_SERVER["PATH_INFO"]の補完を追加しました

/** Geminiが自動生成した概要 **/
SOY CMS 3.14.0以降では、エックスサーバー等のサーバーで発生するPATH_INFOの自動付与による問題を解消しました。従来は「https://example.com/hoge」にアクセスすると「https://example.com/hoge?pathinfo=hoge」にリダイレクトされていましたが、最新版では内部処理でPATH_INFOを補完するため、リダイレクト無しで動作します。 自動付与機能を無効にする場合は、サイトの.htaccessファイルの末尾を以下のように変更してください。 **変更前:** ``` RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] ``` **変更後:** ``` #RewriteRule ^(.*)$ index.php?pathinfo=$1&%{QUERY_STRING} [L] RewriteRule ^(.*)$ index.php/$1 [L] ```

 

SOY CMSでCMSタグチェックプラグインを作成しました

/** Geminiが自動生成した概要 **/
SOY CMSのテンプレート編集で発生する、CMSタグの閉じタグ忘れによるエラーを防止するプラグイン「CMSタグチェックプラグイン」の紹介記事です。 記事では、CMSタグの閉じタグ忘れが原因で発生するエラーとその修正方法、タグが増えることによる確認作業の煩雑さを解説し、このプラグインによってタグの記述ミスをテンプレート更新時に検知できることを説明しています。 プラグインの導入により、製作時間の短縮などのメリットがあると期待されます。

 

【SEO対策】Bootstrapを利用しつつ、Core Web Vitalsのスコアを改善する

/** Geminiが自動生成した概要 **/
この記事は、Bootstrapを用いてWebサイトのCore Web Vitalsスコアを向上させる方法を解説しています。具体的には、BootstrapのボタンコンポーネントのCSSのみを抽出し、ページHTMLにインライン挿入する方法を紹介しています。 手順としては、Bootstrapのソースファイルから必要なSCSSファイルをサイトディレクトリに配置し、SOY CMS側でSCSSコンパイルの設定を行います。これにより、ボタン用のCSSがページに直接記述され、外部ファイルの読み込みが不要になります。 さらに、生成されたCSSを圧縮してインライン化することで、ページ表示速度の向上を目指します。ただし、毎回SCSSをコンパイルするのは非効率なので、CSSやページ全体のキャッシュ化が推奨されています。

 

SOY CMSでSCSSコンパイラを実装しました

/** Geminiが自動生成した概要 **/
SOY CMSにSCSSコンパイラを実装する方法を解説した記事です。scssphpを用い、ページ出力時にSCSSファイルをコンパイルして表示するモジュールを作成します。具体的な手順としては、scssファイルを配置し、モジュールにコンパイル処理を記述します。記事ではサンプルコードも紹介されており、ダウンロード可能なパッケージも提供されています。@importの記述に誤りがなくstyle.cssが空の場合、pscssに実行権限を与える必要がある場合があります。

 

SOY CMSのブログ記事JSON出力プラグインで記事一覧の出力に必要な値を取得できるようにしました

/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事JSON出力プラグインがアップデートされ、記事一覧の出力が容易になりました。 今回のアップデートにより、JSON出力に以下の値を含めることが可能になりました。 * 記事のパーマネントリンク * 本文の一部または冒頭数文字 * サムネイル画像のパス * カスタムフィールドの値 これらの値はGETパラメータで出力の有無を指定できます。これにより、JavaScriptでJSONを取得し、記事一覧を動的に生成することが可能になります。 例えば、記事のURL、本文の冒頭50文字、サムネイル画像のパスを含めたJSONを取得する場合は、以下のようなURLでアクセスします。 ``` https://example/site/1.json?limit=1&content=50&is_url=1&thumbnail ``` アップデート版のプラグインは、以下のサイトからダウンロードできます。 https://saitodev.co/soycms/

 

SOY CMSでプラグインの状態チェックを最適化して表示速度を改善

/** Geminiが自動生成した概要 **/
SOY CMSの表示速度改善についての記事です。 今回はプラグインの有効・無効の判定処理を最適化しました。従来は全プラグインの状態を都度ファイルシステムから読み込んでいましたが、キャッシュ化して参照するように変更。これにより、ファイルシステムへのアクセス回数を減らし、不要なプラグインのクラスファイル読み込みを削減することで表示速度を向上させています。 同様の速度改善は、設定情報のデータベース参照回数を減らしたSOY Shopでも行われています。

 

SOY CMSで一つ深い階層にサイトを作成する

/** Geminiが自動生成した概要 **/
SOY CMSで、サイトを一つ深い階層に作成する方法を解説します。 まず、サイトIDを「hoge」として、/var/www/html/hogeにサイトを作成します。次に、/var/www/html/hoge/huga のように、hugaディレクトリを作成し、必要なファイルを配置します。 データベースのSiteテーブルを開き、サイトIDが「hoge」のレコードのurlとpathを、それぞれ `http://example.com/hoge/huga/` と `/var/www/html/hoge/huga/` に変更します。 最後に、/var/www/html/hoge/huga/.htaccess の RewriteBase を `/hoge/huga` に変更します。 稼働中のサイトのURLを変更する場合は、上記の手順に加えて、SOY CMS管理画面でサイトURLを変更する必要があります。

 

SOY CMSのモジュールで公開期限付きのcms:ignoreのようなものを作成してみる

/** Geminiが自動生成した概要 **/
SOY CMSで公開期限付きcms:ignoreを実現するモジュールの作成方法を解説。指定期間内のみコンテンツを表示する機能で、`/ドキュメントルート/サイトID/.module/parts/ignore.php`にPHPコードを記述する。コードでは`mktime`と`time`関数で期間を指定し、`addModel`で表示条件を設定。テンプレートには`<!-- cms:module="parts.ignore" -->`等を記述して使用する。SOY Shopでは`soycms_ignore`を`soyshop_ignore`に、`cms:module`を`shop:module`に変更すれば利用可能。

 

SOY CMS / Shopで別サイトのモジュールを読み込む

/** Geminiが自動生成した概要 **/
SOY CMS/Shopで、別サイトのHTMLモジュールを読み込む新機能が追加されました。サイトIDをプレフィックスとして`{siteId}.moduleName`のように指定することで、HTMLのみで構成されたモジュールを別サイトから呼び出せます。例えば、`{otherSite}.html.sample`と記述すれば、siteIdが"otherSite"のサイトにある"html.sample"モジュールが表示されます。ただし、SOY CMSとSOY Shop間でのモジュールの相互利用は不可で、データベースを参照するモジュールも使用できません。この機能は、最新版のSOY CMS/Shopパッケージで利用可能です。

 

【SEO対策】最終産物のHTMLのキャッシュで高速化

/** Geminiが自動生成した概要 **/
SQLiteを採用するSOY CMSでサイト表示を高速化するため、最終生成HTMLのキャッシュ化機能を導入した。データベースやファイル読み込みを省略することでPageSpeed Insightsのスコアが大幅に向上。この機能はHTMLキャッシュプラグインをインストール後、index.php内のexecute_site()をexecute_site_static_cache()に変更することで有効になる。ただし、カート内容の表示など動的なコンテンツはキャッシュ化できないため、リッチなサイト構成との両立は難しい。高速化とSEO対策には見栄えよりも内容重視の割り切りが必要となる。SOY Shopでも同様のキャッシュプラグインが開発されている。

 

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

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

 

サイトの表示が遅くなってきたのでSQLiteのVACUUMを試す

/** Geminiが自動生成した概要 **/
さくらインターネットの最安値VPS上でSQLite版SOY CMSを運用するブログ運営者が、サイト表示速度の低下に対処するためSQLiteのVACUUMを試した。データベースファイルが肥大化し表示が遅くなったため、サーバ移行も検討していたが、SQLiteのVACUUMコマンドで一時データの削除を試みた。実行手順を掲載し、ファイルサイズが約0.3MB減少した結果を報告。速度改善効果への期待を示し、今後はauto_vacuum機能の利用も検討しているが、データベース作成時に設定が必要なため、現状では利用できないという結論に至った。

 

SOY CMSのサムネイルプラグインでpng形式のファイルに対応しました

/** Geminiが自動生成した概要 **/
SOY CMSのサムネイルプラグインがアップデートされ、複数の不具合修正と機能強化が行われました。主な変更点は、サイトIDとドキュメントルート内の文字列が重複した場合のリサイズ不具合の修正、サムネイル未登録時のアップロードウィンドウ表示不具合の修正、PNG/GIF形式の画像対応、`cms:id="thumbnail_path_text"`の追加です。さらに、サーバーにjpegoptimがインストールされている場合は、トリミング時にJPEGのロスレス圧縮が適用されるようになりました。これらの更新はGitHubで公開されているパッケージに反映されています。

 

SOY Shopで顧客毎にファイルを保存できる様にしました

/** Geminiが自動生成した概要 **/
SOY Shop用のストレージプラグインにより、顧客ごとにPDFやZIPなどのファイルを保存・管理できるようになりました。顧客専用ページでファイルのアップロードが可能で、ダウンロードURLの発行にも対応。管理画面からはelFinderを用いてファイルマネージャ形式でアクセスできます。ファイル保存パスは`/サイトID/files/user/顧客ID`です。アップロード可能なファイル形式の仕様は未確定ですが、プラグインは利用可能です。パッケージはGitHub(https://github.com/inunosinsi/soycms/tree/master/package)で公開されています。

 

SOY CMSのブログでプレビュー用のページを作成してみる

/** Geminiが自動生成した概要 **/
SOY CMSのブログにはプレビュー機能がないが、記事を任意の場所に貼り付けられる機能を利用してプレビューページを作成できる。まず、プレビュー用のページ(例:/preview)を作成し、「プレビュー」ラベルを設定、Basic認証で保護する。記事投稿時に「プレビュー」ラベルのみを選択すれば、プレビューページにのみ記事が表示される。確認後、「ブログ」ラベルを追加すれば本番公開となる。実際には、ダイナミック編集で非公開記事も確認できるため、プレビュー機能の代替として活用可能。

 

SOY ShopのURLの設定方法

/** Geminiが自動生成した概要 **/
SOY ShopのサイトURLは、`/CMSインストールディレクトリ/soyshop/webapp/conf/shop/`にある`サイトID.conf.php`(例:soy.conf.php)内の`soy_SOYSHOP_SITE_URL`で定義されています。 例えば`http://localhost/soy/`を`http://example.com/`に変更すれば、公開側のURLが変わります。サイトディレクトリは`soy_SOYSHOP_SITE_DIRECTORY`で変更可能です。ただし、ルート直下以外の運用は動作保証外のため、変更時はconf.phpのバックアップ必須です。

 

ブラウザのキャッシュの設定

/** Geminiが自動生成した概要 **/
SOY CMSのキャッシュモードを利用することで表示速度を大幅に向上させることができます。キャッシュモードには、「出力キャッシュ」「ブロックキャッシュ」「データキャッシュ」の3種類があります。出力キャッシュはページ全体をキャッシュし、ブロックキャッシュはページの一部のブロックをキャッシュ、データキャッシュはデータベースへのアクセス結果をキャッシュします。それぞれのキャッシュモードは管理画面から簡単に設定でき、サイトのアクセス状況や更新頻度に合わせて最適な設定を選択することで、サーバー負荷を軽減し、表示速度を向上させることができます。特に、頻繁に更新されない静的なページやアクセス数の多いページでは、出力キャッシュが効果的です。キャッシュのクリアも管理画面から簡単に行えます。

 

インストーラーで再インストール後にサイトを復元

/** Geminiが自動生成した概要 **/
SOY CMSのインストーラによる再インストール後、サイトを復元する方法です。 まず、再インストール前にサイトのソースコードからサイトID(例: /site/files/ の"site"部分)を確認しておきます。 次に、インストーラで再インストールする際、インストール先ディレクトリを既存のものと異なる名前に変更します。インストール完了後、初期管理者を作成し、「サイトの復元」ではなく「サイトの作成」を選択します。 ここで、事前に確認しておいたサイトIDを入力してサイトを作成します。サイトIDが正しければ、既存のファイル群が使用され、サイトが復元されます。 最後に、元の管理画面URL(例: /cms/admin)で再インストールを行い、以前のデータベースに接続できないようにすることでセキュリティ対策を行います。データベース接続設定ファイル(例: mysql.db)を復旧すれば、元のアカウントも復元可能です。

 

CMSに不正にログインした後、何をする?

/** Geminiが自動生成した概要 **/
SOY CMSに不正ログイン後、ファイルマネージャからのPHPアップロードは不可だが、フロントコントローラ(index.php)に悪意あるPHPコードを埋め込み可能。これにより、サイト閲覧時に勝手にメール送信などの踏み台攻撃が可能になる。対策はindex.phpの書き込み権限を外すこと。SOY ShopのテンプレートやPHPモジュールも悪用されうる。

 

SOY CMSのブロックで記事のランダム表示

/** Geminiが自動生成した概要 **/
SOY CMSのブロックで記事をランダム表示するスクリプトモジュールブロックのコードが紹介されています。指定したラベルの記事をランダムに並び替え、指定件数分出力します。 `/site(サイトID)/script/soycms_random.php` にPHPコードを記述し、テンプレートで `cms:label` にラベルID、`cms:count` に取得件数を指定することで利用できます。コードはフォーラムにもアップロードされています。記事の取得件数を指定しない場合は、該当ラベルのすべての記事を取得しランダムに表示します。

 

SOY Inquiryでコンバージョンタグを利用する

/** Geminiが自動生成した概要 **/
SOY Inquiryでコンバージョンタグを利用する方法を解説します。URLパラメータ`sample_conv`で渡された値をセッションに保存し、お問い合わせ完了画面でhiddenフィールドに表示、メール本文にも含めることができます。 `index.php`にセッション保存処理を追加し、新規テンプレート`soy`の`complete.php`にhiddenフィールド出力処理を追加します。`mail.admin.php`と`mail.user.php`にコンバージョンタグに関する表記を追加することで、管理者・ユーザー向けメールにも表示可能です。完了画面表示前にメールが送信されるため、完了画面で値を利用しない場合はセッションを破棄する処理のコメントアウトを外してください。

 

SOY CMSの常時SSL化で対応したこと

/** Geminiが自動生成した概要 **/
さくらインターネットの共有サーバーでSOY CMSを常時SSL化するために実施した手順を紹介。画像パスの修正、SNI SSL対応、リダイレクト設定、サイトURLの変更、サイトマップ作成とSearch Console登録を行った。画像パスは絶対パスに変更し、SNI SSLのためにSOY CMS本体のコードを修正。リダイレクトはindex.phpに記述、サイトURLもhttpsに変更した。最後にサイトマップを作成しSearch Consoleへ登録。SOY Shopの場合は別途対応が必要。

 

SOY CMSのブログで記事の下書きの自動保存機能

/** Geminiが自動生成した概要 **/
SOY CMSのブログ記事作成中に、回線落ちなどで書きかけの記事が消えることを防ぐため、自動保存機能が追加された。記事投稿画面を開いて30秒後に自動でバックアップが作成され、画面上部に通知が表示される。バックアップファイルはサイトIDとログインIDに紐づけて保存されるため、他サイトや別アカウントでは復元されない。記事保存または更新ボタンを押すとバックアップファイルは削除される。この機能により、誤操作による以前のバックアップの復元を防ぐ。ダウンロードはSOY CMSフォーラムから可能。

 

検索フォームと検索結果ページを作ってみた3

/** Geminiが自動生成した概要 **/
SOY CMSで検索機能を実装する方法を解説。`/site(サイトID)/script/soycms_search.php`に検索スクリプトを記述。SQLで記事タイトル、本文、追記フィールドを検索し、公開期間内の記事を抽出。結果はEntryオブジェクトに変換後、配列`$soycms_search_result`に格納。テンプレートには`<form method="get" action="/search">`で検索フォームを設置し、クエリパラメータ`q`で検索文字列を受け取るようにする。`$dao->getObject($row)`で検索結果をEntryオブジェクトに変換することで、テンプレートに記述した`<!-- block:id="result" -->`で表示可能になる。

 

検索フォームと検索結果ページを作ってみた2

/** Geminiが自動生成した概要 **/
記事「検索フォームと検索結果ページを作ってみた3」では、検索結果ページに記事一覧を表示する具体的な実装方法を解説しています。 前記事で準備した`entry_search`関数に検索ロジックを記述します。まず、`soycms_search.php`にデータベースへの接続設定を追加し、クエリ文字列から検索キーワードを取得します。取得したキーワードを元にデータベースを検索し、結果を配列に格納します。 記事一覧の表示には、取得した配列をループ処理で展開し、各記事のタイトルとURLを表示します。記事タイトルはリンクとして設定し、クリックすると詳細ページへ遷移するようにします。また、検索結果が0件の場合には「該当する記事は見つかりませんでした」と表示する処理も追加します。 これらの処理により、ユーザーが入力したキーワードに合致する記事一覧が検索結果ページに表示されるようになります。

おすすめの検索キーワード
おすすめの記事

Powered by SOY CMS   ↑トップへ