2015年9月16日 星期三
我升級joomla1.5 到2.5的方法
。所以我就將1.5版的jos_content這個資料表覆製成j25content(之前要先將原升級產生的j25content資料表備份),然後在phpmyadmin裡將兩個資料表的結構比較,發現jos_content少了幾個欄位,於是我在這個假的jos_content資料表中建立了相對應的欄位。而這樣的改法我總共改了如下幾個資料表:j25content_rating,25content_frontpage,j25redirect_links。
於是進到後台看一下文章,果然全部進來了,(為止我必須將原來在根目錄的檔案拷備到jupgrade裡,這樣自己加進去的文章之相關連結檔才能正常顯示。)但發現原來在1.5版裡發布的文章在2.5版的前台都看不到,仔細一看才發現2.5版的存取分的是1、2、3三級而1.5版的是分0、1、2三級,所以必須將所有文章的access都加1,為此我在phpmyadmin裡,直接用的sql的語法將全部的文章之存取權值加1(網路上查一下相關的語法,不難!)。
接著我想將新舊兩個網站各自獨立,於是我將原資料庫拷備一份另取名稱(此資料庫的存取權限要設定一下,否則之後會無法讀取),而將其中的jos_開頭的資料表都刪除,再將joomla根目錄中的jupgrade目錄移到網站的根目錄裡,再更改其中configuration.php的設定(資料庫與網站路徑)。而再將1.5版舊資料庫中的j25開頭的資料表也都刪除,這樣兩個網站就都可以獨立運作了,至於更細的細節,他日有空再繼續詳述。
joomla1.5升級,基本上一個心態很重要,那就是等!首先將文章選為跳過,其它的東西都可以升級,但升完級之後,將資料庫與程式移到另一個資料來與資料庫,再重新升級一次,而這資只升級文章,其餘的都跳過,而升級文章要等超久的,若可以升級好之後,再將文章的資料表轉移到先前移出的資料庫,這樣或許可以完整完成升級,結果待續!
2012年2月14日 星期二
對joomla 1.5的「聯絡我們」加入recapthca的作法
細節前面已談過,只要真的看懂前面的文章,就一定會的,所以這邊僅就該改的檔案即其改的位置提出:
分別為components/com_contact/views/contact/tmpl/default_form.php
與components/com_contact/controller.php
這兩個檔案,前者是放入
<?php
//底下是發哥自己加入的
?>
<div align="center">請於下列欄位中輸入下圖所見之驗證碼</div>
<div align="right"><?php
require_once('recaptchalib.php');
$publickey = "你的公開鑰匙"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<?php
//以上是哥發自己加入的
?>
後者放入
//
require_once('recaptchalib.php');
$privatekey = "你的私人密鑰";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("你輸入的驗證碼錯誤,請回上一頁再試一次!" .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
}//
前者放在:
<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>
之前而成為:
<?php
//底下是發哥自己加入的
?>
<div align="center">請於下列欄位中輸入下圖所見之驗證碼</div>
<div align="right"><?php
require_once('recaptchalib.php');
$publickey = "你的公開鑰匙"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<?php
//以上是哥發自己加入的
?>
<button class="button validate" type="submit"><?php echo JText::_('Send'); ?></button>
後者放在:
function submit()
{
global $mainframe;// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );$useSecurityImagesInContact = false;
if (file_exists(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php")) {
include(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php");
$useSecurityImagesInContact = $securityImagesInContact;
}
之後,而成為:
function submit()
{
global $mainframe;// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );$useSecurityImagesInContact = false;
if (file_exists(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php")) {
include(JPATH_SITE.DS."administrator".DS."components".DS."com_securityimages".DS."config.securityimages.php");
$useSecurityImagesInContact = $securityImagesInContact;
}
//
require_once('recaptchalib.php');
$privatekey = "你的私人密鑰";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("你輸入的驗證碼錯誤,請回上一頁再試一次!" .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
}//
存檔完即可。
特別再強調recaptchalib.php的路徑必須指對!路徑若錯,找不到檔案的話,一切就沒用了!
2012年2月3日 星期五
從joomla 1.5的jdownloads升級到 joomla2.5 的jdownloads
架設新的joomla2.5系統,其中安裝有for joomla 2.5的jdownloads。
接著進到phpMyadmin打開joomla2.5的資料庫,將j17_jdownloads_為前綴的8個資料表刪除(你的不見得是j17,要看你的系統怎麼設!)。過程如下:
如下圖先選到這8個資料表!
再如下圖選下方的刪除功能!
接著到舊的系統資料庫裡將同屬那8個資料表拷備到新系統資料庫裡並更改為新系統資料庫的前綴!
其做法如下(以jxxxx_jdownloads_cats這個資料表為例,其餘的操作方式一樣!):
首先底我進到我的jos_jdownloads_cats這個資料表,然後選右上角的「操作」選項!
接著在「將資料表複製到(資料庫名.資料資料表名稱):」功能區裡,選擇你要拷備到哪個資料庫(我這裡的目標是exten這個資料庫)?其下的欄位則讓你輸入拷備過去之後的資料表各稱(依我的系統而言,我應該要改為j17_jdownloads_cats),設定好之後,按右下方的「執行」鈕即完成原資料表jos_jdownloads_cats的轉移更名動作了!
剩餘的7個資料表做法也是依照此一方式即可!
這個就完成jdownloads的資料庫升級轉移的動作了。
接著就是把你的joomla 1.5 根目錄裡的jdownloads這個資料夾,整個拷備過去joomla2.5根目錄即可!
這樣就完成jdownloads的轉移升級動作了。
2012年2月2日 星期四
如何升級UDDEIM到2.3版以上
UDDEIM2.3以前的版本要直接升級到2.3版以上者,有點小題,
做法是:
一、先備份你的佈景主題(如果你不是使用內容的佈景主題)
二、備份數據庫(至少前綴為“uddeim”的所有表,可使用phpMyAdmin,你可以複製一個新的名稱,如表jos_uddeim_backup)。
三、使用內部的備份功能,備份您的配置
uddeIM後台 - >維護 - >備份
或
備份配置文件:
/administrator/plugins/com_uddeim/config.class.php
在你安裝2.3以上的版本後進到後台的uddeIM 管理介面裡,會有一行紅色字串:<<完整內容我沒記下來,大致是說你的資料庫還沒更新>>!
接著打開下載的檔案,其中uddeIM_2.6_unzip1st\uddeIM_2.6_unzip1st\README資料夾裡有一個README uddeIM 2.6.txt檔
打開來看,裡面有升級的說明,以下我取該說明檔中的一部份來看:
Update your database tables (go to phpMyAdmin and enter following SQL statements in the SQL box,
this will create the missing fields).You will find a small tutorial in the FAQ (chapter 1.3.x "How can I upgrade uddeIM tables?").
When you upgrade 2.5 to 2.6:
============================
nothing to do
When you upgrade 2.4 to 2.6:
============================
nothing to do
When you upgrade 2.3 to 2.6:
============================
nothing to do
When you upgrade 2.2 to 2.6:
============================
ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;
When you upgrade 2.1 to 2.6:
============================
ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;
When you upgrade 2.0 to 2.6:
============================
ALTER TABLE `jos_uddeim` ADD `systemflag` INT( 1 ) NOT NULL DEFAULT '0' ;
ALTER TABLE `jos_uddeim` ADD INDEX ( `systemflag` ) ;
UPDATE `jos_uddeim` SET `systemflag` = 1 WHERE `systemmessage` != '' OR `systemmessage` IS NOT NULL ;
UPDATE `jos_uddeim` SET `systemflag` = 2 WHERE `fromid` = `toid` ;
ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;
When you upgrade 1.9 to 2.6:
============================
ALTER TABLE `jos_uddeim` ADD `systemflag` INT( 1 ) NOT NULL DEFAULT '0' ;
ALTER TABLE `jos_uddeim` ADD INDEX ( `systemflag` ) ;
UPDATE `jos_uddeim` SET `systemflag` = 1 WHERE `systemmessage` != '' OR `systemmessage` IS NOT NULL ;
UPDATE `jos_uddeim` SET `systemflag` = 2 WHERE `fromid` = `toid` ;
ALTER TABLE `jos_uddeim` ADD `delayed` INT( 1 ) NOT NULL DEFAULT '0' ;
ALTER TABLE `jos_uddeim` ADD INDEX ( `delayed` ) ;
ALTER TABLE `jos_uddeim_emn` ADD `moderated` INT( 1 ) NOT NULL DEFAULT '0' ;
When you upgrade 1.8 to 2.6:
============================
CREATE TABLE IF NOT EXISTS `jos_uddeim_attachments` (
`id` int(10) unsigned NOT NULL auto_increment,
`mid` int(1) NOT NULL default '0',
`tempname` TEXT NOT NULL,
`filename` TEXT NOT NULL,
`fileid` varchar(32) NOT NULL,
`size` int(1) NOT NULL default '0',
`datum` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `mid` (`mid`),
KEY `fileid` (`fileid`),
KEY `datum` (`datum`)
) ENGINE=MyISAM;
在含2.2版本以下的每一個版本,該說明檔中各有教你如何升級該資料庫的方法底下我以2.2版升級為例:
進到phpMyadmin裡進到你的joomla資料庫裡,
點選如下圖中的SQL查詢
在其中貼上從2.2版升級指令成為如下圖之內容,並以滑鼠點選右下角紅色箭頭指示之按鍵
最後會告訴今有多少個檔案受影響,這樣就完成升級的動作了!
2012年1月31日 星期二
joomla 1.5 前台登錄、註冊、忘記密碼、帳號等加入recapthca驗證碼驗證功能的方法
下載recapthca的php資源的方法與申請設recapthca帳號、公鑰、私鑰的方法請自行參閱這篇文章,joomla 1.5後台管理加入recapthca的作法,重複的部份,這裡不再談了!
為joomla 1.5量身訂做的驗證碼驗證套件很多,為何還要辛苦去手動改為recapthca驗證碼,其實最主要還是安全的問題,因為recapthca驗證碼是有專人免費維護更新,所以較沒有必須不斷更新驗證碼的麻煩與被破解的風險。也因此筆者才要做這個更改,再者它也提供無障礙功能!
我們的目標是要在Joomla 1.5裡,在使用者註冊、使用者登入、忘記帳號、忘記密碼等四個頁面裡加入recapthca驗證碼驗證功能。如下圖
要完成這四個目標頁面,主要必須找到Joomla 1.5裡相關檔案,在該檔案中適當的位置加入相關的recapthca驗證碼語法!
其中所謂的相關檔案主要放於下列資料夾裡:
2012年1月22日 星期日
joomla 1.5後台管理加入recapthca的作法
首先到http://code.google.com/intl/zh-TW/apis/recaptcha/docs/php.html,進入其中的reCAPTCHA PHP library,下載recaptcha-php-1.11.zip,然後解壓縮,將其中的recaptchalib.php這個程式上傳複製到你的網站裡(要記住你存放的位置路徑,若要免去麻煩,可以將其拷備在與你以下即將更改的程式之同一個資料夾裡!),
接著在你的joomla 1.5的安裝路徑裡,找到administrator/modules/mod_login裡的mod_login.php這個程式
找到其中表單的部份:
<form action="<?php echo JRoute::_( 'index.php', true, $params->get('usesecure')); ?>" method="post" name="login" id="form-login" style="clear: both;">
<p id="form-login-username">
<label for="modlgn_username"><?php echo JText::_('Username'); ?></label>
<input name="username" id="modlgn_username" type="text" class="inputbox" size="15" />
</p><p id="form-login-password">
.................................................
................................................
................................................
<div class="button_holder">
<div class="button1">
<div class="next">
<a onclick="login.submit();">
<?php echo JText::_( 'Login' ); ?></a></div>
</div>
</div>
<div class="clr"></div>
<input type="submit" style="border: 0; padding: 0; margin: 0; width: 0px; height: 0px;" value="<?php echo JText::_( 'Login' ); ?>" />
<input type="hidden" name="option" value="com_login" />
<input type="hidden" name="task" value="login" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>
然後在適當的位置加入以下語法:
<?php
//底下是發哥自己加入的
?>
<div align="center">請於下列欄位中輸入下圖所見之驗證碼</div>
<div align="right"><?php
require_once('recaptchalib.php');
$publickey = "你的公開鑰匙"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
<?php
//以上是哥發自己加入的
?>
註:其中的你的公開鑰匙改為你在google reCAPTCHA註冊申請的帳密所得到的Public Key資料,而recaptchalib.php的路徑則必須視你的上傳複製的實際路徑位置而調整!
如下圖(在sign up點選之後,會有一些設定步驟,這裡我就不說了!)
其中註冊完後,可以看到如下圖頁面的資料,其中主要是會用到Public Key與Private Key的資料!
若一切正確,改完後,你的後台登入畫面應該就會變成這樣:
但此實雖可以看到畫面,卻還不能直正有作用,因為還沒有作確認頁的設定。
接著我們還要找到administrator/components/com_login路徑下的admin.login.php這個程式。
用文字編輯器打開admin.login.php
找到 function login()這一段(約52行的位置)
function login()
{
//
require_once('recaptchalib.php');
$privatekey = "你的私人密鑰";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
die ("你輸入的驗證碼錯誤,請回上一頁再試一次!" .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
}//
global $mainframe;
// Check for request forgeries
JRequest::checkToken('request') or jexit( 'Invalid Token' );$credentials = array();
在其間加入紅色粗體字所標示的字串,其中的你的私人密鑰改為你在google reCAPTCHA註冊申請的帳密所得到的Private Key資料,而recaptchalib.php的路徑則必須視你的上傳複製的實際路徑位置而調整!
這樣子設定完後,你的就可以使用recapthca來保護你的joomla 1.5後台
2011年1月21日 星期五
使用Windows Live Writer直接離線編輯文章發布在Joomla紹介
寫網誌的人如果有使用過Windows Live Writer的,都對其可以離線編輯文章且加入圖片、影片,附加檔案都是如同用word一樣方便而寫起網誌愛不釋手。
對於這樣方便的軟體,若能也應用在Joomla上的話,那對Joomla的文章編輯者而言豈不是一大福音。尤其對本身是Joomla的網站管理者而言,可以自已規劃完全符合自己用途的網站而對於文章的撰寫發布又多了這樣一個方便有力的助力,那豈不是會更是愛死Joomla!
底下我就來紹介如何能做到用Windows Live Writer直接離線編輯文章再發布到Joomla的方法:
2011年1月20日 星期四
2011年1月19日 星期三
load module into article的使用教學(一)
底下我來介紹一個Joomla外掛load module into article,的用方。
首先,如下圖所示,滑鼠在 擴充套件/模組管理 點一下
我們隨使選一個你要插入文章內的模組,這邊我以 用戶資料 這個模組為例,
google adsense code與Joomla結合的方法(二)
除了在Joomla裡安裝廣告模組與外掛之外,還有沒有其它方法可以在joomla加入google廣告呢?
其實方法還真多,會有很多方法,其實最主要是因為google adsense code,本身不就是一個html語法的字碼,所以只要是能夠在網站裏加入這串字碼,即能在網站上呈現google廣告了!底下我僅以較簡單且不用在外加另何套件的方法來舉例!
首先在模組管理選擇右上角的「新增」
2010年12月21日 星期二
2010年12月18日 星期六
2010年12月14日 星期二
joomla!的CB與Jdownloads元件的版本更新升級的方法!
這兩個元件更新升級極簡單,不需移除舊的版本,只要新的版本直接安裝,即完成更新升級的動作了!
2010年12月7日 星期二
joomla 自製選單元件swmenufree,翻譯完語系檔之後,要進一步設定,才能顯示你要的語系!
若以內定為繁體中文語系且你想它呈現簡體中文設系為例,假設你已自行將簡體中文轉好檔放入適當的資料夾了,但你在簡體joomla環境裡,仍然看到的會是繁體中文字型,這是因為此組件的設計有缺點,此組件無法自動因應joomla語系自動調整呈現同一語系,必須使用者自行在admin/language/裏的default.ini檔裡設定,以文字編輯軟件打開,更改traditional_chinese.php為simplified_chinese.php,即可顯示簡單中文了。
2010年12月5日 星期日
接上一篇文章,已試了,目前的元件如sh404SEF、expose gallery等都前台後自動呈現相關語系了!
joomla語言檔中文化檔名的取名規範,及其遵守之重要性!
先前我在文章裏提到有些語言檔中文化之後,可是元件本身安裝完,卻還是去捉英文的語言檔,以至於必須找到includ語言檔的相關程式,修改其預設的語言(通常是english)而將其改為你自己的語言檔之檔名(若你的語言檔檔名取為taiwan,則改為taiwan),然而這樣實在有違所謂的多國語言元件,因為實在不能讓一般使用者在自行安裝完,即呈現自己該國的語言。今天我發現若本土化的語言檔之檔名取得適當,則可不用再自行進到程式裏去更改設定,至少我在xmap這個元件裏遇到的狀況便是如此。我原先總是將繁體中文的語言檔取名為taiwan(若始英文的語言檔檔名為english),因為總覺得這樣才對應,然而實際用在xmap時,又遇到還是不會自動捉這個語言檔,於是我再將語言檔檔名改為zh-TW,然而程式還是沒捉到。本想進到admin.xmap.php這個程式裏,將其中的這一段的
2010年12月1日 星期三
2010年11月26日 星期五
還有一類joomla中文化的問題與方法!
就像前面文章所提過的,joomla元件的中文化其實有時還是有其必須進一步特殊更改的,因為各個元組件的程式編寫者一開始的規劃不同,所以要達到全面的中文化語系,實在無法用一種方式就能確保全部的元件都可以達到前後台全面的中文化,我現在就再來講一種類型,以著名的元件GroupJive為例,要達到其前台能中文化,是很簡單而標準的,只要將其元件包解壓縮,找到其中language資料夾裏的english.php,將這個語言檔另外拷備成一份檔名為tradiction_chinese.php(檔名也可隨便取,只要這樣較符合通用的習慣,另外還必須注意,若字形編碼不是utf-8者,在做中文翻譯時,務必要轉換成utf-8,才不會到網頁裏看到的中文字變亂碼),然後開始進行翻譯即可。最後再從解壓縮的根目錄裏找到.xml檔,在適當的相對應位置加入(如何做,請看這裏)你新建的檔案及其路徑的一個字串)再壓縮打包成zip檔就可以安裝到joomla(安裝GroupJive之前好像要先安裝CB,否則裝完之後,joomla系統會變全白,先安裝CB,再安裝GroupJive就可以正常運作)。然而安裝完,滑鼠點GroupJive這個元件要進一步設定時,會發現其後台的管理介面仍然完全是英文介面,然而前站已可以正常使用中文介面了,這樣對於一般用戶在前台使用已不成問題。然而對於英文不怎樣的後台管理者,要做適當的設定,可得花一番心力看懂其英文說明,這時想努力找到能在後台將GroupJive語言設定成中文,可是實在是找不到,面對這種類型的元件,只能說元件程式編寫者,不想使其後台的語言成為一個可自動偵測你的joomla內定系統語系而改變其顯示的語系,它就是要你只能用英文的啦!
難而對於我們就是要把它改成中文語系的人而言,要如何改它呢?底下我來說明我的做法: