Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2007-10-22 00:09:58

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

subcategoryのidやdescにはアクセスできるようになったのですが、itemidをどうにかして取得したくて、一日悩んでいます。。

pipincludeでincludeさせたPHPからNucleus内のメインの目次ページスキンで表示された各記事毎のitemidを取得するところで躓いています。

$item = $manager->getItem($itemid,0,0);
$str = $item['title'];

などでタイトルの取得が出来るのはわかったのですが、idについてはわからない状態です。

$query = "SELECT * FROM nucleus_item where inumber";
$itmid = mysql_query($query,$db);
$row_id = mysql_fetch_array($itmid);
extract($row_id);

なども試しましたがやはり駄目でした。。

よろしくお願いいたします。。


by hiroxs

オフライン

#2 2007-10-22 06:16:24

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

$item['itemid'] だと思います。ITEM.php の38行目あたりを参考にしてください。

オフライン

#3 2007-10-22 10:16:29

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

レスありがとうございます。

早速
$item['itemid']を試したところ、やはり表示されないようです。。

さらに

//グローバル変数
global $itemid, $manager;
$itemid = intval($itemid);
//各記事タイトル取得
$item = $manager->getItem($itemid,0,0);
$str = $item['title'];

でのタイトルの取得すらできない状態になっています。。


ソースとしては

//グローバル変数
global $itemid, $manager;
$itemid = intval($itemid);
//各記事タイトル取得
$item = $manager->getItem($itemid,0,0);
$str = $item['title'];


//とりあえず
$str_title = 1;


//アイテムの所属するサブカテゴリーIDを取得
$str_sql = "select * from nucleus_plug_multiple_categories WHERE item_id = " . $str_title;
$rs = mysql_query($str_sql);
$row = mysql_fetch_array($rs);
extract($row);


//アイテムの情報を取得
$str_sql_sub = "select * from nucleus_plug_multiple_categories_sub WHERE scatid = " . $subcategories;
$rs_sub = mysql_query($str_sql_sub);
$row_sub = mysql_fetch_array($rs_sub);
extract($row_sub);

$splitarray = split("[@]",$sdesc);
list($itemname,$itemprice) = $splitarray;

echo 'ここから' . '---' . $str . '---' . $sname . '---' . $itemname . '---' .$itemprice ."<br>";
echo "----------------------<br>";


としてみたのですが。。。


by hiroxs

オフライン

#4 2007-10-22 10:42:07

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

なにがやりたいのかよくわからないんですが、

$item = $manager->getItem($itemid,0,0); 
$str = $item['title'];

などでタイトルの取得が出来るのはわかったのですが、idについてはわからない状態です。

ここで書かれてる『$itemid』とは違うんでしょうか?
それと、

$manager->getItem($itemid,0,0); 

で取得できるのはオブジェクトだったような…?

$item->title

でタイトル取れません?

オフライン

#5 2007-10-22 13:25:09

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

やりたいことは単純で、インクルードさせたPHP内で各記事のアイテムIDを取得したい、ということです。

取得したアイテムIDを利用して、そのほかの情報を決めてしまう予定なんですが、現状では元になるアイテムIDが取得できていません。

直接数字を入力すれば表示されるんですが、すべてのアイテムに対して同じ情報が出てきてしまうので、それでは意味がありません。

そこでアイテムのIDを・・・となるんですが。。

ITEM.phpも参照しましたが、itemidという単語を発見した意外は、具体的にどうやって取得しているのかよくわからずじまいです。

ちなみに
//グローバル変数
global $itemid, $manager, $item;

//各記事タイトル取得
$item = $item->title;

としてみましたが、やはりだめでした。。


by hiroxs

オフライン

#6 2007-10-22 14:18:31

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

ごめんなさい、hashで正しかったですね :oops:
言いたかったのは

$item = $manager->getItem($itemid,0,0); 
$str = $item['title']; 

などでタイトルの取得が出来るのはわかったのですが、idについてはわからない状態です。

もし、これでタイトルが取得できるなら、アイテムのIDは『$itemid』です

テンプレートでphpincludeしたら出来たと思ったんですが…

オフライン

#7 2007-10-22 15:26:32

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

テンプレートのほうでPHPをインクルードしています。

しかし、今試してみたら
//グローバル変数
global $blog, $itemid, $manager, $catid;

//blog名取得
$str_blog = $blog->getName();

//カテゴリー名取得
$str_cat = $blog->getCategoryName($catid);

//各記事タイトル取得
$item = $manager->getItem($itemid,0,0);
$str_id = $item['itemid'];

のうち$str_blogだけが取得できました。

最初に表示されていたのは僕の勘違いかもしれないです。。


by hiroxs

オフライン

#8 2007-10-22 16:39:53

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

プラグインとして作れば簡単だと思いますが,それではいけない理由があるのでしょうか。

なお,目次ページ内ということで$itemや$itemidはセットされません。

オフライン

#9 2007-10-22 17:31:56

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

プラグインでも問題はないのですが、僕自身にそこまでの技術がないので考えていませんでした。

今やろうとしているのはMultipleCategoriesを利用した商品レビューのサイトなんですが、
・サブカテゴリー名に商品ID(color me shopの?pid=*******の数字を入力)
・説明に商品名と価格を「@」区切りで入力後splitして変数に入れる。
・商品のIDを取得して、その商品が属するサブカテゴリーのIDから上記のデータを引っ張ってくる。←ここで躓いてます。。

途中まで出来たものなんですが。。
ttp://newton-store.net/review

あとはIDの取得だけなのに。。。


by hiroxs

オフライン

#10 2007-10-22 17:54:02

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

hiroxs さんの発言:

プラグインでも問題はないのですが、僕自身にそこまでの技術がないので考えていませんでした。

プラグインにすれば,必要な情報はNucleus自身から与えられるので,技術的にはそちらの方がよほど楽ですよ。
例えばpreItemイベントの中で処理するようにしたらいいと思います。

オフライン

#11 2007-10-22 20:26:09

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

プラグインを作ったことがないので、かなり不安ですが、こんな感じでしょうか?

<?php

class 'NP_GetID extends NucleusPlugin
{
	// プラグインの名前
	function getName()
	{
		return 'NP_GetID';
	}

	// プラグインの作者
	function getAuthor()
	{
		return 'hiroxs';
	}

	// プラグインのサイトURL
	// mailto:foo@bar.com の形式も可
	function getURL()
	{
		return 'http://www.ppnr-g.com/nc/';
	}

	// プラグインのバージョン
	function getVersion()
	{
		return '0.01';
	}

	// インストール済みのプラグインリストに表示される説明文
	function getDescription()
	{
		return 'アイテムのIDだけを取得するプラグイン';
	}
	
	
	//ここから
	function getEventList() { return array('PreItem'); }

	
	function event_PreItem(&$data) {
		
		$getid = $data['item']['itemid'];
		extract($getid);
		
		echo "$itemid";
	
	}


}
?>

by hiroxs

オフライン

#12 2007-10-22 20:57:20

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

<?php

class 'NP_GetID extends NucleusPlugin

<?php

class NP_GetID extends NucleusPlugin

ですね。これをNP_GetID.phpとして保存すれば多分大丈夫です。

オフライン

#13 2007-10-23 11:01:53

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

ご指摘ありがとうございます。

その後このプラグインを突っ込んでみたところ、

Warning: extract() [function.extract]: First argument should be an array 

   function event_PreItem(&$data) { 
       
      $getid = $data['item']['itemid']; 
      extract($getid); 
       
      echo "$itemid"; 
    
   } 

extract($getid); 

でエラーが出ました。

そこで

function event_PreItem(&$data) {
		
	$getid = $data["item"]["itemid"];

	//echo "$itemid";
	
}

とするとエラーはなくなりましたが、インクルードしているPHPのほうでアイテムのIDは取得できていないようです。。


by hiroxs

オフライン

#14 2007-10-23 11:51:43

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

インクルードしているPHPの内容をここに入れたらいけないのでしょうか。

オフライン

#15 2007-10-23 11:54:58

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

   function event_PreItem(&$data) { 
        
      $itemid= $data['item']->itemid; 
        
      echo "$itemid"; 
    
   } 

オフライン

#16 2007-10-23 13:17:43

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

Andyさん:

インクルードしているPHPは
itemname.php

<?php

require("conn_top.php");

echo '<h2>' . $itemname . '</h2>';
echo '<p class="price">' . $itemprice . '円(内税)</p>';


?>

itemphoto.php

<?php

require("conn_top.php");

echo '<dt><img src="http://img03.shop-pro.jp/PA01003/624/product/' . $sname . '.jpg" alt="' . $itemname . '" /></dt>';
echo '<dd><a href="http://newton-store.com/?pid=' . $sname .'"><img src="skins/newton/img/item_detail_off.png" alt="商品の詳細を見る" /></a></dd>';


?>

の2つで、それぞれから問題のPHP
conn_top.php

<?php
echo "ここに" . $itemid;
//アイテムの所属するサブカテゴリーIDを取得
$str_sql = "select * from nucleus_plug_multiple_categories WHERE item_id = " . $itemid;
$rs = mysql_query($str_sql);
$row = mysql_fetch_array($rs);
extract($row);


//アイテムの情報を取得
$str_sql_sub = "select * from nucleus_plug_multiple_categories_sub WHERE scatid = " . $subcategories;
$rs_sub = mysql_query($str_sql_sub);
$row_sub = mysql_fetch_array($rs_sub);
extract($row_sub);

$splitarray = split("[@]",$sdesc);
list($itemname,$itemprice) = $splitarray;

echo 'ここから' . '---' . $itemid . '---' . $sname . '---' . $itemname . '---' .$itemprice ."<br>";
echo "----------------------<br>";

?>

を呼び出しています。


ちなみに公開しているサイトは
ttp://newton-store.net/review/
で、商品のレビューサイトです。

shizukiさん:
ソースありがとうございます。

変更してみたところプラグインのエラーは出ないのですが、やはりアイテムIDがだめっぽいです。

僕のインクルードさせているPHP自体に問題があるんでしょうか??


by hiroxs

オフライン

#17 2007-10-23 15:12:18

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

試してないけどこんな感じ?

function doTemplateVar(&$item);
{
	$itemid = $item->itemid;
	echo "ここに" . $itemid; 
	//アイテムの所属するサブカテゴリーIDを取得
	$que = "SELECT subcategories as result FROM " . sql_table('plug_multiple_categories') . " WHERE item_id=" . (int)$Item->itemid;
	$res = quikcQuery($que);
	$sid = intval(trim($res, ','));
	
	//アイテムの情報を取得
	$que = "SELECT sdesc, sname FROM " . sql_table('plug_multiple_categories_sub') . " WHERE scatid=" . $sid;
	$res = sql_query($que);
	$sct = mysql_fetch_assoc($res);
	extract($res); 
	
	list($itemname,$itemprice) = explode("[@]",$sdesc); 
	
	echo 'ここから' . '---' . $itemid . '---' . $sname . '---' . $itemname . '---' .$itemprice ."<br>"; 
	echo "----------------------<br>";
}

それよりNP_znExtraFieldsはどうですか?

オフライン

#18 2007-10-23 15:41:48

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

ソースありがとうございます。
早速ためして見ます。

プラグインのところに記述、ですよね?

ところで「NP_znExtraFields」は「znItemFieldEX」とは別物なんでしょうか?

「znItemFieldEX」は使っているんですが(ユーザーの購入日や地図情報の入力などで。)、アイテム登録ごとに品番などの情報入力は面倒ですし、いろいろ試行錯誤してサブカテゴリーの情報を利用してアイテム管理に行き着いたしだいです。。。

リレーションなども検討してみたんですが、今回の構成ではあまり理想的なものには仕上がらなかったです。。。


by hiroxs

オフライン

#19 2007-10-23 16:20:09

shizuki
Administrator
From: 西播磨
登録日: 2006-03-23
投稿: 900
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

肝心なこと書き忘れてました :oops:
最終的な出力のことを考えて、event_PreItemじゃなくてdoTemplateVarの方がいいと思ったのでそっちで書いてみました
eventPreItemのブロックと差し替えて、テンプレートに<%GetID%>です

前のコードで$itemidは表示されたと思いますが、グローバルにしてないし、インクルードしてるファイルの方でもグローバル呼んでないんでそのままでは動かないと思います
それから今回のコードですが、

$sid = intval(trim($res, ','));

の部分を

$sid = intval($res);

に変更お願いします
っていうか、サブカテゴリは複数選択してないですよね?
複数選択してる場合はSQLの変更が必要です
でも複数選択してたら

//アイテムの情報を取得 
$str_sql_sub = "select * from nucleus_plug_multiple_categories_sub WHERE scatid = " . $subcategories; 
$rs_sub = mysql_query($str_sql_sub); 
$row_sub = mysql_fetch_array($rs_sub); 
extract($row_sub); 

$splitarray = split("[@]",$sdesc); 
list($itemname,$itemprice) = $splitarray;

の部分がそもそも成り立たないですね

ところで「NP_znExtraFields」は「znItemFieldEX」とは別物なんでしょうか?

同じものです
混乱させてごめんなさい

オフライン

#20 2007-10-23 17:24:14

hiroxs
メンバー
登録日: 2005-06-07
投稿: 62
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

shizukiさん:
レスありがとうございます。

何とか完成しました!

<?php
class NP_GetID extends NucleusPlugin
{
	// プラグインの名前
	function getName()
	{
		return 'NP_GetID';
	}

	// プラグインの作者
	function getAuthor()
	{
		return 'hiroxs';
	}

	// プラグインのサイトURL
	// mailto:foo@bar.com の形式も可
	function getURL()
	{
		return 'http://www.ppnr-g.com/nc/';
	}

	// プラグインのバージョン
	function getVersion()
	{
		return '0.01';
	}

	// インストール済みのプラグインリストに表示される説明文
	function getDescription()
	{
		return 'アイテムのIDだけを取得するプラグイン';
	}
	
	function doTemplateVar(&$item) {
		$itemid = $item->itemid;
		$itemtitle = $item->title;
		$itembody = $item->body;
		$itemcatid = $item->catid;
		$itemimgurl = 'http://www.newton-store.net/review/skins/newton/img/';
				
		//アイテムの所属するサブカテゴリーIDを取得
		$str_sql = "select * from nucleus_plug_multiple_categories WHERE item_id = " . $itemid;
		$rs = mysql_query($str_sql);
		$row = mysql_fetch_array($rs);
		extract($row);


		//アイテムの情報を取得
		$str_sql_sub = "select * from nucleus_plug_multiple_categories_sub WHERE scatid = " . $subcategories;
		$rs_sub = mysql_query($str_sql_sub);
		$row_sub = mysql_fetch_array($rs_sub);
		extract($row_sub);

		$splitarray = split("[@]",$sdesc);
		list($itemname,$itemprice) = $splitarray;
		
		//拡張項目の取得
		$str_sql_ex = "select * from nucleus_plug_znitemfieldex_table_item_b1 WHERE id = " . $itemid;
		$rs_ex = mysql_query($str_sql_ex);
		$row_ex = mysql_fetch_array($rs_ex);
		extract($row_ex);
		
		$datas = array(
			'itemid' => $itemid ,
			'itemtitle' => $itemtitle ,	
			'itembody' => $itembody ,
			'itemcatid' => $itemcatid ,
			'sname' => $sname ,
			'itemname' => $itemname ,
			'itemprice' => $itemprice ,
			'subcategories' => $subcategories ,
			'f__starraintg' => $starraintg ,
			'f__nickname' => $nickname ,
			'f__address' => $address ,
			'f__sex' => $sex ,
			'f__whenbuy' => $whenbuy ,
			'f__wherebuy' => $wherebuy
			);
		
		
		
		echo '<div class="itembox clearfix"><div class="clearfix">';
		echo '<h2>' . $itemname . '</h2>';
		echo '<p class="price">' . $itemprice . '円(内税)</p>';
		echo '<br style="clear:both;" />';
		echo '<h3>' . $itemtitle . '</h3>';
		echo '<p class="starrating">評価:<img src="' . $itemimgurl . 'star0' . $starraintg . '.gif" alt="この商品への評価は' . $starraintg . 'です。" /></p>';
		echo '<ul class="clearfix">';
		echo '<li>お名前:' . $nickname . '</li>';
		echo '<li>住所:' . $address . '</li>';
		echo '<li>性別:' .$sex . '</li>';
		echo '<li>購入日時:' . $whenbuy . '</li>';
		echo '<li>購入場所:' . $wherebuy . '</li>';
		echo '</ul><p class="bodytext"></p>';
		echo '<p><a href="http://www.newton-store.net/review/index.php?=catid=' . $itemcatid . '&subcatid=' . $subcategories . '"><img src="' .$itemimgurl . 'check_review_off.png" alt="全てのレビューを見る" /></a></p>';
		echo '</div><dl>';

		echo '<dt><img src="http://img03.shop-pro.jp/PA01003/624/product/' . $sname . '.jpg" alt="' . $itemname . '" /></dt>';
		echo '<dd><a href="http://newton-store.com/?pid=' . $datas[4] .'"><img src="' . $itemimgurl . 'item_detail_off.png" alt="商品の詳細を見る" /></a></dd>';

		echo '<dd><a href="#"><img src="' . $itemimgurl . 'send_review_off.png" /></a></dd></dl></div>';

	}
}
?>

こんな感じです。。
全く汎用性のないプラグインになってますが。。

みなさん、ありがとうございました!


by hiroxs

オフライン

#21 2007-10-27 01:41:11

yumi saiki
メンバー
From: 大阪府高槻市
登録日: 2007-07-27
投稿: 118
ウェブサイト

Re: PHPからNucleusのitemidを取得したい。

こんなものまでnucleus に入れることができるのですか?
このプラグインを入れてどのようにするのかもうちょっと 具体的に教えて欲しいのですが。

初心者のアホな質問ですみません。

このプラグインを見ると なんか出力するPHPに見えてしまうのですが。


yumi saiki
今日も勉強しました!
************************
教えてください。よろしくお願いします。

オフライン

Board footer