Thứ Tư, 24 tháng 10, 2012

Thay favicon

Nói ra thì thật buồn cười không biết có nên viết hay không vì thay favicon là cơ bản nhất trong việc làm web
Hẩy lục tung thư mục chứa code trong web của bạn lên xem file nào là favicon.ico thì thay nó bằng một *.ico khác. Nếu không tự vẽ thì có thể kiếm trên findicons.com, hoặc kiếm 1 bức ảnh rồi convert nó sang dạng ICO nhớ là cỡ 16x16 nhé.
Mình nói "lục tung" không có nghĩa là bạn clink vào từng thư mục mà là hẩy dùng công cụ tìm kiếm file có sẳn trong windown. Nhấn F2 để gọi công cụ đó ra.
Có thể dùng phần mềm Super Finder hoặc bất kỳ phần mềm quản lý file nào mà bạn đang có. Bạn không biết sử dụng công cụ tìm kiếm thì sao nói đến chuyện tập làm web được!
Chúc bạn thành công

Các bước cấu hình mail cho Joomla


Ở Administration Page, vào Site → Global Configurations → Server → Mail Settings để cấu hình mail cho Joomla


Giải thích:
Mailer: Công cụ gửi mail đang sử dụng cho Website. Có 3 lựa chọn:
PHP Mail Function: Sử dụng hàm mail() sẵn có của PHP để gửi email đi
Sendmail: Sử dụng chương trình gửi mail riêng của server
SMTP Server: Sử dụng máy chủ SMTP riêng để gửi email đi
Mail from: Địa chỉ email sẽ được hiển thị (được hiểu là của người gửi) trong mỗi email gửi đi. Địa chỉ này là tuỳ chọn.
From Name: Tên người gửi hiển thị trong email gửi đi. Tên này là tuỳ chọn và mặc định Joomla lấy tên của Website.
Sendmail Path: đường dẫn (của máy chủ) tới thư mục chứa chương trình gửi mail. Cái này chỉ có tác dụng khi lựa chọn Mailer là Sendmail.
SMTP Authentication: Máy chủ SMTP có yêu cầu xác thực bằng tài khoản đầy đủ hay không. Mục này chỉ sử dụng khi lựa chọn Mailer là SMTP Server.
SMTP Security: Hình thức bảo mật của SMTP Server. Mặc định là None, nếu khác phải hỏi bên quản lý hosting.
SMTP Port: Cổng mạng mà máy chủ SMTP sử dụng
SMTP Username: tên tài khoản email đăng ký với máy chủ SMTP
SMTP Password: mật khẩu tài khoản email đăng ký với máy chủ SMTP
SMTP Host: địa chỉ (domain hoặc IP) của máy chủ SMTP

Bây giờ ta sẽ đi qua ví dụ trong từng trường hợp:

1. Sử dụng PHP Mail Function
Cách này là mặc định của Joomla mà cũng là cách đơn giản nhất. Chỉ cần khai báo Mail From và From Name, các mục khác có thể bỏ qua.
  

2. Sử dụng Sendmail
Cách này sử dụng chương trình gửi mail của chính server đang cài website. Cần khai báo thêm đường dẫn tới chương trình Sendmail của Server. Mặc định trên Linux luôn là usr/sbin/sendmail

3. Sử dụng SMTP Server
Cách này sử dụng máy chủ SMTP riêng để gửi mail. Ta có thể lựa chọn SMTP Server là chính server đang cài website, hoặc SMTP Server bên ngoài (Gmail, SMTP Server khác mà ta biết...)
Để cấu hình cho việc sử dụng chính local SMTP Server, cần tự lập một tài khoản email trên host rồi khai báo thông tin tài khoản cần thiết, mục SMTP Host chọn là localhost, SMTP Port mặc định là 25 (nếu khác phải hỏi bên quản lý hosting):


CẤU HÌNH ĐỂ SỬ DỤNG LOCAL SMTP SERVER
Để cấu hình cho việc sử dụng Gmail là SMTP Server, khai báo tài khoản Gmail đã đăng ký và các thông số khác như sau:



Bảo mật website joomla


Công việc bảo mật cho Website là rất quan trọng để tránh các Hacker có thể xâm nhập, phá hoại hoặc lấy cắp các thông tin quan trọng, thông thường việc này đòi hỏi người Quản trị phải có kiến thức và khả năng mới có thể thực hiện được.

Bài viết này sẽ nêu một số công việc cơ bản cần thiết để tăng cường mức độ bảo mật cho Website Joomla!

1. Sao lưu dữ liệu định kỳ
Đây là công việc cần phải làm thường xuyên, việc sao lưu (Backup) sẽ bao gồm toàn bộ các File của Website và các dữ liệu trong Database. Trong trường hợp Website bị tấn công và ngưng hoạt động thì chỉ cần phục hồi lại (Restore) các File và dữ liệu đã được sao lưu là Website có thể hoạt động lại.
Việc sao lưu dữ liệu trong Database có thể được thực hiện bằng công cụ phpMyAdmin có trong Control Panel của Hosting hoặc bất cứ công cụ Backup nào và toàn bộ các File của Website có thể được tải về máy tính cá nhân thông qua các chương trình FTP.

2. Cập nhật phiên bản Joomla mới nhất
Thường xuyên theo dõi và cập nhật kịp thời các bản sửa lỗi hoặc nâng cấp cho Joomla! để khắc phục các lỗi bảo mật nếu có. Xem các thông báo về phiên bản và cập nhật cho Joomla! tại trang Web http://joomla.org

3. Các thành phần mở rộng (module, component, plugin) 
Một số Website có thể bị tấn công thông qua các lỗi bảo mật nằm trong các thành phần mở rộng được cài đặt thêm từ hãng thứ ba.
Khuyến cáo: Hãy hạn chế tới mức tối đa việc cài đặt các thành phần mở rộng từ hãng thứ ba. Nếu phát hiện các thành phần mở rộng này có lỗi thì phải tiến hành cập nhật bản sửa lỗi nếu có hoặc xóa bỏ khỏi Joomla!

4. Quyền hạn đối với các thư mục
Sau khi cài đặt các thành phần mở rộng, bạn cần thiết lập quyền hạn đối với các thư mục sang chế độ CHMOD 755.
Lưu ý: Nếu quá trình cài đặt các thành phần mở rộng gặp trục trặc bạn cần chuyển các thư mục sau sang CHMOD 777. Khi cài đặt xong lại thiết lập như trên (755 đối với thư mục và 644 đối với file)

5. Quyền hạn đối với các tệp
Thiết lập quyền hạn đối với tất cả các tệp của bạn sang chế độ CHMOD 644.

6. CHMOD 644 tập tin configuration.php
Đây là một điều rất quan trọng. Bạn phải chắc chắn rằng mình đã thiết lập quyền hạn cho tệp "configuration.php" sang CHMOD 644.

7. Bảo mật với .htaccess Bản phát hành mới nhất của Joomla bao gồm cả phiên bản cập nhật cho tệp ".htaccess" để làm giảm thiểu nguy cơ tấn công từ các hacker. Do vậy bạn cần phải truyền tệp .htaccess này tới server của bạn và đổi quyền hạn sang CHMOD 644.

Thanks joomla.edu.vn

Chú thích
Đối tượng:
  • u : user sở hữu file
  • g : group của user trên
  • o : others (khách xem)
Các quyền:
  • 0 : cấm tất cả các quyền
  • 1 : execute
  • 2 : write
  • 3 : execute + write
  • 4 : read
  • 5 : read + execute
  • 6 : read + write
  • 7 : read + write + execute
Do đó 755 nghĩa là:
  • u-7 : read + write + execute
  • g-5 : read + execute
  • o-o : others
trong đó: write: ghi. sửa đổi | read: chỉ đọc xem | execute: thực thi 

Cấm xem vị trí các module trên Template


Theo mặc định, các Website Joomla đều cho phép xem vị trí các module của Template theo dạng đường dẫn

http://domain/index.php?tp=1 hoặc http://domain/?tp=1

VD: http://joomla.org/?tp=1

Để cấm (vô hiệu hóa)  tính năng trên bạn chỉ cần thêm các dòng sau vào file ".htaccess" (được đặt ở thư mục chứa Joomla - cùng mức với file configuration.php)

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} tp=
RewriteRule ^(.*)$ http://thietkejoomla.com/index.php [F,L]

Dòng 1 & 2 nếu có rồi thì thôi.
Thay http://thietkejoomla.com/index.php = link mà các bạn muốn
F: Fobridden (Còn nếu nếu muốn chuyển hướng về trang chủ thì thay F = R: Redirect)
L: Last rule

Đây cũng là cách để chặn lọc và chuyển hướng các chuỗi không mong muốn.

Hosting phải hỗ trợ file ".htaccess" và mod_rewrite phải được bật

Thanks joomla.edu.vn

Cách trình bày trang Homepage (Frontpage)


Homepage trong Joomla! được cài đặt và thể hiện thông qua một thành phần đặc biệt đó là com_frontpage. Do vậy trong Joomla! trang homepage còn được gọi là Front Page. Thông qua trang Front Page bạn có thể trình bày một số cách: dạng blog, dạng kết hợp blog + chia cột... Với những ai mới làm quen với Joomla, các tham số đi kèm trang Frontpage như: leading, intro, colums, links... có thể gây khó khăn. Tuy nhiên hi vọng với một vài bước đơn giản dưới đây bạn hoàn toàn có thể làm chủ Frontpage.
Bước 1: Đăng nhập vào trang quản trị (back-end).
Bước 2: Vào phần quản lý menu
Theo mặc định, trang Homepage được đặt trong "Main Menu". Mở menu Menus --> Main Menu --> chọn "Home" và quan sát các tham số tùy chỉnh bên tay phải (mục "Parameters").

VD bạn thiết lập như hình bên, bạn sẽ có kết quả như dưới đây: 
Lưu ý:
Để quản lý các bài viết của trang FrontPage bạn mở menu "Content" --> "Front Page Manager"
Để có trang Homepage giống như VnExpress (các bài viết được trình bày lần lượt theo các chủ đề) bạn cần tìm và cài đặt một component chẳng hạn như: D4Ezine, iJoomla...

Xem vị trí các module trên template


Để xem vị trí của các module trên template bạn chỉ cần thêm đoạn "?tp=1" hoặc "index.php?tp=1" sau vào phía sau tên domain của bạn.

VD: http://joomla.org?tp=1 (thay 1 bằng số bất kỳ đều được)

Tuy nhiên một số website có tắt tính năng này!

Cấu trúc template, đường dẫn, và Base URL trong Joomla 1.5


Template trong Joomla! 1.5 thường được lưu trong thư mục "\templates" với cấu trúc như sau:

\templates
----------\{tên_template}
------------------------\index.php File chính của template
------------------------\templateDetails.xml Thông tin về template
------------------------\template_thumbnail.png Ảnh chụp template
------------------------\params.ini Các tham số hỗ trợ
------------------------\index.html Chống liệt kê thư mục
------------------------\favicon.ico Biểu tượng nhỏ hiện trong thanh Address
------------------------\CSS\template.css File CSS chính
----------------------------\template_rtl.css Cho các site có chữ đọc từ phải sang trái
------------------------\images Thư mục ảnh dùng cho template
Mở file "index.php" và gõ các dòng mã sau để kiểm tra

Tên template đang dùng

<?php echo $mainframe->getCfg('sitename');?>

Địa chỉ Email của Administrator

<?php echo $mainframe->getCfg('mailfrom');?>

Thư mục chứa template

<?php echo $this->template?>

Base URL

<?php echo JURI::base();?>

Bỏ dòng "Tác giả" / "Ngày đăng" khỏi các bài viết


Bước 1: Đăng nhập vào trang quản trị (back-end)

Bước 2: Thiết lập

Mở menu Content - Article Manager.

 

Nhấn vào nút "Preferences" ở góc trên bên phải.

 

Trong hộp thoại xuất hiện tìm đến mục "Author Name" (tên tác giả), "Created Date and Time" (ngày giờ tạo bài viết), "Modified Date and Time" (ngày giờ chỉnh sửa bài viết) và chọn "Hide" để ẩn, ngược lại chọn "Show".

 

Bỏ dòng chữ "Welcome to the Frontpage"



Bỏ dòng chữ "Welcome to the Frontpage" trong Joomla 1.5

Đăng nhập vào trang quản trị (back-end)

Mở menu chứa Front Page

Mở menu Menus --> Main Menu --> chọn mục Parameters - System bên tay phải.

Tìm dòng "Show Page Title" chọn "No"

 

Bỏ dòng chữ "Welcome to the Frontpage" trong Joomla 1.0.x

Đăng nhập vào trang quản trị (back-end)

VD: http://thietkejoomla.com/administrator

Mở menu chứa Front Page

Mở menu Menus --> Main Menu --> chọn mục Parameters bên tay phải.

Tìm dòng "Page Title" chọn "Hide"

 

Chèn một module bất kỳ vào bài viết


Trên các trang web Joomla, chúng ta thường cho hiển thị các module vào các position (vị trí) đã có sẵn. Chẳng hạn cho hiển thị module quảng cáo Google Adsense vài vị trí left (bên trái), cho hiển thị module tin liên quan vào vị trí right (bên phải), cho hiển thị module tin mới nhất vào vị trí user1, cho hiển thị banner quảng cáo tại vị trí top...

Và do đó nhiều người đã đặt câu hỏi đại loại như:

"Liệu Joomla có thể cho phép chèn module vào bài viết thay vì vào các vị trí đã có sẵn hay không?"
"Làm thế nào để chèn module quảng cáo Google Adsense, module quảng cáo Adbrite, module tin liên quan, module menu... vào bài viết?"
Câu trả lời là: "Joomla hoàn toàn có thể làm được, thậm chí rất nhanh và dễ dàng". Các thao tác thực hiện chỉ gồm các bước sau:

Bước 1: Thêm mới hoặc nhân bản một module mà bạn muốn chèn vào bài viết.

Mở menu Extensions -> Module Manager
Thêm mới module bằng cách nhấn vào nút [New], chọn loại module.
Nếu bạn muốn nhân bản một module đã có sẵn thì nhấn vào nút [Copy].

Bước 2: Mở module mới được tạo thêm hoặc vừa được nhân bản

Mở module mà bạn đã tạo ở bước trên
Nếu bạn nhân bản một module đã có sẵn thì module mới sẽ có tên bắt đầu bằng "Copy of..."

Bước 3: Gán cho module vị trí mới

Tại mục "Postion", thay vì chọn những vị trí đã có sẵn trong danh sách thả xuống chúng ta có thể gõ vào một vị trí mới, chẳng hạn "vi-tri-quang-cao-Adsense" (nên chọn một cái tên bất kỳ khác với những cái đã có trong danh sách)

Bước 4: Mở bài viết mà bạn muốn chèn module

    Mở bài viết mà bạn muốn chèn module, và tại vị trí cần chèn, bạn gõ đoạn mã sau:


Thay "module" bằng tên vị trí mà bạn đã gán cho module cần chèn, chẳng hạn "vi-tri-quang-cao-Adsense" (không có dấu ")

Lưu ý:

Nếu không thấy module xuất hiện trong bài viết thì bạn cần kiểm tra xem plugin_loadmodule đã được bật chưa (vào menu Extensions -> Plugin Manager)

Để điều khiển định dạng của module được chèn mới trong bài viết, bạn có thể vào phần quản lý Plugin (menu Extensions -> Plugin Manager), chọn plugin có tên "Content - Load Module", trong phần tham số bên tay phải, tìm mục "Style" và chọn định dạng muốn xuất ra.


Đừng bao giờ sử dụng các vị trí đã có sẵn như "left", "right", "user1"... vì Joomla sẽ hiện tất cả các module mà trước đó đã được gán cho các vị trí này và chúng ta sẽ khó mà kiểm soát cách chúng hiển thị.

Lỗi mất ký tự tiếng Việt trong tiêu đề Joomla bằng Plugin


Vinaora Vietnamese Alias (VietAlias) là Plugin tạo trường bí danh (Alias) và đường link của bài viết, hoặc của bất kỳ một đối tượng nào khác (menu, category, banner, weblink…) trong Joomla bằng chuỗi tiếng Việt không dấu, chữ thường và phân tách giữa các từ bằng dấu gạch ngang.

VD: Nếu tiêu đề bài viết là: Giới thiệu chung về Trường Đại học Bách Khoa Hà Nội thì bí danh (alias) của nó sẽ là:gioi-thieu-chung-ve-truong-dai-hoc-bach-khoa-ha-noi


Tính năng

  • Mã nguồn mở, hoàn toàn miễn phí
  • Tương thích hoàn toàn với Joomla 2.5, Joomla 1.6/1.7
  • Hỗ trợ tất cả các thành phần mở rộng (extension) được cài đặt thêm từ các hãng thứ ba
  • Xử lý triệt để vấn đề lỗi, mất ký tự (1) trong các đường link, trường bí danh (Alias) của Joomla
  • Tạo các đường link thực sự an toàn (2), thân thiện giúp SEO hiệu quả
  • Cho phép nạp trên tất cả các trang khi soạn thảo (3) hoặc chỉ nạp trên một số trang chuyên biệt (4)
  • Tự động hoàn thiện (5) trường bí danh (Alias) ngay khi gõ phần tiêu đề (Title/Name)
  • Hỗ trợ cả tiếng Việt Unicode dựng sẵn và Unicode tổ hợp (6)
  • Loại bỏ hoàn toàn các ký tự đặc biệt (7)
  • Hỗ trợ cả phần tiền sảnh (front-end) và phần hậu sảnh (back-end) của Joomla
  • Không phụ thuộc vào việc đã cài đặt gói ngôn ngữ Việt Nam hay chưa (8)
  • Được đóng gói trong plugin, nên không gây ảnh hưởng khi nâng cấp Joomla
  • Mã nguồn được nghiên cứu cẩn thận và tối ưu về hiệu suất
  • Tiết kiệm thời gian và công sức nhập liệu

Giải thuật chính khi chuyển đổi tiếng Việt


  • Bước 1: Loại bỏ 5 dấu thanh (huyền, hỏi, ngã, sắc, nặng) nếu có tiếng Việt Unicode tổ hợp
  • Bước 2: Thay thế các ký tự đặc biệt @#$%^&*-_+=… bằng các khoảng trắng
  • Bước 3: Thay thế 11 nguyên âm của tiếng Việt gồm [a|ă|â],[e|ê],i,[o|ơ],[u|ư],y (có hoặc không kèm dấu thanh) bằng 05 nguyên âm tiếng Anh tương ứng a,e,i,o,u,y và phụ âm đ/Đ bằng ký tự d
  • Bước 4: Chuẩn hóa chuỗi ký tự (đảm bảo các ký tự được phép chỉ gồm a-z, 0-9 và dấu gạch ngang -; thay thế các khoảng trắng bằng dấu gạch ngang…)
  • Kết quả đầu ra: Chuỗi ký tự tiếng Việt không dấu, chữ thường, chỉ gồm các chữ cái tiếng Anh a-z, các chữ số từ 0-9 và phân tách giữa các từ bằng dấu gạch ngang.

Lưu ý

Đối với các đường link, trường bí danh (alias) đã có trước khi cài đặt plugin Vinaora VietAlias bạn cần phải tự tay xóa từng trường bí danh và nhân nút ‘Lưu’ (Save) để plugin tạo lại chuỗi ký tự mới thay thế.
Tính năng tự động hoàn thiện bằng Ajax có thể gặp trục trặc nếu bạn đã vô hiệu hóa thư viện Mootools của Joomla.

Chú giải

  • (1): Hàm xử lý chuỗi ký tự Unicode theo mặc định của Joomla làm mất một số ký tự tiếng Việt
  • (2): Lọc bỏ các ký tự không được phép
  • (3): Trang soạn thảo được xác định qua biến HTTP Request $task=edit
  • (4): Các trang chuyên biệt được xác định qua biến HTTP Request $option=com_xyz
  • (5): Sử dụng Ajax + thư viện Mootools của Joomla.
  • (6): Nhiều plugin/tool bỏ quên không xử lý với các chuỗi Unicode tổ hợp.
  • (7): Quá trình loại bỏ vẫn đảm bảo việc thay thế phù hợp khi các dấu phân tách câu (dấu phảy, dấu chấm…) bị đặt sai chính tả.
  • (8): Giải thuật xử lý có thể được đưa vào file vi-VN.localise.php của gói ngôn ngữ tiếng Việt (vi-VN) thay vì phải cài đặt plugin này. Tuy nhiên trong trường hợp người quản trị chưa cài gói ngôn ngữ vi-VN hoặc chọn ngôn ngữ khác làm ngôn ngữ mặc định thay vì vi-VN thì lỗi mất ký tự tiếng Việt vẫn xảy ra.

Thanks: vinaora.com

Lỗi mất ký tự tiếng Việt trong tiêu đề Joomla 1.5 + 2.5

Lỗi mất ký tự tiếng Việt trong tiêu đề Joomla 1.5

Cách khắc phục

Bước 1: Tìm file [Joomla1.5]/libraries/joomla/filter/filteroutput.php
Bước 2: Mở file này bằng trình soạn thảo Notepad++ (miễn phí, nhanh, gọn...).
Bước 3: Save file bằng định dạng UTF-8 Without BOM: cho phép lưu các ký tự UTF-8 và quan trọng là không có ký tự đánh dấu UTF8 ở đầu file. Xem hình để rõ hơn

Bước 4: Tìm đến ~ dòng 87 và chèn thêm 10 dòng mã sau (dòng 88-97):

10 dòng mã cần chèn:

$utf8characters = 'à|a, ả|a, ã|a, á|a, ạ|a, ă|a, ằ|a, ẳ|a, ẵ|a, ắ|a, ặ|a, â|a, ầ|a, ẩ|a, ẫ|a, ấ|a, ậ|a, đ|d, è|e, ẻ|e, ẽ|e, é|e, ẹ|e, ê|e, ề|e, ể|e, ễ|e, ế|e, ệ|e, ì|i, ỉ|i, ĩ|i, í|i, ị|i, ò|o, ỏ|o, õ|o, ó|o, ọ|o, ô|o, ồ|o, ổ|o, ỗ|o, ố|o, ộ|o, ơ|o, ờ|o, ở|o, ỡ|o, ớ|o, ợ|o, ù|u, ủ|u, ũ|u, ú|u, ụ|u, ư|u, ừ|u, ử|u, ữ|u, ứ|u, ự|u, ỳ|y, ỷ|y, ỹ|y, ý|y, ỵ|y, À|A, Ả|A, Ã|A, Á|A, Ạ|A, Ă|A, Ằ|A, Ẳ|A, Ẵ|A, Ắ|A, Ặ|A, Â|A, Ầ|A, Ẩ|A, Ẫ|A, Ấ|A, Ậ|A, Đ|D, È|E, Ẻ|E, Ẽ|E, É|E, Ẹ|E, Ê|E, Ề|E, Ể|E, Ễ|E, Ế|E, Ệ|E, Ì|I, Ỉ|I, Ĩ|I, Í|I, Ị|I, Ò|O, Ỏ|O, Õ|O, Ó|O, Ọ|O, Ô|O, Ồ|O, Ổ|O, Ỗ|O, Ố|O, Ộ|O, Ơ|O, Ờ|O, Ở|O, Ỡ|O, Ớ|O, Ợ|O, Ù|U, Ủ|U, Ũ|U, Ú|U, Ụ|U, Ư|U, Ừ|U, Ử|U, Ữ|U, Ứ|U, Ự|U, Ỳ|Y, Ỷ|Y, Ỹ|Y, Ý|Y, Ỵ|Y, "|, &|';
$replacements = array();
$items = explode(',', $utf8characters);
foreach ($items as $item) {
    @list($src, $dst) = explode('|', trim($item));
    $replacements[trim($src)] = trim($dst);
}
$str = strtr($str, $replacements);

Bước 5: Save file lần cuối và kiểm tra

Cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 2.5
Phiên bản Joomla! 2.5 mặc dù đã có chức năng Unicode Aliases, cho phép hiển thị tiếng Việt có dấu trong Title Alias nhưng vẫn chưa hỗ trợ tiếng Việt không dấu. Sau đây là cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 2.5
Mở tập tin /libraries/joomla/filter/output.php


public static function stringURLSafe($string)
   {
      // remove any '-' from the string since they will be used as concatenaters
      $str = str_replace('-', ' ', $string);
      $lang = JFactory::getLanguage();
      $str = $lang->transliterate($str);
      // Trim white spaces at beginning and end of alias and make lowercase
      $str = trim(JString::strtolower($str));
      // Remove any duplicate whitespace, and ensure all characters are alphanumeric
      $str = preg_replace('/(\s|[^A-Za-z0-9\-])+/', '-', $str);
      // Trim dashes at beginning and end of alias
      $str = trim($str, '-');
      return $str;
   }
 Thay thế bằng:

public static function stringURLSafe($string)
   {
      $trans = array(
      "đ"=>"d","ă"=>"a","â"=>"a","á"=>"a","à"=>"a",
      "ả"=>"a","ã"=>"a","ạ"=>"a",
      "ấ"=>"a","ầ"=>"a","ẩ"=>"a","ẫ"=>"a","ậ"=>"a",
      "ắ"=>"a","ằ"=>"a","ẳ"=>"a","ẵ"=>"a","ặ"=>"a",
      "é"=>"e","è"=>"e","ẻ"=>"e","ẽ"=>"e","ẹ"=>"e",
      "ế"=>"e","ề"=>"e","ể"=>"e","ễ"=>"e","ệ"=>"e",
      "í"=>"i","ì"=>"i","ỉ"=>"i","ĩ"=>"i","ị"=>"i",
      "ư"=>"u","ô"=>"o","ơ"=>"o","ê"=>"e",
      "Ư"=>"u","Ô"=>"o","Ơ"=>"o","Ê"=>"e",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ó"=>"o","ò"=>"o","ỏ"=>"o","õ"=>"o","ọ"=>"o",
      "ớ"=>"o","ờ"=>"o","ở"=>"o","ỡ"=>"o","ợ"=>"o",
      "ố"=>"o","ồ"=>"o","ổ"=>"o","ỗ"=>"o","ộ"=>"o",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ý"=>"y","ỳ"=>"y","ỷ"=>"y","ỹ"=>"y","ỵ"=>"y",
      "Ý"=>"Y","Ỳ"=>"Y","Ỷ"=>"Y","Ỹ"=>"Y","Ỵ"=>"Y",
      "Đ"=>"D","Ă"=>"A","Â"=>"A","Á"=>"A","À"=>"A",
      "Ả"=>"A","Ã"=>"A","Ạ"=>"A",
      "Ấ"=>"A","Ầ"=>"A","Ẩ"=>"A","Ẫ"=>"A","Ậ"=>"A",
      "Ắ"=>"A","Ằ"=>"A","Ẳ"=>"A","Ẵ"=>"A","Ặ"=>"A",
      "É"=>"E","È"=>"E","Ẻ"=>"E","Ẽ"=>"E","Ẹ"=>"E",
      "Ế"=>"E","Ề"=>"E","Ể"=>"E","Ễ"=>"E","Ệ"=>"E",
      "Í"=>"I","Ì"=>"I","Ỉ"=>"I","Ĩ"=>"I","Ị"=>"I",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",
      "Ó"=>"O","Ò"=>"O","Ỏ"=>"O","Õ"=>"O","Ọ"=>"O",
      "Ớ"=>"O","Ờ"=>"O","Ở"=>"O","Ỡ"=>"O","Ợ"=>"O",
      "Ố"=>"O","Ồ"=>"O","Ổ"=>"O","Ỗ"=>"O","Ộ"=>"O",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",);
   
        //remove any '-' from the string they will be used as concatonater
        $str = str_replace('-', ' ', $string);
      $str = strtr($str, $trans);
        $lang =& JFactory::getLanguage();
        $str = $lang->transliterate($str);
        // remove any duplicate whitespace, and ensure all characters are alphanumeric
        $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
       // lowercase and trim
       $str = trim(strtolower($str));
       return $str;
      }
Sau khi sửa xong thì save file này lại. Việc sửa đổi này chỉ có hiệu lực đối với các bài viết từ nay về sau mà thôi, còn các bài viết trước vẫn còn bị lỗi. Bạn phải mở (Edit) bài viết ra và xóa hết toàn bộ ký tự trong ô Alias (nằm ngay phía dưới Title) và nhấn Save (hoặc Apply) các lỗi sẽ được tự động sửa.

Lưu ý: Phải chọn Unicode Aliases là No trong phần thiết lập cấu hình SEO/SEF của joomla! 2.5

 file "output.php"

<?php
/**
 * @package     Joomla.Platform
 * @subpackage  Filter
 *
 * @copyright   Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */
defined('JPATH_PLATFORM') or die;
/**
 * JFilterOutput
 *
 * @package     Joomla.Platform
 * @subpackage  Filter
 * @since       11.1
 */
class JFilterOutput
{
/**
* Makes an object safe to display in forms
*
* Object parameters that are non-string, array, object or start with underscore
* will be converted
*
* @param   object   &$mixed        An object to be parsed
* @param   integer  $quote_style   The optional quote style for the htmlspecialchars function
* @param   mixed    $exclude_keys  An optional string single field name or array of field names not
*                                  to be parsed (eg, for a textarea)
*
* @return  void
*
* @since   11.1
*/
public static function objectHTMLSafe(&$mixed, $quote_style = ENT_QUOTES, $exclude_keys = '')
{
if (is_object($mixed))
{
foreach (get_object_vars($mixed) as $k => $v)
{
if (is_array($v) || is_object($v) || $v == null || substr($k, 1, 1) == '_')
{
continue;
}
if (is_string($exclude_keys) && $k == $exclude_keys)
{
continue;
}
elseif (is_array($exclude_keys) && in_array($k, $exclude_keys))
{
continue;
}
$mixed->$k = htmlspecialchars($v, $quote_style, 'UTF-8');
}
}
}
/**
* This method processes a string and replaces all instances of & with &amp; in links only.
*
* @param   string  $input  String to process
*
* @return  string  Processed string
*
* @since   11.1
*/
public static function linkXHTMLSafe($input)
{
$regex = 'href="([^"]*(&(amp;){0})[^"]*)*?"';
return preg_replace_callback("#$regex#i", array('JFilterOutput', '_ampReplaceCallback'), $input);
}
/**
* This method processes a string and replaces all accented UTF-8 characters by unaccented
* ASCII-7 "equivalents", whitespaces are replaced by hyphens and the string is lowercase.
*
* @param   string  $string  String to process
*
* @return  string  Processed string
*
* @since   11.1
*/
public static function stringURLSafe($string)
{
      $trans = array(
      "đ"=>"d","ă"=>"a","â"=>"a","á"=>"a","à"=>"a",
      "ả"=>"a","ã"=>"a","ạ"=>"a",
      "ấ"=>"a","ầ"=>"a","ẩ"=>"a","ẫ"=>"a","ậ"=>"a",
      "ắ"=>"a","ằ"=>"a","ẳ"=>"a","ẵ"=>"a","ặ"=>"a",
      "é"=>"e","è"=>"e","ẻ"=>"e","ẽ"=>"e","ẹ"=>"e",
      "ế"=>"e","ề"=>"e","ể"=>"e","ễ"=>"e","ệ"=>"e",
      "í"=>"i","ì"=>"i","ỉ"=>"i","ĩ"=>"i","ị"=>"i",
      "ư"=>"u","ô"=>"o","ơ"=>"o","ê"=>"e",
      "Ư"=>"u","Ô"=>"o","Ơ"=>"o","Ê"=>"e",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ó"=>"o","ò"=>"o","ỏ"=>"o","õ"=>"o","ọ"=>"o",
      "ớ"=>"o","ờ"=>"o","ở"=>"o","ỡ"=>"o","ợ"=>"o",
      "ố"=>"o","ồ"=>"o","ổ"=>"o","ỗ"=>"o","ộ"=>"o",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ý"=>"y","ỳ"=>"y","ỷ"=>"y","ỹ"=>"y","ỵ"=>"y",
      "Ý"=>"Y","Ỳ"=>"Y","Ỷ"=>"Y","Ỹ"=>"Y","Ỵ"=>"Y",
      "Đ"=>"D","Ă"=>"A","Â"=>"A","Á"=>"A","À"=>"A",
      "Ả"=>"A","Ã"=>"A","Ạ"=>"A",
      "Ấ"=>"A","Ầ"=>"A","Ẩ"=>"A","Ẫ"=>"A","Ậ"=>"A",
      "Ắ"=>"A","Ằ"=>"A","Ẳ"=>"A","Ẵ"=>"A","Ặ"=>"A",
      "É"=>"E","È"=>"E","Ẻ"=>"E","Ẽ"=>"E","Ẹ"=>"E",
      "Ế"=>"E","Ề"=>"E","Ể"=>"E","Ễ"=>"E","Ệ"=>"E",
      "Í"=>"I","Ì"=>"I","Ỉ"=>"I","Ĩ"=>"I","Ị"=>"I",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",
      "Ó"=>"O","Ò"=>"O","Ỏ"=>"O","Õ"=>"O","Ọ"=>"O",
      "Ớ"=>"O","Ờ"=>"O","Ở"=>"O","Ỡ"=>"O","Ợ"=>"O",
      "Ố"=>"O","Ồ"=>"O","Ổ"=>"O","Ỗ"=>"O","Ộ"=>"O",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",);
   
        //remove any '-' from the string they will be used as concatonater
        $str = str_replace('-', ' ', $string);
$str = strtr($str, $trans);
        $lang =& JFactory::getLanguage();
        $str = $lang->transliterate($str);
        // remove any duplicate whitespace, and ensure all characters are alphanumeric
        $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
       // lowercase and trim
       $str = trim(strtolower($str));
       return $str;
      }
/**
* This method implements unicode slugs instead of transliteration.
*
* @param   string  $string  String to process
*
* @return  string  Processed string
*
* @since   11.1
*/
public static function stringURLUnicodeSlug($string)
{
// Replace double byte whitespaces by single byte (East Asian languages)
$str = preg_replace('/\xE3\x80\x80/', ' ', $string);
// Remove any '-' from the string as they will be used as concatenator.
// Would be great to let the spaces in but only Firefox is friendly with this
$str = str_replace('-', ' ', $str);
// Replace forbidden characters by whitespaces
$str = preg_replace('#[:\#\*"@+=;!><&\.%()\]\/\'\\\\|\[]#', "\x20", $str);
// Delete all '?'
$str = str_replace('?', '', $str);
// Trim white spaces at beginning and end of alias and make lowercase
$str = trim(JString::strtolower($str));
// Remove any duplicate whitespace and replace whitespaces by hyphens
$str = preg_replace('#\x20+#', '-', $str);
return $str;
}
/**
* Replaces &amp; with & for XHTML compliance
*
* @param   string  $text  Text to process
*
* @return  string  Processed string.
*
* @since   11.1
*
* @todo There must be a better way???
*/
public static function ampReplace($text)
{
$text = str_replace('&&', '*--*', $text);
$text = str_replace('&#', '*-*', $text);
$text = str_replace('&amp;', '&', $text);
$text = preg_replace('|&(?![\w]+;)|', '&amp;', $text);
$text = str_replace('*-*', '&#', $text);
$text = str_replace('*--*', '&&', $text);
return $text;
}
/**
* Callback method for replacing & with &amp; in a string
*
* @param   string  $m  String to process
*
* @return  string  Replaced string
*
* @since   11.1
*/
public static function _ampReplaceCallback($m)
{
$rx = '&(?!amp;)';
return preg_replace('#' . $rx . '#', '&amp;', $m[0]);
}
/**
* Cleans text of all formatting and scripting code
*
* @param   string  &$text  Text to clean
*
* @return  string  Cleaned text.
*
* @since   11.1
*/
public static function cleanText(&$text)
{
$text = preg_replace("'<script[^>]*>.*?</script>'si", '', $text);
$text = preg_replace('/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', '\2 (\1)', $text);
$text = preg_replace('/<!--.+?-->/', '', $text);
$text = preg_replace('/{.+?}/', '', $text);
$text = preg_replace('/&nbsp;/', ' ', $text);
$text = preg_replace('/&amp;/', ' ', $text);
$text = preg_replace('/&quot;/', ' ', $text);
$text = strip_tags($text);
$text = htmlspecialchars($text, ENT_COMPAT, 'UTF-8');
return $text;
}
/**
* Strip img-tags from string
*
* @param   string  $string  Sting to be cleaned.
*
* @return  string  Cleaned string
*
* @since   11.1
*/
public static function stripImages($string)
{
return preg_replace('#(<[/]?img.*>)#U', '', $string);
}
}


Nếu muốn sử dụng plugin có sẳn thì xem tiếp bài này

Hack com Search: Bỏ chức năng sắp thứ tự


Để bỏ tính năng sắp thứ tự khi tìm kiếm (một tính năng ít được sử dụng và không cần thiết) của Joomla! bạn chỉ cần vài phút thực hiện theo hướng dẫn dưới đây:

Đối với Joomla 1.5.x

Tìm file "\components\com_search\views\search\tmpl\default_form.php" --> dòng ~23 và cho đoạn mã vào cặp thẻ chú thích
<!--
    <tr>
        <td colspan="3">
            <label for="ordering">
                <?php echo JText::_( 'Ordering' );?>:
            </label>
            <?php echo $this->lists['ordering'];?>
        </td>
    </tr>
-->
 Đối với Joomla 1.0.x

Tìm file "\components\com_search\search.html.php" --> dòng ~59 và cho đoạn mã vào cặp thẻ chú thích
<!--
    <tr>
        <td colspan="3">
            <label for="search_ordering">
                <?php echo _CMN_ORDERING;?>:
            </label>
            <?php echo $lists['ordering'];?>
        </td>
    </tr>
-->

Cách xác định đường dẫn tuyệt đối {absolute_path}


Trong một số trường hợp cần xác định đường dẫn tuyệt đối tới một thư mục hoặc file nào đó. Chẳng hạn, phải xác định đường dẫn tuyệt đối tới thư mục chứa Joomla trên Website của bạn để điền vào thông số $mosConfig_absolute_path (Joomla 1.0.x) hoặc $absolute_path (Joomla 1.5.x) trong file "configuration.php", bạn có thể làm như sau:

Tạo một file "info.php" nằm cùng mức với file "configuration.php"  có nội dung như sau:

<?php
   $p = getcwd();
   echo $p;
?>
hoặc

<?php
   $p = dirname(__FILE__);
   echo $p;
?>
hoặc

<?php
   phpinfo();
?>
Sau đó mở trình duyệt và gõ vào địa chỉ tới file này.

VD: http://yoursite/info.php, http://thietkejoomla.com/joomla/info.php
Trường hợp sử dụng hàm getcwd(), hoặc dirname(__FILE__) đường dẫn sẽ hiển thị trên màn hình. Còn nếu sử dụng hàm phpinfo() thì tìm thông số SCRIPT_FILENAME để biết đường dẫn tới file info.php nói trên.

Nếu:
SCRIPT_FILENAME = '/home/thietkejoomla/httpdocs/info.php'
thì

// Trong Joomla 1.0.x
$mosConfig_absolute_path = '/home/thietkejoomla/httpdocs';
$mosConfig_cachepath = '/home/thietkejoomla/httpdocs/cache';

// Trong Joomla 1.5.x


var $absolute_path = '/home/thietkejoomla/httpdocs';

var $log_path = '/home/thietkejoomla/httpdocs/logs';

var $tmp_path = '/home/thietkejoomla/httpdocs/tmp';
Thanhks  1 2

Lỗi mất định dạng trong phần "Description" của Docman


Lỗi mất định dạng trong phần "Description" của DOCman xảy ra khi cài đặt phiên bản Joomla 1.5.x và DOCman v1.4.0 RC3 - 2003-2008. Lỗi này khiến cho toàn bộ phần "Description" mất các định dạng HTML như: In đậm, in nghiêng, màu chữ, font chữ, căn chỉnh....

Cách khắc phục:

Tìm đến dòng ~215 của file administrator/components/com_docman/classes/docman_models.class.php và thêm dấu comment //

$this->objFormatData->dmdescription = mosHTML::cleanText($objDBDoc->dmdescription);
Hoặc thay dòng ~215 của file administrator/components/com_docman/classes/docman_models.class.php

mosHTML::cleanText($objDBDoc->dmdescription); 

Lỗi đăng nhập vào Joomla có thể do những nguyên nhân nào?


Một số nguyên nhân

1. Do bộ cài đặt Joomla

Bạn nên cài đặt/nâng cấp lên bản Joomla mới nhất và nhớ backup trước khi thực hiện
Đặt câu hỏi tại http://forum.joomla.org/ hoặc http://www.joomlaviet.org/forum/
2. Do Web Server, Hosting

Hãy chắc chắn rằng Web Server của bạn đang bình thường. Hỏi Hosting xem liệu gần đây họ có cấu hình lại hay nâng cấp, cập nhật, sửa đổi gì không?
Khuyến cáo sử dụng phần mềm Web Server: WAMP hoặc XAMPP (gồm: Apache+MySQL+PHP) nếu bạn đang sử dụng localhost làm Web Serrver
3. Do tường lửa

Hãy chắc chắn rằng phần mềm tường lửa (Norton , ZoneAlarm ...) mà bạn đang sử dụng không gây ảnh hưởng cho Joomla. Hãy thử tắt nó đi.
4. Do trình duyệt

Thử trên các máy khác nhau để kiểm tra xem có phải chỉ mình máy bạn là không vào được.
Xóa tất cả cache và cookie của trình duyệt.
Sử dụng trình duyệt ở chế độ mặc định. Nên tải FireFox 2.0 và chọn cài mới để thử.
5. Gõ sai mật khẩu

Hãy cố gắng nhớ lại mật khẩu mà bạn đã dùng.
Liệu bạn có để bộ gõ tiếng Việt (hoặc một ngoại ngữ khác) trong khi gõ mật khẩu
6. Do gói ngôn ngữ cài đặt

Có thể gói ngôn ngữ của bạn không chuẩn. Bạn cần tải về gói ngôn ngữ mới nhất từ http://joomlaviet.org/
Bạn có thể xóa các gói ngôn ngữ và chỉ giữ lại gói ngôn ngữ tiếng Anh và thử đăng nhập lại.
7. Do cấu trúc database bị thay đổi

Một số bản Joomla, đặc biệt là Joomla 1.5 do đang ở giai đoạn beta nên đôi khi cấu trúc database bị thay đổi (thêm/bớt cột, thay đổi độ rộng...) do vậy cũng ảnh hưởng đến việc đăng nhập.
Giải pháp: Bạn chỉ có thể mò mẫm từng bước để xem bảng dữ liệu nào đã bị thay đổi và đưa vấn đề của mình lên http://forum.joomla.org và http://joomlaviet.org/forum
8. Do biến session.save_path

Sẽ chỉ cụ thể sau: http://joomlaportal.ru/content/view/156/53/

Một số giải pháp khác

Mở database của bạn bằng phpMyAdmin hoặc một tool khác mà Hosting của bạn cung cấp.
Mở bảng jos_users
Tìm bản ghi username=admin và thay password bằng giá trị sau
87a4a4ff55be7fff309889c188166ae4
Đăng nhập lại hệ thống bằng tài khoản: username: admin, password: bendoivn

Lúc lọ mọ về vấn đề này, thang thang trên mạng thấy mấy trang dịch MD5, các bạn có thể xem thử.
http://www.stringfunction.com/md5-decrypter.html
convert md5 online

Ấn định ngày xuất bản một bài viết trong Joomla


Bước 1: Mở trang quản trị Joomla! (back-end)

Bước 2: Ấn định ngày xuất bản, hủy xuất bản một bài viết

  • Nhấn vào nút [Content Items Manager] để vào trang quản lý các bài viết
  • Nhấn vào link của bài viết muốn chỉnh sửa, chẳng hạn bài "Welcome to Joomla!".
  • Để ấn định ngày sẽ xuất bản chính thức bài viết trên Website, trong phần tham số bên tay phải tìm mục "Start Publishing" --> chọn ngày mà bạn muốn.
  • Để ấn định ngày sẽ hủy xuất bản (ẩn) bài viết, trong phần tham số bên tay phải của bài viết tìm mục "Finish Publishing" --> chọn ngày mà bạn muốn.
  • Nhấn nút [Save] trên thanh công cụ để lưu lại.

Cách chèn JavaScript hoặc các đoạn mã HTML đặc biệt


Joomla cung cấp một trình soạn thảo WYSIWYG mặc định TinyMCE. Đây là trình soạn thảo chuẩn và phổ biến. Cũng theo mặc định để đảm bảo an toàn cho Website, tất cả các đoạn mã Javascript và các đoạn mã HTML nhạy cảm đều bị TinyMCE lọc bỏ. Do vậy để chèn các đoạn mã JavaScript vào bài viết hoặc vào module... bạn cần tắt bỏ tính năng này.


Đối với Joomla 1.5

Vào menu Extensions >> Plugin Manager >> Editor - TinyMCE 2.0. Quan sát các tham số (Parameters) bên tay phải. Có 2 tham số liên quan:

Code Cleanup on Startup: Chọn "Off" để tắt mỗi khi trình soạn thảo được nạp
Code Cleanup on Save: Chọn "Front Only" để chỉ tắt phía Front-End, chọn "Never" để tắt hẳn. Thao tác này chỉ có tác dụng khi lưu bài viết hoặc module.


Đối với Joomla 1.0

Vào menu Mambots >> Site Mambots >> TinyMCE WYSIWYG Editor. Quan sát các tham số (Parameters) bên tay phải. Chú ý tham số

Code Cleanup: Chọn "Off" để tắt

Chèn Javascript vào bài viết hoặc module.

  • Mở bài viết hoặc module
  • Nhấn vào nút HTML để soạn thảo mã HTML
  • Dán đoạn mã HTML hoặc Javascript vào chỗ mà bạn muốn

Tìm hiểu về đường dẫn URL và Itemid


Một ví dụ về URL và Itemid

Bạn hãy truy cập vào trang chủ của Joomla và tìm bài viết "What is Joomla!", hãy chú ý quan sát đường dẫn (url hay link) của nó là

http://www.joomla.org/content/view/12/26/ hoặc

http://joomla.org/component/option,com_content/task,view/id,12/Itemid,26/ 

Bạn đã trông thấy đường link ngắn gọn như vậy là do admin của trang Joomla.org đã bật chức năng "Search Engine Friendly URLs" (Site => Global Configuration => SEO => Search Engine Friendly URLs = Yes). Còn thực tế thì link gốc ban đầu sẽ là

http://joomla.org/index.php?option=com_content&task=view&id=12&Itemid=26

Hãy chú ý con số 26 ở cuối cùng của mỗi URL ở trên. Đó chính là Itemid = 26 

Mổ xẻ 2 URL trên


Mục đích của Itemid

Itemid được dùng để quyết định sự xuất hiện của các module và template. Mỗi module có thể được gắn với tất cả các menu (nghĩa là xuất hiện với mọi Itemid) hay chỉ được gắn với một số menu nào đó.

VD: Module "Who is Online" xuất hiện ở mọi trang (tức là được gắn với mọi menu hay mọi ItemID)

Tương tự như vậy, mỗi template cũng được gắn với tất cả các menu (với mọi Itemid) hay chỉ được gắn với một số menu nhất định (một số Itemid).

Thêm một Menu Item liên kết tới link bên ngoài domain trong Joomla 1.5


Bước 1. Mở trang quản trị

Bước 2. Thêm một Menu Item kiểu External Link

  1. Mở menu "Menus" > chọn "Main Menu"
  2. Nhấn nút [New] để tạo Menu Item mới
  3. Chọn kiểu link là External Link
  4. Điền các thông tin về Menu Item mới
  5. Nhấn nút [Save] để lưu lại
  6. Mở website để xem kết quả