カテゴリーの表示の仕方

トップページは親カテゴリーと子カテゴリー。
カテゴリーページはその所属する子カテゴリーのみと、カテゴリーの表示のさせ方を変更したい。

まず、カテゴリーのテンプレートは
template/parts/weblinks_category_navi.html なので、これをコピーして、「2」を作る。

引っ張ってくるテンプレートは、
function fetch_category_navi( &$categories, $image_mode, $cols, $keywords ){

}

をコピーし、
function fetch_category_navi2( &$categories, $image_mode, $cols, $keywords ){

}を作成。

その中の、
$text = $tpl->fetch( $this->_get_parts_file( ‘weblinks_category_navi.html’ ) );

を先ほどコピーしたファイル名へ。

index.phpやviewcat.phpに、

ツꀀ$category_navi = $weblinks_template->fetch_category_navi( $category_list, $conf[‘index_cat_img_mode’], $conf[‘index_cat_cols’], $keywords_urlencoded );

$xoopsTpl->assign(‘weblinks_category_navi’, $category_navi);

という風にアサインしているところがあるので、

$category_navi = $weblinks_template->fetch_category_navi2( $ …..

という風に変更するとよい。

weblinksのviewcate.phpで親カテゴリー表示の場合、子カテゴリーの記事も引っ張る

親カテゴリーに所属するリンクがない場合、子カテゴリーのデータが引っ張ってこられる。
しかし、親カテゴリーに所属するリンクがある場合、子カテゴリーのデータは一切出てこない。
親カテゴリーのページに、親カテゴリーと子カテゴリーの所属のデータ全てを引っ張って来たい。

viewcate.phpの
function &build( &$category, &$keyword_array ) 以降を下記のように変更

$total = $this->_link_view_handler->get_top_link_count_by_cid($cid); の下に、

$total_all = intval($category[‘link_count’]);

を追加。これは、子カテゴリーを含めたデータ数が欲しかったため。

その後、

$link_list =& $this->get_linklist_self( $total, $cid, $keywords_urlencoded ); を削除し、

$link_list =& $this->get_linklist_self_p_and_c( $total_all, $cid, $keywords_urlencoded );

を追加。get_linklist_self_p_and_cは新しく追加するfunctionです。

L300以降、
function &get_linklist_self( $total, $cid, $keywords ){}以降に

function &get_linklist_self_p_and_c( $total, $cid, $keywords )
{
ツꀀglobal $xoopsTpl;

ツꀀ$pagenavi =& weblinks_pagenavi_menu::getInstance();

ツꀀ$pagenavi->setPerpage(ツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $this->_conf[‘perpage’] );
ツꀀ$pagenavi->set_sortid_default( $this->_conf[‘orderby’] );
ツꀀ$pagenavi->setTotal($total);

ツꀀ$pagenavi->getGetPage();
ツꀀ$pagenavi->getGetSortid();

ツꀀ$start = $pagenavi->calcStart();
ツꀀ$sortツꀀ = $pagenavi->get_sort();

ツꀀ$link_list =& $this->_link_view_handler->get_link_all_child_and_parent_list_latest_by_cid($cid, $this->_conf[‘perpage’], $start);

ツꀀ$script = WEBLINKS_URL.’/viewcat.php?cid=’.$cid;
ツꀀif ( $keywords )
ツꀀ{
ツꀀツꀀ$script .= ‘&keywords=’. $keywords;
ツꀀ}
ツꀀ$pagenavi->assign_navi($xoopsTpl, $script);

ツꀀreturn $link_list;
}

を追加。
get_link_all_child_and_parent_list_latest_by_cidは新しく追加した関数です。

modules\weblinks\class\weblinks_link_view_handler.php の

function &get_link_all_child_list_latest_by_cid($cid, $limit=0, $start=0){} (L185) 以降に、下記のfunctionを追加。

function &get_link_all_child_and_parent_list_latest_by_cid($cid, $limit=0, $start=0)
{
ツꀀ$orderbyツꀀツꀀ = ”;
ツꀀ$lid_arrツꀀツꀀ =& $this->get_lid_array_parent_child_by_cid_orderby($cid, $orderby, $limit, $start);
ツꀀ$link_list =& $this->_get_link_list_by_lid_array($lid_arr);
ツꀀreturn $link_list;
}

get_link_all_child_and_parent_list_latest_by_cidは、新しく追加した関数です。

weblinksのGoogleMapでアイコン有で範囲を動かしたい。

アイコンを出したままで、地名を押すと、そこへ範囲が切り替わるようにしたい。
新しくプログラムとかに手を加える勇気はなかったので、jsとテンプレートで。

weblinks/include/weblinks_gmap.jsjsに以下のスクリプトを加える。

function weblinks_center( ido , keido , zoom )
{
ツꀀweblinks_gm_gmap.setCenter( new GLatLng(ido, keido) , zoom );
}

で、HTMLの方に

<a href=”javascript:weblinks_center( 緯度, 経度,ツꀀズーム値 );”>地名</a>

weblinksのweblinks_gmap.jsを読んでみるにあたって。

weblinksのweblinks_gmap.jsを読んでみる事にしました。
その間に、いろいろと調べたリンク先を列挙しておきます。

GoogleMap

GBrowserIsCompatible
  http://www.openspc2.org/Google/Maps/api/GBrowserIsCompatible/index.html

マップタイプの追加(addMapTypeメソッド)
  http://www.ajaxtower.jp/googlemaps/gmaptype/index3.html

G_PHYSICAL_MAP
  http://flughafen.jp/blog/2007/11/g_physical_map.html

GScaleControlクラス
  http://www.ajaxtower.jp/googlemaps/gcontrol/index6.html

GOverviewMapControlクラス
  http://www.ajaxtower.jp/googlemaps/gcontrol/index8.html

GLatLng
  地図上の緯度経度を指定
  http://www.openspc2.org/Google/Maps/api2/GLatLng/GLatLng/index.html

座標の指定(setCenterメソッド)
  地図に表示される座標を指定。setCenter(center, zoom, type)
  引数:centerツꀀ 表示される地図の中央の座標 / zoomツꀀ 縮尺(省可) / typeツꀀ マップタイプ(省可)
  http://www.ajaxtower.jp/googlemaps/gmap2/index3.html

setMapType
  表示する画像指定。地図はG_MAP_TYPE / 衛星写真はG_SATELLITE_TYPE /
  地図と衛星の合成はG_HYBRID_TYPE
  http://www.openspc2.org/Google/Maps/api2/GMap2/setMapType/index.html

マーカーの表示(GMarkerクラス, addOverlayメソッド)
  GMarker(latlng, opts?)で、マーカー作成。
  addOverlay(overlay)で、地図に追加。
  http://www.ajaxtower.jp/googlemaps/gmarker/index1.html

getCenter
  地図の中央の座標を取る
  http://www.openspc2.org/Google/Maps/api2/GMap2/getCenter/index.html

GMarker
  地図にマーカーを追加して表示 GMarker(point, options)
  http://www.openspc2.org/Google/Maps/api2/GMarker/GMarker/index.html

GEvent
  地図やマーカーで発生するイベント。で、addListener(source, event, handler)。
  http://www.ajaxtower.jp/googlemaps/gevent/index1.html

openInfoWindowHtml
  http://www.ajaxtower.jp/googlemaps/gmarker/index3.html

javascript

parseFloat
  小数を含む文字列を数値に
  http://www.openspc2.org/JavaScript/ref/convert/parseFlt.htm

ツꀀMath.floor
  数学関数。floorは繰り下げた整数値
  http://www.tohoho-web.com/js/math.htm

weblinks1.9を違う名前で複数設置

weblinks(1.92)違う名前で複数設置がしたい。
任意の名前は「example」とします。

1)フォルダ名を「example」にします。
2)sqlフォルダのweblinks.sqlをコピーして、example.sqlにします。
3)example.sqlの「weblinks_」を「example_」へ変換(テーブル名の変更)。
4)templatesフォルダの「weblinks_」ではじまるテンプレートをコピーし「example_」に変更。
5)imagesフォルダの「weblinks_slogo.png」を「example_slogo.png」に変更。

ひとまずこれでインストールできたし、実際にカテゴリーの登録もできましたし、モジュールの表示も出来ましたが、しばらく動かしてみて、不具合がでたら報告します。

weblinksのバナーURLにimagemanagerを。

weblinks1.9

最初は、「バナーURL」に画像アップロード機能をつけようとおもったんです。昔つけたことがあるので。でも、昔のコードとはまったく違っていて、よくわからなくなってしまったので・・・・・・。

とりあえず、下記のことを実行。

1)バナーURLのフォームのよこに、XOOPSエディターのイメージマネージャみたいなのを付け、クリックすると、イメージマネージャが立ち上がるようにする。

2)そのイメージマネージャからは、「バナーURLに挿入」というボタンをつけ、押すと、「バナーURL」にその写真のアドレスが入るようにする。

という感じです。

では。

1)「バナーURL」のフォームの横に、イメージマネージャをつける。

class/weblinks_link_form_admin_handler.phpのL.562から始まる「function add_admin_banner($id)」の中、「$this->add_buff( $cap, $text );」より前に下記をいれます。

ツꀀ$text .= “<a href=\”#\” onclick=’javascript:openWithSelfMain(\”http://xxxx.xxx.xxx/imagemanager.php?cat_id=1&target=banner\“,”;
ツꀀ$text .= “\”imgmanager\”,400,430); return false;’><img src=’http://localhost/images/image.gif’ alt=’image’ /></a>”;

この場合、「cat_id=1」は特定のページをあらかじめ表示したいから入れただけで、デフォルトでは入れない部分です。myalbumの場合は「cid=1」となります。

また、weblinks用のファイル管理が必要なばあいは、imagemanager.phpをコピーして、そのファイルでincludeしているwebphotoやmyalbumのimagemanager.phpのアドレスを変更すれば可能であると思います。

2)イメージマネージャからのボタンを、「バナーに設定」を増やす。

該当する画像管理モジュールのimagemanagerテンプレートを更新する。
ここでは、webphotoを元に説明します。

テンプレートのwebphoto_main_imagemanager.htmlを下記のように訂正します。

ヘッダーにjavascriptを追加

function insertCode(addCode) {
ツꀀvar targetDom = window.opener.xoopsGetElementById(‘<{$target}>’);
ツꀀtargetDom.value = addCode;
}

ボタンの部分に下記のような記述を追加(任意)

<a href=”#” onclick=”javascript:insertCode(‘<{$photo.src}>’);”>バナーに設定する</a>

以上。

※ただ、この方法だと、サムネイルの場合はサムネイルのURLが入ってしまうので、サムネイルの利用を避けるか、サムネイルではなくてオリジナルのアドレスを引っ張ってくるようにしたい。
オリジナルのアドレスの引っ張り方は、もう少し研究します。

※もっと簡単な方法。
weblinksの「モジュールの設定5(情報登録項目) 」で、タイトルの下に説明が入れられるので、そちらに<a href=”#” onclick=’java_script:openWithSelfMain(“/imagemanager2.php?cid=1&target=banner”,”imgmanager”,400,430); return false;’><img src=’/images/image.gif’ alt=’image’ /></a>と入れてやるだけでよい。
これで、画像その1やその2を「その他」を使って表示してやれる。(target=etc1とかetc2にしてやればよいだけです)

これを、値があるときは画像を表示とかしたいんだけど、どこでこの「その他」の部分を制御しているのかわからない。研究中です。

「削除しますか?」という警告を出す。

weblinksの「削除」を押すと、警告無しに削除されて愕然としてしまいました。
これはいかん。なんでもちゃんと「警告」するようにしよう!

class\xoopsform\form.php

L398の

$js .= “return true;\n}\n”; を下記に変更

ツꀀ$js .= “return confirm(\”処理を実行してよろしいですか?\”);\n}\n”;

ただ、「どの処理だよ!」という突込みが入りそうなので、ちょっと考えてしまうな・・・・・・。
submitのvalue値を拾ってきて、value値を実行してよろしいですか? とできるといいんだけど。
なんか、うまくいかないです。