<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>楼兰故乡</title>
	<atom:link href="http://blog.aijue.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.aijue.net</link>
	<description>公元4世纪，楼兰国突然销声匿迹。</description>
	<lastBuildDate>Wed, 01 Sep 2010 10:34:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>解决zen-cart乱码问题</title>
		<link>http://blog.aijue.net/490/%e8%a7%a3%e5%86%b3zen-cart%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98/</link>
		<comments>http://blog.aijue.net/490/%e8%a7%a3%e5%86%b3zen-cart%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:34:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Zen Cart]]></category>
		<category><![CDATA[admin prefile]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[乱码]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=490</guid>
		<description><![CDATA[admin prefile. 将languages/english.php 编码设置为UTF-8 编辑*.SQL文件. 看是否需要加前缀. 首行设置SET NAMES &#8216;utf8&#8242;; 在PHPMYADMIN中运行. OVER. 延伸阅读]]></description>
			<content:encoded><![CDATA[<p>admin prefile. 将languages/english.php 编码设置为UTF-8</p>
<p>编辑*.SQL文件. 看是否需要加前缀. 首行设置SET NAMES &#8216;utf8&#8242;;</p>
<p>在PHPMYADMIN中运行.</p>
<p>OVER.</p>
<p><a href="http://blog.aijue.net/388/illegal-mix-of-collations-latin1_swedish_ciimplicit-and-utf8_general_cicoer/">延伸阅读</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/490/%e8%a7%a3%e5%86%b3zen-cart%e4%b9%b1%e7%a0%81%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>URL 301 重定向 htaccess</title>
		<link>http://blog.aijue.net/486/url-301-%e9%87%8d%e5%ae%9a%e5%90%91-htaccess/</link>
		<comments>http://blog.aijue.net/486/url-301-%e9%87%8d%e5%ae%9a%e5%90%91-htaccess/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 12:21:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[.htaccess]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=486</guid>
		<description><![CDATA[打开.htaccess文件，加入以下规则。(下面的规则是针对主域名的，子域名要修改) RewriteEngine On RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC] RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301] 2.重定向www.domain.com到domain.com RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.com$ [NC] RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] 3.重定向olddomain.com到www.newdomain.com RewriteEngine On RewriteCond %{HTTP_HOST} !olddomain.com$ [NC] RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301] 4.重定向olddomain.com to newdomain.com RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !olddomain.com$ [NC] RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301] 5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteRule [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">打开.htaccess文件，加入以下规则。(下面的规则是针对主域名的，子域名要修改)</div>
<div id="_mcePaste">RewriteEngine On</div>
<div id="_mcePaste">RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]</div>
<div id="_mcePaste">RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]</div>
<div id="_mcePaste">2.重定向www.domain.com到domain.com</div>
<div id="_mcePaste">RewriteEngine On</div>
<div id="_mcePaste">RewriteCond %{HTTP_HOST} !^domain.com$ [NC]</div>
<div id="_mcePaste">RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]</div>
<div id="_mcePaste">3.重定向olddomain.com到www.newdomain.com</div>
<div id="_mcePaste">RewriteEngine On</div>
<div id="_mcePaste">RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]</div>
<div id="_mcePaste">RewriteRule ^(.*)$ http://www.newdomain.com/$1 [L,R=301]</div>
<div id="_mcePaste">4.重定向olddomain.com to newdomain.com</div>
<div id="_mcePaste">RewriteEngine On</div>
<div id="_mcePaste">RewriteBase /</div>
<div id="_mcePaste">RewriteCond %{HTTP_HOST} !olddomain.com$ [NC]</div>
<div id="_mcePaste">RewriteRule ^(.*)$ http://newdomain.com/$1 [L,R=301]</div>
<div id="_mcePaste">5.重定向domain.com/file/file.php 到 otherdomain.com/otherfile/other.php</div>
<div id="_mcePaste">RewriteCond %{HTTP_HOST} ^www.domain.com$</div>
<div id="_mcePaste">RewriteRule ^file/file.php$ http://www.otherdomain.com/otherfile/other.php [R=301,L]</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/486/url-301-%e9%87%8d%e5%ae%9a%e5%90%91-htaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>position absolute css</title>
		<link>http://blog.aijue.net/483/position-absolute-css/</link>
		<comments>http://blog.aijue.net/483/position-absolute-css/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 06:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Div+CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[position]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=483</guid>
		<description><![CDATA[默认的属性值都是static，静态。就不用多说了。最关键的是 relative（相对）以及absolute（绝对）。 往往我们如果是COPY别人的代码，会把absolute属性与left、top配合起来制作相关的“悬浮层”效果。然而有时候我们需要针对某一个容器的悬浮效果，而不是针对窗口的。这时候通过高度、宽度的计算不但麻烦，而且几乎无法完美实现效果。我一开始也无能为力，后来发现只要把其上一级的样式属性position设置为relative就可以了。 也就是说，position的属性值的效果，直接受其容器样式中position属性值影响。 例如如下A-B的嵌套结构]]></description>
			<content:encoded><![CDATA[<p>默认的属性值都是static，静态。就不用多说了。最关键的是<br />
relative（相对）以及absolute（绝对）。<br />
往往我们如果是COPY别人的代码，会把absolute属性与left、top配合起来制作相关的“悬浮层”效果。然而有时候我们需要针对某一个容器的悬浮效果，而不是针对窗口的。这时候通过高度、宽度的计算不但麻烦，而且几乎无法完美实现效果。我一开始也无能为力，后来发现只要把<span style="color: #ff0000;">其上一级的样式属性position设置为relative就可以了</span>。</p>
<p>也就是说，position的属性值的效果，直接受其容器样式中position属性值影响。<br />
例如如下A-B的嵌套结构</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/483/position-absolute-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysqldump 使用</title>
		<link>http://blog.aijue.net/480/mysqldump-%e4%bd%bf%e7%94%a8/</link>
		<comments>http://blog.aijue.net/480/mysqldump-%e4%bd%bf%e7%94%a8/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 04:56:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[mysqldump]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=480</guid>
		<description><![CDATA[最常见的mysqldump使用可能制作整个数据库的一个备份： mysqldump –opt database &#62; backup-file.sql 但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的： mysqldump –opt database &#124; mysql –host=remote-host -C database 由于mysqldump导出的是完整的SQL语句，所以用mysql客户程序很容易就能把数据导入了： shell&#62; mysqladmin create target_db_name shell&#62; mysql target_db_name &#60; backup-file.sql 就是 shell&#62; mysql 库名 &#60; 文件名 ＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝ 几个常用用例： 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 &#62; 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc &#62; wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>最常见的mysqldump使用可能制作整个数据库的一个备份：</p>
<p>mysqldump –opt database &gt; backup-file.sql</p>
<p>但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的：</p>
<p>mysqldump –opt database | mysql –host=remote-host -C database</p>
<p>由于mysqldump导出的是完整的SQL语句，所以用mysql客户程序很容易就能把数据导入了：</p>
<p>shell&gt; mysqladmin create target_db_name<br />
shell&gt; mysql target_db_name &lt; backup-file.sql<br />
就是<br />
shell&gt; mysql 库名 &lt; 文件名</p>
<p>＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
几个常用用例：</p>
<p>1.导出整个数据库<br />
mysqldump -u 用户名 -p 数据库名 &gt; 导出的文件名<br />
mysqldump -u wcnc -p smgp_apps_wcnc &gt; wcnc.sql<br />
2.导出一个表<br />
mysqldump -u 用户名 -p 数据库名 表名&gt; 导出的文件名<br />
mysqldump -u wcnc -p smgp_apps_wcnc users&gt; wcnc_users.sql<br />
3.导出一个数据库结构<br />
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc &gt;d:\wcnc_db.sql</p>
<p>-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table</p>
<p>4.导入数据库<br />
常用source 命令<br />
进入mysql数据库控制台，<br />
如mysql -u root -p</p>
<p>mysql&gt;use 数据库</p>
<p>然后使用source命令，后面参数为脚本文件（如这里用到的.sql）<br />
mysql&gt;source d:\wcnc_db.sql</p>
<p>1.导出结构不导出数据</p>
<p>mysqldump -d 数据库名 -uroot -p &gt; xxx.sql</p>
<p>2.导出数据不导出结构</p>
<p>mysqldump -t 数据库名 -uroot -p &gt; xxx.sql</p>
<p>3.导出数据和表结构</p>
<p>mysqldump 数据库名 -uroot -p &gt; xxx.sql</p>
<p>4.导出特定表的结构</p>
<p>mysqldump -uroot -p -B数据库名 &#8211;table 表名 &gt; xxx.sql</p>
<p>C:\Documents and Settings\Administrator&gt;<br />
mysqldump -h192.168.0.81  &#8211;hex-blob=true -uroot -p  database tablename &gt;d:\blob.sql</p>
<p>mysqldump -h192.168.0.81 -uroot -p &#8211;hex-blob=true database&gt; d:\coolink.sql</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/480/mysqldump-%e4%bd%bf%e7%94%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将左侧菜单全部改成图</title>
		<link>http://blog.aijue.net/474/%e5%b0%86%e5%b7%a6%e4%be%a7%e8%8f%9c%e5%8d%95%e5%85%a8%e9%83%a8%e6%94%b9%e6%88%90%e5%9b%be/</link>
		<comments>http://blog.aijue.net/474/%e5%b0%86%e5%b7%a6%e4%be%a7%e8%8f%9c%e5%8d%95%e5%85%a8%e9%83%a8%e6%94%b9%e6%88%90%e5%9b%be/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 19:56:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Zen Cart]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[菜单]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=474</guid>
		<description><![CDATA[sideboxes/tpl_categories.php if ($box_categories_array[$i]['current']) { if ($box_categories_array[$i]['has_sub_cat']) { $content .= '' . $box_categories_array[$i]['name'] . ''; } else { $content .= '' . $box_categories_array[$i]['name'] . ''; } } else { $content .= '< img src="../images/menu/' . $new_style . '.jpg" />'/* . 'top down'*/; }]]></description>
			<content:encoded><![CDATA[<p><code> sideboxes/tpl_categories.php</p>
<p>if ($box_categories_array[$i]['current']) {<br />
        if ($box_categories_array[$i]['has_sub_cat']) {<br />
          $content .= '<span class="category-subs-parent">' . $box_categories_array[$i]['name'] . '</span>';<br />
        } else {<br />
          $content .= '<span class="category-subs-selected">' . $box_categories_array[$i]['name'] . '</span>';<br />
        }<br />
      } else {<br />
       $content .= '< img src="../images/menu/' . $new_style . '.jpg" />'/* . 'top down'*/;<br />
      }</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/474/%e5%b0%86%e5%b7%a6%e4%be%a7%e8%8f%9c%e5%8d%95%e5%85%a8%e9%83%a8%e6%94%b9%e6%88%90%e5%9b%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在商品页随机显示一定数量的同类产品</title>
		<link>http://blog.aijue.net/466/%e5%9c%a8%e5%95%86%e5%93%81%e9%a1%b5%e9%9a%8f%e6%9c%ba%e6%98%be%e7%a4%ba%e4%b8%80%e5%ae%9a%e6%95%b0%e9%87%8f%e7%9a%84%e5%90%8c%e7%b1%bb%e4%ba%a7%e5%93%81/</link>
		<comments>http://blog.aijue.net/466/%e5%9c%a8%e5%95%86%e5%93%81%e9%a1%b5%e9%9a%8f%e6%9c%ba%e6%98%be%e7%a4%ba%e4%b8%80%e5%ae%9a%e6%95%b0%e9%87%8f%e7%9a%84%e5%90%8c%e7%b1%bb%e4%ba%a7%e5%93%81/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 12:21:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Zen Cart]]></category>
		<category><![CDATA[同类产品]]></category>
		<category><![CDATA[商品页]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=466</guid>
		<description><![CDATA[1, 创建一个新文件 随意命名 没重复就行 例如：tpl_product_info_similar.php 复制该文件到includes\templates\你的模板\templates\目录下 打开该文件，把以下代码复制进去并保存 Related Products]]></description>
			<content:encoded><![CDATA[<p>1, 创建一个新文件 随意命名 没重复就行  例如：tpl_product_info_similar.php<br />
复制该文件到includes\templates\你的模板\templates\目录下<br />
打开该文件，把以下代码复制进去并保存<br />
<span id="more-466"></span><br />
<code></p>
<div class="centerBoxWrapper" id="similar_product">
<h2 class="centerBoxHeading">Related Products</h2>
<ul>
<?php</p>
<p>$products_id = (int)$_GET['products_id'];</p>
<p>    $flash_page_id_con = array();<br />
    $flash_page_images_con = array();<br />
    $flash_page_price_con = array();<br />
    $flash_page_name_con = array();</p>
<p>    $flash_page_query = "select p.products_id,p.products_image,pd.products_name from " . TABLE_PRODUCTS ." p, ". TABLE_PRODUCTS_DESCRIPTION . " pd where p.`products_id`=pd.`products_id` AND pd.`language_id` = '" . (int)$_SESSION['languages_id'] . "' AND p.`master_categories_id` = " . zen_get_products_category_id($products_id) . " ORDER BY rand() limit 12";<br />
    $flash_page = $db->Execute($flash_page_query);<br />
    while(!$flash_page->EOF){<br />
        $flash_page_items[] = $flash_page->fields;<br />
        $flash_page_id_con[]    = $flash_page->fields['products_id'];<br />
        $flash_page_images_src = is_int(strpos($flash_page->fields['products_image'],','))? substr($flash_page->fields['products_image'],0,strpos($flash_page->fields['products_image'],',')):$flash_page->fields['products_image'];<br />
        $flash_page_images_con[]    = '"'.(zen_not_null($flash_page->fields['products_image']) ? $flash_page_images_src : PRODUCTS_IMAGE_NO_IMAGE ).'"';<br />
        $flash_page_price_con[]    = '"'.$currencies->display_price(zen_get_products_base_price($flash_page->fields['products_id']),zen_get_tax_rate($product_check->fields['products_tax_class_id'])).'"';<br />
        $flash_page_name_con[]    = '"'.zen_output_string(zen_get_products_name($flash_page->fields['products_id'])).'"';<br />
        $flash_page->MoveNext();<br />
    }</p>
<p>    $flash_page_id = implode(",", $flash_page_id_con);<br />
    $flash_page_images = implode(",", $flash_page_images_con);<br />
    $flash_page_price = implode(",", $flash_page_price_con);<br />
    $flash_page_name = implode(",", $flash_page_name_con);<br />
    $flash_page_display_num    = $flash_page->RecordCount();<br />
?></p>
<p><?php for($i = 0; $i< $flash_page_display_num ; $i++){?></p>
<li id="li<?php echo $i;?>" style="display:block;float:left;padding-left:10px;width:22%;"><br />
<a href="<?php echo zen_href_link(zen_get_info_page($flash_page_items[$i]['products_id']), 'products_id=' . $flash_page_items[$i]['products_id']);?>"><?php echo zen_image(DIR_WS_IMAGES . $flash_page_items[$i]['products_image'], $flash_page_items[$i]['products_name'], IMAGE_FEATURED_PRODUCTS_LISTING_WIDTH, IMAGE_FEATURED_PRODUCTS_LISTING_HEIGHT); ?></a>
<p style="text-align:center;"><a href="<?php echo zen_href_link(zen_get_info_page($flash_page_items[$i]['products_id']), 'products_id=' . $flash_page_items[$i]['products_id']);?>"><?php echo $flash_page_items[$i]['products_name']; ?></a><br /><strong id="cell_price<?php echo $i?>" class="red"><?php echo $currencies->display_price((zen_get_products_base_price($flash_page_items[$i]['products_id']) == 0 ? zen_get_products_sample_price($flash_page_items[$i]['products_id']): zen_get_products_base_price($flash_page_items[$i]['products_id'])),zen_get_tax_rate($product_check->fields['products_tax_class_id'])); ?></strong></p>
</li>
<p><?php<br />
//print_r($flash_page_items[$i]);<br />
}<br />
?>
</ul>
</div>
<p></code></p>
<p>2，找到includes\templates\你的模板\templates\tpl_product_info_display.php文件<br />
在相应的位置加上以下代码：<br />
<code><?php require($template->get_template_dir('你创建的文件tpl_product_info_similar.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/你创建的文件tpl_product_info_similar.php'); ?></code></p>
<p>一般可以加到<code><?php require($template->get_template_dir('tpl_modules_also_purchased_products.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_modules_also_purchased_products.php');?></code>的上面或下面</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/466/%e5%9c%a8%e5%95%86%e5%93%81%e9%a1%b5%e9%9a%8f%e6%9c%ba%e6%98%be%e7%a4%ba%e4%b8%80%e5%ae%9a%e6%95%b0%e9%87%8f%e7%9a%84%e5%90%8c%e7%b1%bb%e4%ba%a7%e5%93%81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZenCart源代码的思想笔记</title>
		<link>http://blog.aijue.net/464/zencart%e6%ba%90%e4%bb%a3%e7%a0%81%e7%9a%84%e6%80%9d%e6%83%b3%e7%ac%94%e8%ae%b0/</link>
		<comments>http://blog.aijue.net/464/zencart%e6%ba%90%e4%bb%a3%e7%a0%81%e7%9a%84%e6%80%9d%e6%83%b3%e7%ac%94%e8%ae%b0/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 12:11:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Zen Cart]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=464</guid>
		<description><![CDATA[阅读代码笔记: 1\newimg imgedit等值是提交表单对应的表单值. 2\初步判断,dmz_cache的图片也是这个ih组件来控制来生成. 3\所有图片的操作,都是由这个image handles模块来控制,而那个includes的下面的configure.php都是一个路径变量的设置,以及数据库连接参数的设置. 4\include下面的class 以及Fuction都是一些常用操作功能的设置.包括.图片一部份节能处理操作. 5\图片上传调用的类是includes/class下面的upload.php类文件. 6\阅读数据库,熟悉数据表,特别是数据表名以数据字段,熟悉之,更方便读懂源代码! 7\刚刚发现,俺一直疑惑看源代码里的SQL语句时,总找不到执行操作的表.原来是SQL语句中都加了前缀,例如table_tablename 等.正克确而实际的数据名是tablename. 现在问题就是仍然搞明,他们文件是如何调用与转移的?明白这点,就好写代码? 8\经过测试,现在已经解决图片复制其它目录的问题.而且经过观察,相应的img录,dmz_cache目录也可以看到生成的缓存图片.感觉工作已经完成一大半.只余下最后一步,就是将生成的加水印的图片放到本地网站的images目录下面,方便以后查询调用.并且,要判断,本地有的,就从本地但读取,本地没有的,才从远程的图片目录调用.是事情就这样简单吗? 9\那么俺应该再精读源代码,如果以前是走马观花地阅读,是大概级阅读,那么现在就是代码级阅读.那就先从Fuction,再读class.再读ih2模块. 10\ 阿mark说要改变那些加密过的字符为自已定制的字符,这个比较难实现.因为MD5加密的字符都是随机的.不能让MD5加密的字符完全符合自已的要求.除非取消MD5加密.而将后缀名改为按提交时间或者按产品目录分类来定义吧. 11\ Zen Cart是基于面向对象,也就是OOP来开发的.刚刚发觉这种写法的一样好处,就是代码比较精练,没有冗余代码设置. 12\其实Zen Cart的源代码也不是太难阅读,只要细心些,时间充裕些.基本上都可以读懂.只要能读懂,就基本知道在哪里改.如何修改. 13\不要对长版面的代码感到烦恼.就当他是一些书本来读就行.不要只着眼于那些短版面的代码. 14\阅读代码,情愿读慢些,都要尽量读懂它.不要因为看不进去,就走马观花看.这样未必浪费时间. 15\Zen Cart的代码还有好处,就是注解详尽而清晰,这样的代码风格更容易方便别人读懂! 16\其实,主要通过几天的接触,对Zen Cart的源代码有所熟悉,消除了原来那种陌生感!那么以后阅读与修改,就方便好多.也容易得多. 17\那么现在就要考虑写成一个Fuction,.就是,判断,判断本地有那个图片文件的.就读取本地,没有的,就要调用远程图片服务器? 18\积极开动脑筋,根据需求/要求,去构筑与理清思路,然后根据思路去写伪代码,然后再形成真实的代码. 19\如果之前俺考虑与分析得是后台图片提交的路径的设置.那么现在就要考虑与分析图片获取与调用的代码,看他们的图片调用机制是什么的? 20\图片上传时候可能要加个判断,例如图片重复上传时候,但是这个好像不重要.现在主要要考虑的是图片调用时候.判断图片调用时候什么时候从本地读取, 什么时候从图片服务器调用.那么本地的的图片又是从那里来呢.从远程图片服务器来.不是说,先尝试从服务器读取,本地目录没有,才从远程的图片服务器调用.并放到本地images目录…俺相信图片调用时候,程式应该已经相关判断机制.那么在这个判断机制加强一下.应该可以. 21\动手写代码之前,一定要理清思路,思路不清.很难编码的. 22\FUNCTION的作用就是,输入一两个变量,就能得出某个值或者输出.所以.应这样考虑.将图片的名字输入FUCTION就可以判断出这个图片是在本地已有,还是没有,有的,就直接输出值,没有,就到远程服务器拉取相应的图片. 23\尽快将实现思路圈划出来.不怕代码没写好,就怕思路不清晰,逻辑出错… 24\先得出一个文件名,然后将这个文件名扔入FUCTION里,无论怎样,从FUCTION出来都是一个文件,例如图片. 25\手阅代码,是学好编程的最好方式,所以,无论如何,都要手阅代码.这是学好编程一个保障.一个保证. 26\BMZ_images_handle.class.php就是加水印的CLASS类。要细读。刚想到的，就是俺新加的判断本地目录有没有产品图片的FUNCTION也要应加在这里。 27\俺现在就是要搞清楚，产品在是那里调用图片的。要搞清楚。 28\再次伸明，Zen Cart的代码还是容易看得懂，只要细心看，认真看，基本上都可以看懂，因为都是那些变量，那些语法，那些FUNCTION。还有手册。所以，不需心存畏惧。最重要，多思考，多编写。多测试。思路清晰，逻辑就不会错。逻辑不会错。那么就令代码更不会错。最好就是全部是语法错。所以说，编程思维很重要。思路越清晰。写代码越快。一切都是编程思维来作证！ 29\自定义Function调用及输出值应出实例，刚刚意会到的。或者留意到的。 $color = $this->get_background_rgb($bg);//调用get_background_rgb Function ，然后输入变理$bg ,最后输出$bg 对应的color值。 if (!$color) { $color = [...]]]></description>
			<content:encoded><![CDATA[<p>阅读代码笔记:</p>
<p>1\newimg imgedit等值是提交表单对应的表单值.</p>
<p>2\初步判断,dmz_cache的图片也是这个ih组件来控制来生成.</p>
<p>3\所有图片的操作,都是由这个image handles模块来控制,而那个includes的下面的configure.php都是一个路径变量的设置,以及数据库连接参数的设置.</p>
<p>4\include下面的class 以及Fuction都是一些常用操作功能的设置.包括.图片一部份节能处理操作.</p>
<p>5\图片上传调用的类是includes/class下面的upload.php类文件.</p>
<p>6\阅读数据库,熟悉数据表,特别是数据表名以数据字段,熟悉之,更方便读懂源代码!</p>
<p>7\刚刚发现,俺一直疑惑看源代码里的SQL语句时,总找不到执行操作的表.原来是SQL语句中都加了前缀,例如table_tablename 等.正克确而实际的数据名是tablename.<br />
现在问题就是仍然搞明,他们文件是如何调用与转移的?明白这点,就好写代码?</p>
<p>8\经过测试,现在已经解决图片复制其它目录的问题.而且经过观察,相应的img录,dmz_cache目录也可以看到生成的缓存图片.感觉工作已经完成一大半.只余下最后一步,就是将生成的加水印的图片放到本地网站的images目录下面,方便以后查询调用.并且,要判断,本地有的,就从本地但读取,本地没有的,才从远程的图片目录调用.是事情就这样简单吗?</p>
<p>9\那么俺应该再精读源代码,如果以前是走马观花地阅读,是大概级阅读,那么现在就是代码级阅读.那就先从Fuction,再读class.再读ih2模块.<br />
10\ 阿mark说要改变那些加密过的字符为自已定制的字符,这个比较难实现.因为MD5加密的字符都是随机的.不能让MD5加密的字符完全符合自已的要求.除非取消MD5加密.而将后缀名改为按提交时间或者按产品目录分类来定义吧.<br />
11\ Zen Cart是基于面向对象,也就是OOP来开发的.刚刚发觉这种写法的一样好处,就是代码比较精练,没有冗余代码设置.<br />
<span id="more-464"></span><br />
12\其实Zen Cart的源代码也不是太难阅读,只要细心些,时间充裕些.基本上都可以读懂.只要能读懂,就基本知道在哪里改.如何修改.<br />
13\不要对长版面的代码感到烦恼.就当他是一些书本来读就行.不要只着眼于那些短版面的代码.<br />
14\阅读代码,情愿读慢些,都要尽量读懂它.不要因为看不进去,就走马观花看.这样未必浪费时间.<br />
15\Zen Cart的代码还有好处,就是注解详尽而清晰,这样的代码风格更容易方便别人读懂!<br />
16\其实,主要通过几天的接触,对Zen Cart的源代码有所熟悉,消除了原来那种陌生感!那么以后阅读与修改,就方便好多.也容易得多.<br />
17\那么现在就要考虑写成一个Fuction,.就是,判断,判断本地有那个图片文件的.就读取本地,没有的,就要调用远程图片服务器?<br />
18\积极开动脑筋,根据需求/要求,去构筑与理清思路,然后根据思路去写伪代码,然后再形成真实的代码.<br />
19\如果之前俺考虑与分析得是后台图片提交的路径的设置.那么现在就要考虑与分析图片获取与调用的代码,看他们的图片调用机制是什么的?<br />
20\图片上传时候可能要加个判断,例如图片重复上传时候,但是这个好像不重要.现在主要要考虑的是图片调用时候.判断图片调用时候什么时候从本地读取, 什么时候从图片服务器调用.那么本地的的图片又是从那里来呢.从远程图片服务器来.不是说,先尝试从服务器读取,本地目录没有,才从远程的图片服务器调用.并放到本地images目录…俺相信图片调用时候,程式应该已经相关判断机制.那么在这个判断机制加强一下.应该可以.<br />
21\动手写代码之前,一定要理清思路,思路不清.很难编码的.<br />
22\FUNCTION的作用就是,输入一两个变量,就能得出某个值或者输出.所以.应这样考虑.将图片的名字输入FUCTION就可以判断出这个图片是在本地已有,还是没有,有的,就直接输出值,没有,就到远程服务器拉取相应的图片.<br />
23\尽快将实现思路圈划出来.不怕代码没写好,就怕思路不清晰,逻辑出错…</p>
<p>24\先得出一个文件名,然后将这个文件名扔入FUCTION里,无论怎样,从FUCTION出来都是一个文件,例如图片.<br />
25\手阅代码,是学好编程的最好方式,所以,无论如何,都要手阅代码.这是学好编程一个保障.一个保证.<br />
26\BMZ_images_handle.class.php就是加水印的CLASS类。要细读。刚想到的，就是俺新加的判断本地目录有没有产品图片的FUNCTION也要应加在这里。<br />
27\俺现在就是要搞清楚，产品在是那里调用图片的。要搞清楚。<br />
28\再次伸明，Zen Cart的代码还是容易看得懂，只要细心看，认真看，基本上都可以看懂，因为都是那些变量，那些语法，那些FUNCTION。还有手册。所以，不需心存畏惧。最重要，多思考，多编写。多测试。思路清晰，逻辑就不会错。逻辑不会错。那么就令代码更不会错。最好就是全部是语法错。所以说，编程思维很重要。思路越清晰。写代码越快。一切都是编程思维来作证！</p>
<p>29\自定义Function调用及输出值应出实例，刚刚意会到的。或者留意到的。<br />
$color = $this->get_background_rgb($bg);//调用get_background_rgb Function ，然后输入变理$bg ,最后输出$bg 对应的color值。<br />
if (!$color) {<br />
$color = $this->get_background_rgb($ihConf['default']['bg']);<br />
$transparent = (strpos($ihConf['default']['bg'], ‘transparent’) !== false);<br />
} else {<br />
$transparent = (strpos($bg, ‘transparent’) !== false);<br />
}<br />
$transparent &#038;= preg_match(’/(\.gif)|(\.png)/i’, $file_ext);</p>
<p>get_background_rgb 的Function如下：<br />
function get_background_rgb($bg) {<br />
$bg = trim(ereg_replace(’transparent’, ”, $bg));<br />
list($red, $green, $blue)= split(’[, :]‘, $bg);<br />
if (preg_match(’/[0-9]+/’, $red.$green.$blue)) {<br />
$red = min(intval($red), 255);<br />
$green = min(intval($green), 255);<br />
$blue = min(intval($blue), 255);<br />
$color = array(’r&#8217;=>$red, ‘g’=>$green, ‘b’=>$blue);<br />
return $color;<br />
} else {<br />
return false;<br />
}<br />
}</p>
<p>30\这个dmz_image_handle.class.php类真的很重要，许多图形处理的Function都在这里调用与起作用。要认真分析与阅读。<br />
31\不要一看到一大堆代码就发恐。不要看到一大堆代码就想往后退。静下心来，认真些，认真看，边看边思考，边分析。读多，想多，写多，就什么问题就没有。所以，不用怕。不有恐惧的。<br />
32\经过昨天的阅读代码与分析。基本上找回编码的感觉。现在就是要多清晰自已的思路。写多些代码，读多些源代码，多借鉴与模似别人的代码写法。。<br />
33\俺写php代码，俺是越来越有感觉啦。继续努力。不怕写错，就怕不敢写。要勇于写。想到那就写到那，边写，边纠正逻辑错误。<br />
34\现在从远程图片服务器取代码那块代码基本上写完，现在就要编写本地判断有没有图片那块，并且这块判断本地有没有图片这块务必在加水印之前起作用！<br />
35、上面说得没错。如果要实现阿MARK的需求，判断本地有没有目录，以及没有就从图片目录器那里取值一样。这些代码务必在加水印之前完成。<br />
36\现在核心代码基本上写完，也就要看一下如何调用。在哪调用。还有，今天下午六点半之前，完成基本编码与置，整合，方便明天作整合测试。<br />
37\刚才搜索一下，发现调用到$DIR_WS_IMAGES 这个变量，在多处调用。要满足需求，要多处修改，而且不能改错。要一个一个来校正来修改。\</p>
<p>38\如果按照昨天阿MARK所说，直接指定图片服务器，就可以，也就比较简单，但是这样要考虑那些缓存图，大中小图的存放问题。<br />
39\本地的images只是充当本地存放图片作用。也就是存放操作者在后台增加的图片的用途，现在，本地IMAGESE取消，也可以说迁移到图片服务器度，那这个IMAGES真的可以取消。不作考虑。因为前台图片显示调用的是BMZ_CMACHE的图片，而对于images下面的large 以及medium目录放在images都可以。<br />
40\昨天查询这个图片调用路径时，发现，如果要新加一个图片链接变量时，要修改的地方很多，并且要小心修改。。。尽快理清这个思路，想清这个问题，这个思路不清。就会一直成为死结。影晌开发进度！<br />
41\问题是做着解决的。而不是想着去解决的。一时想不通，那就按基本思路去做。在做着的时候，边思考边解决。总比一直停在这个问题要好！<br />
42、那个本地IMAGES真的没必要保留。既然决定将图片目录外迁至图片服务器，那就不需考虑本地图片服务器变量。那就按这个思路去做。去处理！<br />
43\初步分析一下，在后台增加新图片时，报错的原因是不能读取远程图片服务器的图片，那么如何才能自由自主地读取远程的图片服务器？难道要将它移到本地图片服务器？<br />
44\刚刚想到，可不可以将上传图像保存到本地某个图像目录，然后，将本地图像目录跟远程的图像目录建立一个镜像。或者，将图片统一上传到远程图像目录，然后在本地建立一个镜像目录？<br />
45、刚刚看到，如果要想列出远程服务器某个目录下的文件，这个好像不可能，除非远程服务器支持目录显示。但这会存在很大的安全风险。。。上月<br />
46\经过跟阿MARK的讨论，那个直接设图片服务器为远程目录不成功。这个思路走不能。跟着想其它方法。<br />
47、阿MARK说数据库已有图片的名称。可以直接调用数据库的图片服务器名称来判断。判断本地有的。就直接调用。判断没有。就从图片服务器目录那里调用。<br />
48.阿MARK的意思就是说改造后台那个UPLOAD功能。在上传时，判断本地有没有那个产品图片，有的话，就直接跑下一步。按平时的流程去跑。如果没有。就调用图片服务器。将相应的图片服务器下的目录调用过来。。。<br />
48、原来俺的思路是对的。只不过后来。俺想偏啦。走不出来啦。。<br />
49\再强调一句。思路要清晰。。需求要清晰。需求与思路都不清晰。很难编出好的程序来。要记住！<br />
50、为增加对这个Zen Cart程序的认识。阅读代码不能只限于那几个常接触的代码。尽可能全部阅读！<br />
51\现在存在什么问题？那就是通过调用数据库的图像名来判断本地有没有相应的图像，如果有，就行，没有就调用图片远程图片服务器的图片。<br />
52、那FUCTION基本写完，但现在就不知在哪里调用它，并且以什么条件来激活它。<br />
53\这个SQL语句怎样设计呢？那就看看需求，需求是要从数据库取出相应的图片名字。。。那么那where 判定语句是怎样写呢？<br />
54\阅读源代码的作用就是在读懂别人写的代码的同时，就是要借签与参考别人的编码写法。必要时，要摘抄与引用别人的代码。这就是阅读源代码的作用之一，至于读过源代码来常握编码者的编程思路，这个要慢慢浸淫，一步一步积累。阅读源代码与阅读别人的文章一样，在理解的基础上，借签别人的写法与文字。甚至摘抄。这个在文人眼中不算是抄袭。所以，要明白，阅读源代码的作用与要根本目的，不要，读了大半天的源代码，还不知要干什么，那就难以交待啦。还有。手册，要常备左右，要常翻。手册的作用是理清与纠正俺知识上的盲点与不足。当然，最重要是要多编码，多测试。多看效果，多从排错中，获取经验与知识！<br />
55\刚跟以前的同事交流沟通过。那些简写字符是数据表的别名，也就是表名的简写。后面是数据表的字段名。这些别名的设定是在数据表里设定的。<br />
56\发觉俺对这个Zen Cart不是不太熟。还有许多源代码没看到。还有许多设置变量都不清楚。这次跟同事沟通过。才发现到俺的不足。所以，决定，这个下午可能要将前后台的INCLUDE下面的源代码阅读一篇。。还有那些CLASS与FUCNTION，都要看一篇。尽量看懂。不懂，就问LEON。。<br />
57\这个Zen Cart/WHOLESALEC程序真是博大精学。非一般开源程序。并不是简简单单就能看懂，要花很多心力。。。。该程序层层调用。环环相扣。。短时间内真的不那么看懂！<br />
58、虽然还有许多源代码没有阅读。但是经过之前的努力，现在阅读源代码已经有很大进步，之前，阅读有点缓慢，现在阅读速度快些。这是好事。这个可以激励自已更好地掌握与精通这个Zen Cart源程序！<br />
59\既然数据库已有图片名字，那么将图片名字从数据库中调用出来，然后判断本地有没有这个图片，没有就从远程图片服务器调用，思路就是这样。。<br />
60、为什么俺一直执着于通过这个upload来触发这个FUCNTION呢？自已可以考虑不用这个FUCTION，可以这样考虑：1、不用这个 UNLOAD命令，直将将这个FUCNTION放置于前台图片调用那差代码中，另外一个思路就是将这个UPLOAD改造，改造成为触发器，也就是说不用直接指定远程服务器变量，改回原来，然后，新增一个变量，好，就这样办！</p>
<p>61\俺享受这种自麻醉，麻木自已，不用让自已那么烦。不用想太多东西！<br />
62、相信自已，相信定能成为编程高手。专心致志，心无旁望。目标一致，就是成为编程高手！<br />
63\$this 只能在class里使用与定义。那么fucntion呢。如何调用呢。从ZENTCART的代码来看！<br />
64\要分清zen_not_null($images)与$zen_not_null[$images]的区别，前者为Fuchtion的值，后者为数组的值，不可以搞混！<br />
65\为什么之前定义的变量在function不起作用呢？全部要直接指定变量。为什么呢？难道。俺还有许多关于class类,Function的理解还不够？？<br />
66\变量只能在Fuction内设置，不能在Fuction外设置？还是这样，如果定义变量，在Fucntion外定义的。要将它定义为全局变量，而不是设置局部变量。如果设成局部变量，那只能在某段过程代码里执行。而且只能执行一次。相反全局变量，就可以在全局调用，并且，多次调用？<br />
67、经过测试。基本上可以断定俺的推测是对的。如果是局部变量，就不能在FUNCTION调用。要再定义。或者将一些常用变量设成一个全局变量，然后调用这个全局变量。就好像现在Zen Cart或许多开源程序一样。会将一些常用的变量，统一写到一个存有全局变量的PHP文件。然后在FUCNTION调用 这个全局变量！<br />
68、这个1值从何而来？？这个1值应该是代表真true的那个1值，如果为0，就是假false的值。<br />
69\俺需要的遍历这个图像目录下面所有图片名，然后判断出这个目录有没有俺要的图片。有就好，没有就连接远程图片服力器来获取！<br />
70、借签与参考微软那个桌面搜索的代码。看它是如何找到match出要查找的文件名的！<br />
71\刚想到的。阅读源代码，分析开源软件的代码的好处，就是，如果要查看某个fuction的具体应用，那就可以用DW打开这个开源软件，并且DW查找相关的Fucntion应用，看看实际应用，必要时，拿来用！<br />
72\以后要吸取教训，在php编写sql语句时，为避免出错，先将sql语句放到phpmyadmin 先实地跑一跑，看有没有语法错误先。再写入php代码。。。这也是一种习惯。<br />
73\为什么function单独执行就可以，放入fuction组就不行。那是。因为$image值没有指定，也可以说是远程服务器没有要下载的图片文件名。所以报错。。<br />
74、或者，俺不需要想得这么复杂。以免将自已搞晕啦。只要能解决问题，解决掉俺的需求就可以。还有。在编码时候，要谨记随时自已思路清晰。以免语入死胡同，走不出来！<br />
75、两个知识盲点，就是if 等判断语句的详累与精确用法。其次，就是就是变量的赋值方法，也就是如何将$a 的值赋给$b??尽快解决这两个知识盲点！<br />
76、开源软件就是有个好处，那就是，俺在编码时，不能确定某个Fucntion的用法，或者不能晚明确某个语法的用法，就可以查找这些开源代码。观察这些编写开源软件的大师的是如何使用这些Fuction以及这些php 语法知识的。并且最终为俺所用。！<br />
77\刚才看了看大师的作品。发觉他们用if也没啥特别，都是用if来判断某个变量的值，或者用fucntion来判断某个变量，或者数组的属性是否符合某个条件或者某种情况，然后，再执行某种操作。没什么特别。那么，俺一直搞不清这个if的判断用法，是不是俺自已搞晕啦。。。想得过于复杂啦？？<br />
78、看来要尽快解决这个变量赋值与以及传值问题，否则，无法将编码继续下去！刚才，经过测试，不可以直接将$a=$b这样来传值。。刚才查了手册，可以考虑用引用赋值变量来代替！<br />
79、if(!$imgsize=”&#8221; &#038;&#038; !$get_imgname=”&#8221;){ 不可以这样写。应该这样写。if(!$imgsize &#038;&#038; !$get_imgname){<br />
80\ 如何将循环输出的变量输成一个字符串变量。那个while Function只是将目录下所有文件都找出来，并且一个一个地显示出来。。。俺在前台看到的输出效果是while不断起作用所至，而不是一个固定字符串变量！！<br />
81、现在有两个问题，变量不能跨Function传递。。还有，就是无法将while 执行输出的每个值弄成一个字符串变量！<br />
82\为什么手工指定文件名就可以下载，并跑完全程呢。。。没有指定就不行呢。俺想程序代码没有问题，语法也应没有问题。问题可能出在从数据库里取出的值方面。。。测试一下，看看，是不是这个问题。。。刚才测试过，好像不关这个图片名字多了个/符的事情。因为。俺直接编辑数据库表，将这个/符去掉，还是报同样的错误。。。可能问题还是在出在源代码方面。<br />
83\为什么测试来测试去都无法显示那两个重要的变量，问题可能是根本就没有执行那Fucntion ，或者说根本没有产生那两个变量，所以，无法进入下一步操作。<br />
84\到底问题出在哪里呢。为什么。改来改去，都是那样的报错呢？为什么无法将其它function产生的变量值无法在其它Function使用呢？？为什么，照理由俺已经将其它function以全局变量的形式来调用。。。那么其它function为何不起作用呢？难道是其它function没有将值传出来给其它Function调用？？<br />
85\问题仍然一样，还是无法得到function的变量值。试过return都不行。。。。那如何取得Fucntion的变量值呢？<br />
86\为何会文件丢失？难道电脑真的中了木马，给删除了一些资料？？<br />
87\基本明白他们的营运方式，他们有一个叫什么博士的外贸系统，应该是叫金博士，其实这个外贸系统也可以叫做CRM系统，至少有这些CRM功能。他们的营运方式。就是他们在外国托管服务器，开设几个外贸网站，为了防止克隆。他们在网站加了功能过滤中国内的IP访问。这些网站其实就是基于Zen Cart二次改造过的商城。而他们有自已的加工生产线。自产自销。将自已的生产的产品摆友商城。对外销售。如果客户想找其它在网城没有展示出来的商品。而且客户发来咨询电邮的话。那就主管，将咨询电邮发给相关跟单或者客服，让他们跟进。本公司没有的商品，就由相关跟单与客服跟进，联络其它商家，或者低买其它商家的产品，然后高价买给外国商家，并且从中盈利，相信，他们整体的盈运方式就是这样。。找天，找一个相熟的客服的咨询。了解，确实这个营运流程。还有。那些客服与跟单还要负责写一些商品英文说明材料与资料！<br />
88\为什么不能执行那段检测文件大小类型的那段Fucntion呢？俺只是加了一些链接代码，就不行。那可能是那段代码执行不正确。所以。出错，报错，而影晌后面代码的执行！<br />
89、根本无法集中注意力。无法集中精神盯着代码？为何这样。长时间盯着代码。眼睛很累。也看不入神。长时间盯着代码。可能会失明！变盲！<br />
90、初步看过俺加的代码。思路是清晰的。流程是对的。逻辑也是对的。那为何会报错。那到底是那里问题？为什么加了这段代码，就提示不能执行检查文件大小类型参数？为什么？照理由俺的思路与想法都应没错。只要每天。没有图像文件。就到远程图片服务器拉回本地。然后再判断？？ </p>
<p>来源:<a href="http://blog.sina.com.cn/s/blog_65cf777d0100i312.html">黑社会</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/464/zencart%e6%ba%90%e4%bb%a3%e7%a0%81%e7%9a%84%e6%80%9d%e6%83%b3%e7%ac%94%e8%ae%b0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Namebench</title>
		<link>http://blog.aijue.net/461/google-namebench/</link>
		<comments>http://blog.aijue.net/461/google-namebench/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 06:47:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[namebench]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=461</guid>
		<description><![CDATA[http://code.google.com/p/namebench/ 与另一款网站测速工具 Pingdom Tools 不同的是，HostTracker 采用分布式的测速方案。通过布置在全球范围内的几十台服务器来测试网站的访问速度，更有针对性和参考性。 相比 Pingdom Tools 强悍的网页元素的加载测试，HostTracker 在这方面没有多少优势。但重要的是它能了解不同网络环境下的访问速度，包括能否成功访问，响应时间，数据传输速度等参数。两款工具结合测试，效果更佳。 此外，HostTracker 支持站外按钮调用，点击右侧工具 “Get button code” 即可配置。允许自定义调用图标和文字信息，非常方便。 官方主页：host-tracker.com]]></description>
			<content:encoded><![CDATA[<p>http://code.google.com/p/namebench/</p>
<p>与另一款网站测速工具 Pingdom Tools 不同的是，HostTracker 采用分布式的测速方案。通过布置在全球范围内的几十台服务器来测试网站的访问速度，更有针对性和参考性。</p>
<p>相比 Pingdom Tools 强悍的网页元素的加载测试，HostTracker 在这方面没有多少优势。但重要的是它能了解不同网络环境下的访问速度，包括能否成功访问，响应时间，数据传输速度等参数。两款工具结合测试，效果更佳。</p>
<p>此外，HostTracker 支持站外按钮调用，点击右侧工具 “Get button code” 即可配置。允许自定义调用图标和文字信息，非常方便。</p>
<p>官方主页：host-tracker.com</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/461/google-namebench/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ecshop收货人信息二次开发</title>
		<link>http://blog.aijue.net/458/ecshop%e6%94%b6%e8%b4%a7%e4%ba%ba%e4%bf%a1%e6%81%af%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91/</link>
		<comments>http://blog.aijue.net/458/ecshop%e6%94%b6%e8%b4%a7%e4%ba%ba%e4%bf%a1%e6%81%af%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 19:08:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[ecshop]]></category>
		<category><![CDATA[收货人]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=458</guid>
		<description><![CDATA[ecshop电子商务系统里面,ecshop收货人信息其实是存在很大缺陷的，ecshop 二次开发的过程中,我们也常常修改ecshop收货人信息.比如卖花的行业,他们需要知道送花人,送花人的电话和送花的确切时间, 首先是在flow.php?step=consignee里面,就是用来增加收货人地址的. 1:首先二次开发修改ecshop数据库 alter table dyh_order_info add column buy_real_name varchar(200), add column buy_real_phone varchar(20) 2:在consignee.lbi中增加 订货人姓名: 订货人电话: 3:ecshop的flow.php中增加以下 ‘buy_real_name’ => empty($_POST['buy_real_name']) ? ” : $_POST['buy_real_name'], ‘buy_real_phone’ => empty($_POST['buy_real_phone']) ? ” : $_POST['buy_real_phone'], 4:在flow.php中的done中，记录订货人信息 5:order_info.htm中显示订货人信息 订货人姓名:]]></description>
			<content:encoded><![CDATA[<p>ecshop电子商务系统里面,ecshop收货人信息其实是存在很大缺陷的，ecshop 二次开发的过程中,我们也常常修改ecshop收货人信息.比如卖花的行业,他们需要知道送花人,送花人的电话和送花的确切时间, 首先是在flow.php?step=consignee里面,就是用来增加收货人地址的.</p>
<p>1:首先二次开发修改ecshop数据库</p>
<p>alter table dyh_order_info add column buy_real_name varchar(200), add column buy_real_phone varchar(20)</p>
<p>2:在consignee.lbi中增加</p>
<tr>
<td bgcolor=”#ffffff”>订货人姓名:</td>
<td bgcolor=”#ffffff”>
<input name=”buy_real_name” type=”text” class=”InputBorder” id=”buy_real_name_{$sn}” value=”{$consignee.buy_real_name|escape}” /></td>
<td bgcolor=”#ffffff”>订货人电话:</td>
<td bgcolor=”#ffffff”>
<input name=”buy_real_phone” type=”text” class=”InputBorder” id=”buy_real_phone_{$sn}” value=”{$consignee.buy_real_phone|escape}” /></td>
</tr>
<p>3:ecshop的flow.php中增加以下</p>
<p>‘buy_real_name’ => empty($_POST['buy_real_name']) ? ” : $_POST['buy_real_name'],</p>
<p>‘buy_real_phone’ => empty($_POST['buy_real_phone']) ? ” : $_POST['buy_real_phone'],</p>
<p>4:在flow.php中的done中，记录订货人信息</p>
<p>5:order_info.htm中显示订货人信息</p>
<tr>
<td>
<div align=”right”><strong>订货人姓名:</strong></div>
</td& gt;</p>
<td><font color=”red”>{$order.buy_real_name|escape}</font></td>
<td>
<div align=”right”><strong>订货人电话:</strong></div>
</td& gt;</p>
<td><font color=”red”>{$order.buy_real_phone|escape}</font></td>
</tr>
<p>通过以上思路和流程，我们就完成了ecshop二次开发收货人插件的制作.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/458/ecshop%e6%94%b6%e8%b4%a7%e4%ba%ba%e4%bf%a1%e6%81%af%e4%ba%8c%e6%ac%a1%e5%bc%80%e5%8f%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>删除IMAGE HANDLER2 SQL</title>
		<link>http://blog.aijue.net/456/%e5%88%a0%e9%99%a4image-handler2-sql/</link>
		<comments>http://blog.aijue.net/456/%e5%88%a0%e9%99%a4image-handler2-sql/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 15:31:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Zen Cart]]></category>
		<category><![CDATA[image handler]]></category>

		<guid isPermaLink="false">http://blog.aijue.net/?p=456</guid>
		<description><![CDATA[DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_MAX_WIDTH'; DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_MAX_HEIGHT'; DELETE FROM configuration WHERE configuration_key = 'SMALL_IMAGE_FILETYPE'; DELETE FROM configuration WHERE configuration_key = 'SMALL_IMAGE_BACKGROUND'; DELETE FROM configuration WHERE configuration_key = 'WATERMARK_SMALL_IMAGES'; DELETE FROM configuration WHERE configuration_key = 'SMALL_IMAGE_QUALITY'; DELETE FROM configuration WHERE configuration_key = 'MEDIUM_IMAGE_FILETYPE'; DELETE FROM configuration WHERE configuration_key = [...]]]></description>
			<content:encoded><![CDATA[<p><code><br />
DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_MAX_WIDTH';<br />
DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_MAX_HEIGHT';<br />
DELETE FROM configuration WHERE configuration_key = 'SMALL_IMAGE_FILETYPE';<br />
DELETE FROM configuration WHERE configuration_key = 'SMALL_IMAGE_BACKGROUND';<br />
DELETE FROM configuration WHERE configuration_key = 'WATERMARK_SMALL_IMAGES';<br />
DELETE FROM configuration WHERE configuration_key = 'SMALL_IMAGE_QUALITY';<br />
DELETE FROM configuration WHERE configuration_key = 'MEDIUM_IMAGE_FILETYPE';<br />
DELETE FROM configuration WHERE configuration_key = 'MEDIUM_IMAGE_BACKGROUND';<br />
DELETE FROM configuration WHERE configuration_key = 'WATERMARK_MEDIUM_IMAGES';<br />
DELETE FROM configuration WHERE configuration_key = 'MEDIUM_IMAGE_QUALITY';<br />
DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_FILETYPE';<br />
DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_BACKGROUND';<br />
DELETE FROM configuration WHERE configuration_key = 'WATERMARK_LARGE_IMAGES';<br />
DELETE FROM configuration WHERE configuration_key = 'LARGE_IMAGE_QUALITY';<br />
DELETE FROM configuration WHERE configuration_key = 'WATERMARK_GRAVITY';<br />
DELETE FROM configuration WHERE configuration_key = 'IMAGE_MANAGER_HANDLER';<br />
DELETE FROM configuration WHERE configuration_key = 'DIR_FS_IMAGE_MAGICK';<br />
DELETE FROM configuration WHERE configuration_key = 'DIR_FS_IMAGE_MAGICK_LIB';<br />
DELETE FROM configuration WHERE configuration_key = 'SHOW_UPLOADED_IMAGES';<br />
DELETE FROM configuration WHERE configuration_key = 'CLONE_IMAGE_DIR_OWNER';<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.aijue.net/456/%e5%88%a0%e9%99%a4image-handler2-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
