我想将具有组件/ id的joomla(版本2.5)URL结构转换为用户友好或SEO友好的URL。 ?选项= com_mycomponent&安培;查看= MyView的和ID = 98 成 myarticle.php或sometext.php
我确实有一些需要更改的自定义组件。
有人可以帮忙吗?
答案 0 :(得分:1)
我使用MijoSEF组件将URL自定义为用户友好的URL。对于自定义组件,我在每个自定义组件中创建了rounter.php。这样它就可以处理joomla url结构中的SEO友好URL。毕竟,您需要URL中每个操作的菜单项
http://miwisoft.com/joomla-extensions/mijosef-joomla-seo-sef-urls
点击以上网址下载免费版本并安装 安装后,您可以在网站中看到组件列表。只有当您的组件中包含路由器文件时,才会列出您的组件。 选择组件后,您可以更改网站中的每个网址。 请参阅我根据要求使用的示例路由器。
<?php
/**
* @package Joomla.Site
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
jimport('joomla.application.categories');
/**
* Build the route for the com_content component
*
* @param array An array of URL arguments
* @return array The URL arguments to use to assemble the subsequent URL.
* @since 1.5
*/
function MycomponentBuildRoute(&$query)
{
$segments = array();
if (isset($query['Itemid'])) {
$segments[] = $query['Itemid'];
unset($query['Itemid']);
}
if(isset($query['task'])) {
$segments[] = $query['task'];
unset($query['task']);
}
if(isset($query['id'])) {
$db = JFactory::getDbo();
$aquery = $db->setQuery($db->getQuery(true)
->select('alias')
->from('#__content')
->where('id='.(int)$query['id'])
);
$alias = $db->loadResult();
$query['id'] = $query['id'].':'.$alias;
$segments[] = $query['id'];
unset($query['id']);
}
return $segments;
}
/**
* Parse the segments of a URL.
*
* @param array The segments of the URL to parse.
*
* @return array The URL attributes to be used by the application.
* @since 1.5
*/
function MycomponentParseRoute($segments)
{
$vars = array();
$vars['Itemid'] = $segments[0];
$vars['task'] = $segments[1];
$vars['id'] = $segments[2];
return $vars;
}
答案 1 :(得分:1)
对于核心组件和最知名的extensions found on the JED,通过启用.htaccess
文件(或等效文件)并更改全局配置设置,可以轻松启用SEF URL。
我建议您阅读以下内容。
Joomla内置了对SEF URL的支持。 (见Search Engine Friendly URLs)
对于自定义组件,您必须添加对SEF URL的支持(如果尚未添加)。 (见Supporting SEF URLs in your component)
最后,如果您需要更多Joomla特定支持,请尝试the Joomla Q&A on StackExchange