Thứ Năm, 29 tháng 8, 2013

Component UPGRADE joomla 1.5, 2.5 to 3.1.x

SP UPGRADE from joomla 1.5.x, 2.5.x to 3.1.x
Link download component com_spupgrade_joomla3.1.zip

Thứ Tư, 28 tháng 8, 2013

Menu auto WIDTH 100% CSS only

Mô tả: Bình thường menu sử dụng UL LI để tổ chức. Yêu cầu: cần trình bày menu item dàn đều trên 1 hàng và width 100%.
Có thể làm with %, hoặc javascript. Tuy nhiên không lúc nào cũng đạt được.
Cách xử lý:  dùng CSS display: table, display:table cell
Compatiple: Firefox, Chrome, Safary, IE8++, IE7 (need use display-table.htc).

Link example:  https://docs.google.com/file/d/0B785Epf6q5XlOXlkNlFjdzBxWk0/edit?usp=sharing
Source view:
<!DOCTYPE html>
<html>
<style type="text/css">
#footer_menu {
  display: table; text-align: center; width: 100%;
}
#footer_menu  ul {
  display: table-row; list-style: none; margin: 0; padding: 0;
}
#footer_menu li {
  display: table-cell; border:1px solid red;
}
</style>
<!--[if lte IE 7]>
<style>
#footer_menu {
 -dt-display: table;
 behavior: url(display-table.min.htc);
}
#footer_menu li {
  -dt-display: table-cell;
}
</style>
<![endif]-->

<body>
    <div id="footer_menu">
        <ul>
            <li class="nav_l" style="width:80px;border:1px solid blue;background:#000;"><a href="#">Link</a></li>
            <li class="nav_l"><a href="#">Link</a></li>
            <li class="nav_r"><a href="#">Link</a></li>
            <li class="nav_r"><a href="#">Link</a></li>
            <li class="nav_r"><a href="#">Link</a></li>
            <li class="nav_r"><a href="#">Link</a></li>
        </ul>
    </div>
</body>
</html>

Thứ Ba, 27 tháng 8, 2013

php get first image tag from string

<?php 
preg_match('/(<img[^>]+>)/i', $item['content'], $matches);
echo $matches[0]; 
?>

Thứ Hai, 26 tháng 8, 2013

Turn off error PHP - Joomla

Mô tả: một số vấn đề PHP bị lỗi có thể xuất phát từ nhiều nguyên nhân, nhưng mục tiêu cần tắt hiển thị warning không cần thiết.
Phương pháp 1: Tắt trực tiếp trong PHP.ini
display_errors Off
Phương pháp 2: Tắt trong joomla theo hình ảnh
Phương pháp 3: Tắt warning bằng .htaccess
Thêm vào đầu file 
ini_set('display_errors','off');
Phương pháp 4: Tắt wanrning bằng index.php
Trong file index.php thêm dòng:
ini_set('display_errors','off');


Chủ Nhật, 25 tháng 8, 2013

Bảo mật JOOMLA

1. Mật khẩu phức tạp: ko đặt admin, admin123, 123456, ... những tên dễ đoán - những mật khẩu dễ đoán đều nằm trong danh sách quét tự động của hacker.
2. Cập nhật phiên bản mới nhất- tránh lỗ hổng do chính bản thân joomla gây ra.
3. Thêm mật khẩu cấp 2(ý nói là muốn vào administrator thì qua 1 bước nữa). Dùng KSECURE http://diendan.joomlaviet.vn/threads/bao-ve-thu-muc-administrator-voi-ksecure.704/

QapTcha : jQuery captcha giới thiệu

Giới thiệu:
Bình thường capchar thì rất quen thuộc dùng để chống spam tự động đối với các form.
Theo công nghệ các thiết bị cầm tay cảm ứng, thì capchar có thay đổi 1 chút để phù hợp. Thay vì gõ chữ đó là ... kéo rê để khởi động hoặc xác nhận là có người sử dụng - gọi là QAPTCHAR.
Yêu cầu hệ thống: PHP
Giao diện hiển thị:


Link trang chủ (demo, linkdownload): http://www.myjqueryplugins.com/jquery-plugin/qaptcha
Cách thực hiện: 
1. Load  css + script
<link rel="stylesheet" type="text/css" href="QapTcha.jquery.css" media="screen" />
 
<!-- jQuery files -->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript" src="jquery.ui.touch.js"></script>
<script type="text/javascript" src="QapTcha.jquery.js"></script> 
2. Run script
<script type="text/javascript">
  $(document).ready(function(){
    // Simple call
    $('.QapTcha').QapTcha();
    
    // More complex call
    $('.QapTcha').QapTcha({
      autoSubmit : true,
      autoRevert : true,
      PHPfile : 'path_to_my_php_file/Qaptcha.jquery.php'
    });
  });
</script>

3. Thêm đoạn html vào Form.
<form method="post" action="">
  <fieldset>
    <label>First Name</label> <input type="text" name="firstname" />
    <label>Last Name</label> <input type="text" name="lastname" />
    <div class="clr"></div>
 
    <!-- Add this line in your form -->
    <div class="QapTcha"></div>
 
    <input type="submit" name="submit" value="Submit form" />
  </fieldset>
</form>

Chú ý: cần giữ folder file Root/PHP

Thứ Bảy, 24 tháng 8, 2013

Thêm module JModuleHepler

Mô tả:
Bình thường xử lý Joomla tự động tạo <jdoc:include type="modules" name="left" style="xhtml" />, cấu trúc này không phải lúc nào cũng hoạt động đặc biệt là lúc cần thêm module vào 1 component.
Cách sử dụng:
Sử dụng đoạn code trong mã PHP của component, index.php, module  ... bất cứ ở đâu trong PHP
<?php
    //Module position VM-Category-Top
    jimport( 'joomla.application.module.helper' );
    $module = JModuleHelper::getModules( 'VM-Category-Top' );
    if(count($module)){?>
    <div id="ja-VM-Category-Top">
        <?php
        $attribs['style'] = 'xhtml';
        foreach ($module as $new_module){
            echo JModuleHelper::renderModule($new_module, $attribs);
        }?>      
        <div class="clr"></div>
    </div>
<?php } ?>

Thứ Năm, 22 tháng 8, 2013

HTML Custom Scroll Bar

Mô tả:
Nhiều dự án đối tác yêu cầu custom thanh scroll, mặc định mỗi trình duyệt có scroll riêng và không custom được.
Cách xử lý:   http://baijs.nl/tinyscrollbar/

Hướng dẫn sử dụng: 3 bước
1. Load file script  +
$('#scrollbar').tinyscrollbar({ sizethumb: 15 }); 
2. Cấu trúc content
3. CSS scroll (đây là phần quan trọng để scroll hiển thị có thể dùng hình ảnh hoặc màu sắc để thay đổi).
Download ví dụ: http://baijs.nl/tinyscrollbar/example.zip 
Hình ảnh mẫu: 


Solved: #1146 - Table 'phpmyadmin.pma_recent'

Mô tả:
Khi run phpmyadmin xuất hiện lỗi  #1146 - Table 'phpmyadmin.pma_recent' doesn't exist

Cách xử lý:
Vẫn vào phpmyadmin > import > Browser> choose phpmyadmin\examples\create_tables.sql >open>DO



Joomla body page class, check Homepage

Joomla2.5.x và 3.x
Lấy pageclass theo menu page class để thực hiện style
<?php
  $itemid = JRequest::getVar('Itemid');
  $menu = &JSite::getMenu();
  $active = $menu->getItem($itemid);
  $params = $menu->getParams( $active->id );
  $pageclass = $params->get( 'pageclass_sfx' );
?>
<body id="bd" class="<?php echo $pageclass; ?>">



Check Homepage
<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'This is the front page';
}
?>

Thứ Tư, 21 tháng 8, 2013

PHP tự động Redirect URL

Trong file index.php thêm đoạn code
<?php
header("Location: http://joomla.org/");
exit;
?>

Thứ Ba, 20 tháng 8, 2013

MySQL DUMPER backup và restore dung lượng lớn

Mô tả:
Vấn đề gặp phải khi database lớn, trong quá trình backup và restore vượt quá time out cho phép.
Ảnh hưởng:
Khó khăn trong việc export .sql, và import. Tốn thời gian thực hiện bằng tay.
Giải quyết vấn đề SQL DUMPER được viết bằng PHP: link trang chủ  http://www.mysqldumper.net/ tìm download


Cách Backup
1. Up lên ROOT host
2. Run http://yourdomain.com/mysqldumper (folder đã up lên)
3. Tài khoản đăng nhập vào database (host, user, và password)
4. Run Backup (ở đây được chia làm từng page với timeout cho phép).

Cách Restore
1. Lấy tất cả dữ liệu MysqlDumper đem qua host mới
2. Vào http://yourdomain.com/mysqldumper
3. Đăng nhập tài khoản
4. Restore tự động retore toàn bộ dữ liệu.

Thứ Bảy, 17 tháng 8, 2013

Split file database .sql dung lượng lớn

Nhiều trường hợp website hoạt động dung lượng lớn >100MB, >500MB, >1GB
Quá trình xử lý gặp timeout rất phiền phức
Cách thực hiện split fie .sql thành các file nhỏ và run từng file 1.
Làm bằng tay rất cực, rất may tìm thấy SQLDumpSplitter link download http://www.sqldumpsplitter.com/

Các bước thực hiện:
1. Chọn file .sql
2. Tùy chọn kích cỡ file split
3. Chọn folder chưa các file sau split

Lưu ý: lúc import dữ liệu cần import file database struct .sql trước rồi mới import các file khác.
Quá trình split nếu gặp record lớn thì dung lượng >4MB là chuyện bình thường

Thứ Sáu, 16 tháng 8, 2013

Bảo mật administrator bằng plugin KSECURE

So với nhiều cách bảo mật khác KSECURE đơn giản và gọn nhẹ nhất
Hiện hỗ trợ phiên bản: 2.5 và 3.
Link download http://www.kareebu.com/downloads
Cần đăng ký tài khoản - ko cần kích hoạt, đăng ký xong sẽ download được

DOWNLOAD Phiên bản hỗ trợ joomla 1.5 
https://drive.google.com/file/d/0B785Epf6q5XlRWNXOHNGejhpckE/edit?usp=sharing

Cách thực hiện:
1. Download
2. Setup plugin
3. Vào và bật Plugin
4. Cấu hình Plugin theo 2 cách (HTTP, Compatible)
Enable: Yes
Đặt password: ví dụ 123
HTTP Authentication and (old) : sẽ sử 1 form của APACHE bắt đăng nhập bằng user name và password, user có thể bỏ trống chỉ cần đăng nhập password, sau khi đăng nhập đúng sẽ vào vùng đăng nhập của joomla.
Compatibility mode (nên sử dụng): link vào administrator là: http://your_domain/administrator/?password (http://your_domain/administrator/?123)

Trường hợp quên password (joomla 2.5 trở lên)
Vào phpadmin run query:
SELECT params FROM `jos_extensions` WHERE `type`='plugin' AND `element`='ksecure'
Thì sẽ hiển thị password, lưu ý suffix jos_ có thể chỉnh lại đúng của bạn
 
Trường hợp tắt Plugin (ko vào được administrator joomla 2.5++)
Vào phpadmin run quyery 
UPDATE `jos_extensions` SET  published='0' WHERE `type`='plugin' AND `element`='ksecure'
Chạy query này sẽ tắt plugin và mọi việc trở lại bình thường. 

Thứ Hai, 12 tháng 8, 2013

Test Speed site


1.  http://tools.pingdom.com/fpt/ 

Đây là tool có hiển thị hình ảnh, giao diện dễ nhìn. Thích phần này.
2. http://developers.google.com/speed/pagespeed/insights/
Ưu điểm:  có phần đề nghị cách xử lý.
Giao diện đơn giản - ko trực quan.

Thứ Sáu, 9 tháng 8, 2013

CHMOD trên host bằng FileZilla

Trong trường hợp ko setup được ở server có báo lỗi: ko tạo được file hoặc không di chuyển được file
Link download FTP FileZilla http://sourceforge.net/projects/filezilla/
Thực hiện:
           Chuyển CHMODE 777
Chú ý: Trong trường hợp chuyển qua 777 mà website không hoạt động tiến hành chuyển lại 755 (nguyên nhân host giới hạn phân quyền), tiến hành chụp ảnh màn hình hoặc câu thông báo liên hệ với ISP (nhà cung cấp) kiểm tra.
Thực hiện như hình ảnh:

Thứ Năm, 8 tháng 8, 2013

Nên sử dụng DIV hay Table

Hiện giờ thì chia làm 2 hướng

Đối với website thì dùng div :

Khi thực hiện các đối tác đều yêu cầu như vậy- vì mang tính rõ ràng và dễ hiệu chỉnh trong css.
Yếu tố kế tiếp khi load dữ liệu div load đến đâu hiển thị đến đó ( table thì load hết dữ liệu-> hiển thị).​

Hiện table vẫn được sử dụng đối với Mail template:
Bạn sẽ để ý 1 số mail nhận được có cấu trúc trình bày có hình ảnh, text, image, bên trái phải, footer - đối với mail template phải định hình bằng table (div ko giữ được style trong trường hợp này). Lần đầu đối tác đặt mình làm cái này mình làm div với style inline, và thế là ... được làm lại từ đầu.​

Table vẫn được sử dụng trong nội dung bài viết article content(ko phải template)- ví dụ hình ảnh và nội dung, hiển thị dữ liệu nhiều cột và row như excel thì vẫn sử dụng.​

Đây là điều mình rút được từ làm việc và yêu cầu của đối tác.

Thứ Tư, 7 tháng 8, 2013

Leverage browser caching - Expires


Ngày 07 tháng 08 năm 2013
Khi làm việc với đối tác Switzeland gặp gấn đề  Leverage browser caching
link kiểm tra từ google http://developers.google.com/speed/pagespeed/insights/?url=mydomain.com
Khi nanazy view  Leverage browser caching

Mô tả: cache lưu trữ ở Browser có hạn sử dụng gọi là Expire
Các file sẽ lưu trữ ở Cach Browser có nội dung thuộc loại STATIC (CSS, javascript, media, image, pdf .....)
Yêu cầu của đối tác: các loại này đều phải có thời gian hết hạn EXPIRE.

Cách thực hiện:
Mở file .htaccess (hoặc htaccess.txt) thêm đoạn sau :
Sau khi thêm kiểm tra lại từ link developer google để xem kết quả

# Enable expirations
ExpiresActive On

# Default directive
ExpiresDefault "access plus 1 month"

# My favicon
ExpiresByType image/x-icon "access plus 1 year”

# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"

# CSS
ExpiresByType text/css "access 1 month”

# Javascript
ExpiresByType application/javascript "access plus 1 year"

Thứ Sáu, 2 tháng 8, 2013

mysqlnd cannot connect to MySQL 4.1+ using the old

Lỗi này ghi nhận ngày 02 tháng 08 năm 2013
Khi kết nỗi remote MYSQL Server.
Joomla ko kết nối được - báo liên tục lỗi. Khi sử dụng phpminiadmin.php hiển thị lỗi
Cannot connect to the database because: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

Cách xử lý:
Run QUERY
SET SESSION old_passwords=FALSE; 
SET PASSWORD = PASSWORD('password');