zencart:メーカー名+imgをトップページへ表示
Posted on 月曜日, 2 月 9th, 2009 at 5:49 PMzencart 本家モジュールで サイドボックスにメーカーをリストアップ。しかも画像で。
これはイイ。と導入。さらになんとかトップページに表示をさせたく格闘してみた。
- モジュールをこちょこちょしてメーカー名と画像を任意の場所に出力する。
ちなみに、サイドボックスをそのままトップページ(任意の場所)に表示させるには次のように記述
-------(例えばインフォメーションの場合)---
<?php require(DIR_WS_MODULES .'sideboxes/'.'information.php');
?>
ただ・・・これだと 次のようなボックスのヘッダー部分もついてくる。。
------header---------------
<div class="leftBoxContainer" id="" style="width: ">
<p class="leftBoxHeading" id="Heading">
------------------
これではなにかと困るので、なんとか中身だけ取り出せないものかと
いろいろやってみた。
意味はないが・・ランダムに1つだけの表示なら 次のように・・・
-----ランダム1つだけ表示---------
<?php
echo ('<div><a href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '">' . zen_image(DIR_WS_IMAGES . $manufacturer_sidebox_img->fields['manufacturers_image']). sprintf($manufacturer_sidebox_img->fields['manufacturers_name']) . '</a></div>');
?>
---------------------
しっかしランダムにしかも1個しか表示できないのでは全く無意味なので・・
合っているかどうか定かではないがとりあえず思うような表示になったのは事実。てことで次のようにしてみた。
基本的に・・ただコピペしただけ。
メーカー名は場所固定がよかったので 変更点は次の場所のみ
ORDER BY RAND() LIMIT 0,". BOX_MANUFACTURER_MAX_LOGOS ;
を
order by manufacturers_name";
にしてみた。
意味は
- 上がランダム表示(BOX_MANUFACTURER_MAX_LOGOS に数字を設定すると その設定数をランダム表示)
- 下が 名前順。
ってな感じかな。多分。。。。
-------表示したい任意の場所に-----------
<?php
$manufacturer_sidebox_img_query = "select m.manufacturers_id, m.manufacturers_name, m.manufacturers_image, mi.manufacturers_url
from " . TABLE_MANUFACTURERS . " m
left join " . TABLE_MANUFACTURERS_INFO . " mi
on (m.manufacturers_id = mi.manufacturers_id
and mi.languages_id = '" . (int)$_SESSION['languages_id'] . "')
order by manufacturers_name";
$manufacturer_sidebox_img = $db->Execute($manufacturer_sidebox_img_query);
if ($manufacturer_sidebox_img->RecordCount()>0) {
while (!$manufacturer_sidebox_img -> EOF){
echo ('<div>');
echo ('<a href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '">');
echo (zen_image(DIR_WS_IMAGES . $manufacturer_sidebox_img->fields['manufacturers_image'], $manufacturer_sidebox_img->fields['manufacturers_name']). sprintf($manufacturer_sidebox_img->fields['manufacturers_name']));
echo ('</a></div>');
if (zen_not_null($manufacturer_sidebox_img->fields['manufacturers_url']))
echo ('<a href="' . zen_href_link(FILENAME_REDIRECT, 'action=manufacturer&manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '" target="_blank">' . sprintf(BOX_MANUFACTURER_HOMEPAGE_IMG2, $manufacturer_sidebox_img->fields['manufacturers_name']) . '</a>');
$manufacturer_sidebox_img->MoveNext();
}}
?>
(-----少し修正版は最下部へ記載-----------)
---CSS-------
.manuimg li{
float:left;
width:100px;/*画像横サイズに合わせる
height: 60px;/*画像縦サイズ+画像下メーカー名
font-size:70%;/*お好み
margin-top: 1.5em ;/*お好み
padding: 0;
}
--------
--------上の赤字部分をはぶけばメーカー画像ロゴのみ。---↓-------
<?php
$manufacturer_sidebox_img_query = "select m.manufacturers_id, m.manufacturers_name, m.manufacturers_image, mi.manufacturers_url
from " . TABLE_MANUFACTURERS . " m
left join " . TABLE_MANUFACTURERS_INFO . " mi
on (m.manufacturers_id = mi.manufacturers_id
and mi.languages_id = '" . (int)$_SESSION['languages_id'] . "')
order by manufacturers_name";
$manufacturer_sidebox_img = $db->Execute($manufacturer_sidebox_img_query);
if ($manufacturer_sidebox_img->RecordCount()>0) {
while (!$manufacturer_sidebox_img -> EOF){
echo ('<div>');
echo ('<a href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '">');
echo (zen_image(DIR_WS_IMAGES . $manufacturer_sidebox_img->fields['manufacturers_image'], $manufacturer_sidebox_img->fields['manufacturers_name']. sprintf($manufacturer_sidebox_img->fields['manufacturers_name']) ));
echo ('</a></div>');
if (zen_not_null($manufacturer_sidebox_img->fields['manufacturers_url']))
echo ('<a href="' . zen_href_link(FILENAME_REDIRECT, 'action=manufacturer&manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '" target="_blank">' . sprintf(BOX_MANUFACTURER_HOMEPAGE_IMG2, $manufacturer_sidebox_img->fields['manufacturers_name']) . '</a>');
$manufacturer_sidebox_img->MoveNext();
}}
?>
----------------------------
あとは 適当にdivを指定してみたりする。
こんな感じで 出来たかな?
バックアップは大事。全くの素人なもんで心配だ。
=============
------少し修正版ここからw----------
img+メーカー名の時 <a href を分けてみる
参考までに・・・上記のままだと次のようなソースになる。
<a href="http://★★.com/index.php?main_page=index&manufacturers_id=8"><img src="images/no_picture.gif" alt="メーカー8" title=" メーカー8 " width="100" height="80" />メーカー8</a>
これをimg(メーカー画像)と メーカー名(文字) の <a herf を 分ける
なぜに分ける必要があるのか・・・ a hover 時に 画像 と 文字 の装飾を異なるものとする為。
-----以下の青文字を追記する・・。---------
if ($manufacturer_sidebox_img->RecordCount()>0) {
while (!$manufacturer_sidebox_img -> EOF){
echo ('<li id="manu_img'. $manufacturer_sidebox_img->fields['manufacturers_id'] .'"><a href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '">');
echo (zen_image(DIR_WS_IMAGES . $manufacturer_sidebox_img->fields['manufacturers_image'], $manufacturer_sidebox_img->fields['manufacturers_name']).'</a><br />' .'<a href="' . zen_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $manufacturer_sidebox_img->fields['manufacturers_id']) . '">'. sprintf($manufacturer_sidebox_img->fields['manufacturers_name']));
echo ('</a>') . "\n" ;
echo ('</li>') . "\n" ;
----------------
これで CSSにて テキトーにw ごにょごにょっとw で おk
ちなみにソースは次のように変わっているハズ。
<li id="manu_img8"><a href="http://★★.com/index.php?main_page=index&manufacturers_id=8"><img src="images/no_picture.gif" alt="メーカー8" title=" メーカー8 " width="100" height="50" /></a><a href="http://★★.com/index.php?main_page=index&manufacturers_id=8">メーカー8</a>
。。。たぶんね^^ (願望含むw
関連記事
Leave a reply