2019/10/20 09:38 JST

Geeklog Japan Forums

mycaljpがGL2.2に対応していない件


状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 57
GL2.2ivywe版のextended から mycaljpをインストールしたのですが、エラーになります。

1. カレンダーが表示された状態で記事が書かれた日付のリンクを押して記事を見ようとすると、エラーになる。
 原因は、lib-story.phpを読み込もうとしているため。GL2.2にはlib-storyはない。

2.使い方が分からない。他のプラグインのように、public_html/プラグイン名/index.phpファイルが入り口になっているのかと思い、index.phpを実行するブロックを作ると、延々とロードが続く不具合になる。mycal.jpは通常のブロックではなく、システムが取り分けた専用のブロックに入るようなので、取り扱いが特殊なのだろうと想像していますが、よく分からない。mycaljpを有効にすると、いきなりmycaljpがサイトに表示されるが、このブロックはソースプログラム的にはどのファイルが入り口になっているのでしょうか?それが分かるとカスタマイズができるようになるのですが。

3.mycaljpとカレンダープラグインの関係がよく分からない。不具合対処で作業が止まっているため、mycaljpがどういうプラグインなのかの調査までできずにいるが、カレンダーで登録したイベントをmycaljpで表示できるのかどうかが一番の関心です。

mycaljp初心者なのでどなたか、アドバイスお願いします。

それと情報共有ですが、ドキュメントを見るとmycaljpを使うにはdataproxyを先にインストールする必要があると書かれていたのですが、dataproxyのphp7対応版はextendedには入っておらず、検索エンジンで探してインストールしました。

状態: オフライン

terayama

Forum User
Active Member
登録日: 02/16/07
投稿数: 243
いくつかの修正をして動作してます
xrea php7.3 Geeklog2.2.1
geeklog-ivywe-Geeklog2.2 extend から
dataproxyとmycaljpを取ってきた
mycaljpはサイド?にミニカレンダーを表示させます
設定はコンフィグレーションで行います
修正箇所
private/plugins/mycaljp/functions.inc
1. continue を break に変更
2. count( $events[$key] ) を isset( $events[$key] )
取り急ぎセットして確認した状態なので
他にも修正必要かもしれませんが

状態: オフライン

terayama

Forum User
Active Member
登録日: 02/16/07
投稿数: 243
記事へのリンクをクリックすると
lib-storyがないのでエラーしますね

状態: オフライン

terayama

Forum User
Active Member
登録日: 02/16/07
投稿数: 243
calsearch.php
--
if (COM_versionCompare(VERSION, '2.2.0', '>='Wink) {
require_once $_CONF['path_system'] . 'lib-article.php';
} else { // For Geeklog 2.1.3 support
require_once $_CONF['path_system'] . 'lib-story.php';
}
// require_once $_CONF['path_system'] . 'lib-story.php';
$story = new Article();
// $story = new Story();
--
とりあえずですね

状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 57
terayamaさん情報ありがとうございます。
質問ですが、mycaljpを有効にすると、ウェブサイト内に、サイトカレンダーというタイトルと、その下にカレンダー本体が表示されます。
この、サイトカレンダーの文字部を除いたカレンダー本体の部分だけをカスタムブロック内に追加表示したいのですが、このカレンダーの部分だけを表示しているソースコードはありますでしょうか?
もしくは、サイトカレンダーの文字部も含めてmycaljpを表示しているトリガーとなっているソースファイルまたは関数でもいいです。それをカスタムブロックに追加して「サイトカレンダー」の文字部だけdisplaynoneしても多分目的は達成できますから。


状態: オフライン

terayama

Forum User
Active Member
登録日: 02/16/07
投稿数: 243
ブロックを新規作成
タイトル スペース(空白ダメなので)
タイプ PHPブロック
関数 phpblock_mycaljp2
ではダメですか??

状態: オフライン

terayama

Forum User
Active Member
登録日: 02/16/07
投稿数: 243
プライベート\plugins\mycaljp\language\japanese_utf-8.php
の中で
'block_title' => 'サイトカレンダー',
と定義されてるので ’’ にしてしまうとか

状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 57
Quote by: terayama

ブロックを新規作成
タイトル スペース(空白ダメなので)
タイプ PHPブロック
関数 phpblock_mycaljp2
ではダメですか??


試してみました。lib-storyの修正をしていない状態で使いましたが、外見上はサイトカレンダーと同一でしたが、挙動は次の月ボタンが反応しない不具合などが出ます。
まあ別ブロックへの埋め込みカスタマイズはしないで使用する方向で行こうと思いますので、この件はクローズで。

カレンダー機能はまだ検討途中なので、また問題にぶつかりましたら皆さんに相談いたします。

状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 57
ソースのstoryをarticleに修正する作業は終わりました。
まだ問題が続いています。
サイトカレンダーの日付をクリックしてその日の記事を表示するのに時間がかかります。

例えば、GLで記事を昨日3件書いて公開に設定しました。
mycaljp(サイトカレンダー)の昨日の日付をクリックします。
するとブラウザはロード中の挙動をします。

この時、calsearch.php において

・MYCALJP_buildCategory()とMYCALJP_buildItems()が数十回コールされている。

・function MYCALJP_buildItems()の
$items = $driver->getItemsByDate($pid);
の前後で毎回数十~数百ms要している。

数分後にロードが終わり、記事が3件表示されます。

つまり、$driver->getItemsByDate($pid) X 関数が数十回コール = 記事3件表示するのに数分の処理時間

です。

記事をたった3件出すのに数分かかるのは効率が悪すぎるので改善したいのですが、どうしたらいいでしょうか
$driverはデータプロキシプラグインのようです。getChildCategories()関数で$categoriesというオブジェクトを作っていて、これがトピックの数だけループしてて、私のサイトの場合、600回以上ループしています。そのあたりに時間がかかっているようです。

ちなみに、ローカルの別環境で試すと、15秒程度かかりました。
また、GL2ではなく、GL1.4のmycalで試すと、一瞬で処理が終わります。こちらはdetaproxyを使ってないのかもしれません。

GL2.2のmycaljpの利用目的は、GL1.4同様の挙動を引き継げればよいという程度に考えていまして、各日付をクリックしたらその日付に投稿された記事の一覧を表示できればそれだけでいいと考えています。イベントをカレンダーに登録したらそれも表示したいです。
それ以外の情報は不要です。例えばコメントや他のプラグインの情報とmycaljpを紐付けることは無用です。
結構シンプルな要件だと思うのですが、何とか一瞬で表示できるように修正できないものでしょうか?

みなさんのご意見をおきかせください。

時刻はすべて JST , 現在の時刻は 09:38 AM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  ゲストユーザ投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック