plugin/soycms_same_category_block_Randomブロックで表示エラー 投稿する
投稿者:kamo
投稿日時:2022-07-05 06:12:03
お世話になっております。たびたびで申し訳ございませんが
バージョンアップが原因か、サーバー移行が原因か?不明ですが、
Xサーバーの新サーバー移行申請をしたサイトで、以下エラーが表示されます。
7/1にCMS3.2.31sqliteにアップしてTOPページは正常だったので記事のリンク先まで未確認でしたが、昨日リンク先をクリックしたら、以下エラーとなりました。
記事ラベル詳細でURLを個別指定(半角英字)したリンクについてもリンク先にエラー表示が表示されます。
ラベルブロック、プラグインブロックでページ埋め込みした部分で表示エラーがあるのですが、ブログリンクブロックのリンクは機能しています。サーバー移行が原因でしょうか?
Fatal error: Uncaught Error: Call to undefined method PluginBlockUtil::getBlogPageByPageId() in /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php:92 Stack trace: #0 /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php(44): SOYCMSSameCategoryBlockRandomPlugin->checkIsBlogEntryPage(21) #1 /home/user/ドメイン.com/public_html/sycms/common/site_include/block/PluginBlockComponent/block.php(44): SOYCMSSameCategoryBlockRandomPlugin->onLoad(Array) #2 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSPage.class.php(49): PluginBlockComponent->getViewPage(Object(CMSBlogPage)) #3 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSBlogPage.class.php(706): CMSPage->main() #4 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSPageController.class.php(109): CMSBlogPage->main() #5 /home/ofis- in この場所に余計なパス名がある/home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php on line 92
3.2.35sqliteにアップすると解決しますでしょうか?
毎度お手数をお掛けしますがアドバイスいただけますでしょうか。
よろしくお願いいたします。
バージョンアップが原因か、サーバー移行が原因か?不明ですが、
Xサーバーの新サーバー移行申請をしたサイトで、以下エラーが表示されます。
7/1にCMS3.2.31sqliteにアップしてTOPページは正常だったので記事のリンク先まで未確認でしたが、昨日リンク先をクリックしたら、以下エラーとなりました。
記事ラベル詳細でURLを個別指定(半角英字)したリンクについてもリンク先にエラー表示が表示されます。
ラベルブロック、プラグインブロックでページ埋め込みした部分で表示エラーがあるのですが、ブログリンクブロックのリンクは機能しています。サーバー移行が原因でしょうか?
Fatal error: Uncaught Error: Call to undefined method PluginBlockUtil::getBlogPageByPageId() in /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php:92 Stack trace: #0 /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php(44): SOYCMSSameCategoryBlockRandomPlugin->checkIsBlogEntryPage(21) #1 /home/user/ドメイン.com/public_html/sycms/common/site_include/block/PluginBlockComponent/block.php(44): SOYCMSSameCategoryBlockRandomPlugin->onLoad(Array) #2 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSPage.class.php(49): PluginBlockComponent->getViewPage(Object(CMSBlogPage)) #3 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSBlogPage.class.php(706): CMSPage->main() #4 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSPageController.class.php(109): CMSBlogPage->main() #5 /home/ofis- in この場所に余計なパス名がある/home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php on line 92
3.2.35sqliteにアップすると解決しますでしょうか?
毎度お手数をお掛けしますがアドバイスいただけますでしょうか。
よろしくお願いいたします。
投稿者:齋藤毅
投稿日時:2022-07-05 06:32:33
先に上記の返答ですが、上記バージョンにバージョンアップしても解消されません。3.2.35sqliteにアップすると解決しますでしょうか?
soycms_same_category_block_Randomのプラグインが手元になるので、予想になるのですが、
/home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php:92
上記の箇所に
$blogPage = PluginBlockUtil::getBlogPageByPageId($pageId);
というコートがあると思います。
このコードを、
$blogPage = soycms_get_blog_page_object($pageId);
に変更すればエラーは解消されるはずです。
投稿者:kamo
投稿日時:2022-07-05 06:48:25
ありがとうございます。コードですが上記が無いようなので長くなりますが全部転記します。
<?php
SOYCMSSameCategoryBlockRandomPlugin::registerPlugin();
class SOYCMSSameCategoryBlockRandomPlugin{
const PLUGIN_ID = "same_category_block_Random";
function getId(){
return self::PLUGIN_ID;
}
/**
* 初期化
*/
function init(){
CMSPlugin::addPluginMenu($this->getId(),array(
"name"=>"SOY CMS同一カテゴリーの記事一覧ブロックRandomプラグイン",
"description"=>"プラグインブロックで同一カテゴリの記事一覧をRandom表示します。記事詳細ページでのみ動作します。",
"author"=>"****",
"url"=>"******",
"mail"=>"*******",
"version"=>"0.5"
));
if(CMSPlugin::activeCheck($this->getId())){
CMSPlugin::addPluginConfigPage($this->getId(),array(
$this,"config_page"
));
CMSPlugin::setEvent('onPluginBlockLoad',self::PLUGIN_ID, array($this, "onLoad"));
CMSPlugin::setEvent('onPluginBlockAdminReturnPluginId',self::PLUGIN_ID, array($this, "returnPluginId"));
}
}
function onLoad(){
$pageId = (int)$_SERVER["SOYCMS_PAGE_ID"];
//検索結果ブロックプラグインのUTILクラスを利用する
SOY2::import("site_include.plugin.soycms_search_block.util.PluginBlockUtil");
//詳細ページでない場合は空の配列を返す
if(!self::checkIsBlogEntryPage($pageId)) return array();
//記事詳細からカテゴリの設定を習得する
$labelIds = self::getLabelIds($pageId);
if(is_null($labelIds)) return array();
//ラベルIDを取得とデータベースから記事の取得件数指定
$count = PluginBlockUtil::getLimitByPageId($pageId);
$sql = "SELECT ent.* FROM Entry ent ".
"INNER JOIN EntryLabel lab ".
"ON ent.id = lab.entry_id ".
"WHERE lab.label_id IN (" . implode(",", $labelIds) . ") ".
"AND ent.isPublished = 1 ".
"AND ent.openPeriodEnd >= :now ".
"AND ent.openPeriodStart < :now ";
if(SOY2DAOConfig::type() == "mysql"){
$sql .= "ORDER BY Rand() ";
}else{
$sql .= "ORDER BY Random() ";
}
if(isset($count) && $count > 0){
$sql .= "LIMIT " . $count;
}
$dao = SOY2DAOFactory::create("cms.EntryDAO");
try{
$results = $dao->executeQuery($sql, array(":now" => time()));
}catch(Exception $e){
return array();
}
if(!count($results)) return array();
$soycms_search_result = array();
foreach($results as $key => $row){
if(isset($row["id"]) && (int)$row["id"]){
$soycms_search_result[$row["id"]] = $dao->getObject($row);
}
}
return $soycms_search_result;
}
//詳細ページを開いているか?
private function checkIsBlogEntryPage($pageId){
$page = PluginBlockUtil::getBlogPageByPageId($pageId);
if(is_null($page->getId())) return false;
if(strlen($page->getUri())){
$uri = "/" . $page->getUri();
}else{
$uri = "";
}
return (strpos($_SERVER["PATH_INFO"], $uri . "/" . $page->getEntryPageUri() . "/") !== false);
}
private function getLabelIds($pageId){
$alias = trim(substr($_SERVER["PATH_INFO"], strrpos($_SERVER["PATH_INFO"], "/") + 1), "/");
$sql = "SELECT ent.id, lab.label_id FROM Entry ent ".
"INNER JOIN EntryLabel lab ".
"ON ent.id = lab.entry_id ".
"WHERE ent.alias = :alias";
$dao = new SOY2DAO();
try{
$res = $dao->executeQuery($sql, array(":alias" => $alias));
}catch(Exception $e){
return null;
}
if(!count($res)) return null;
//ブログで指定されているラベルIDは除く
$blogLabelId = (int)PluginBlockUtil::getBlogPageByPageId($pageId)->getBlogLabelId();
$list = array();
//ラベルの指定
$labelIds = PluginBlockUtil::getLabelIdsByPageId($pageId);
foreach($res as $v){
if(isset($v["label_id"]) && is_numeric($v["label_id"]) && $blogLabelId !== (int)$v["label_id"]){
//cms:labelsで条件を付ける
if(count($labelIds)){
if(in_array($v["label_id"], $labelIds)){
$list[] = (int)$v["label_id"];
}
//labelIdsがない場合は無条件で入れる
}else{
$list[] = (int)$v["label_id"];
}
}
}
return $list;
}
function returnPluginId(){
return self::PLUGIN_ID;
}
/**
* 設定画面の表示
*/
function config_page($message){
SOY2::import("site_include.plugin.soycms_same_category_block_Random.config.SameCategoryBlockRandomConfigPage");
$form = SOY2HTMLFactory::createInstance("SameCategoryBlockRandomConfigPage");
$form->setPluginObj($this);
$form->execute();
return $form->getObject();
}
/**
* プラグインの登録
*/
public static function registerPlugin(){
$obj = CMSPlugin::loadPluginConfig(self::PLUGIN_ID);
if(is_null($obj)){
$obj = new SOYCMSSameCategoryBlockRandomPlugin();
}
CMSPlugin::addPlugin(self::PLUGIN_ID,array($obj,"init"));
}
}
投稿者:kamo
投稿日時:2022-07-05 07:28:31
当方夕方まで不在なので、作業ができませんが、もし解決策がわかればご享受よろしくお願いいたします。
投稿者:齋藤毅
投稿日時:2022-07-05 07:59:03
92行目の
他に121行目の
$page = PluginBlockUtil::getBlogPageByPageId($pageId);
を
$page = PluginBlockUtil::soycms_get_blog_page_object($pageId);
のようにします。
他に121行目の
$blogLabelId = (int)PluginBlockUtil::getBlogPageByPageId($pageId)->getBlogLabelId();
もエラーになりますので、
$blogLabelId = (int)soycms_get_blog_page_object($pageId)->getBlogLabelId();
に変更します。
投稿者:kamo
投稿日時:2022-07-05 18:35:43
上記箇所を変更してみましたが以下のエラー表示が引き続き表示されて・・・。
Fatal error: Uncaught Error: Call to undefined method PluginBlockUtil::soycms_get_blog_page_object() in /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php:92 Stack trace: #0 /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php(44): SOYCMSSameCategoryBlockRandomPlugin->checkIsBlogEntryPage(21) #1 /home/user/ドメイン.com/public_html/sycms/common/site_include/block/PluginBlockComponent/block.php(44): SOYCMSSameCategoryBlockRandomPlugin->onLoad(Array) #2 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSPage.class.php(49): PluginBlockComponent->getViewPage(Object(CMSBlogPage)) #3 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSBlogPage.class.php(706): CMSPage->main() #4 /home/user/ドメイン.com/public_html/sycms/common/site_include/CMSPageController.class.php(109): CMSBlogPage->main() #5 /ho in /home/user/ドメイン.com/public_html/sycms/common/site_include/plugin/soycms_same_category_block_Random/soycms_same_category_block_Random.php on line 92
大変お手数をお掛けいたいします。
投稿者:齋藤毅
投稿日時:2022-07-05 19:04:26
すみません。
コードを間違えました。
コードを間違えました。
$page = PluginBlockUtil::soycms_get_blog_page_object($pageId);
は誤りで、
$page = soycms_get_blog_page_object($pageId);
になります。
投稿者:kamo
投稿日時:2022-07-05 19:43:32
齋藤様
直りました!
大変お手数をお掛け致しました。
表示が正常通りできるようになり、ほっと致しました。
何回もご対応頂き感謝申し上げます。
今後ともよろしくお願いいたします。
直りました!
大変お手数をお掛け致しました。
表示が正常通りできるようになり、ほっと致しました。
何回もご対応頂き感謝申し上げます。
今後ともよろしくお願いいたします。