Als je zelf een extensie ontwikkelt, kan je hier je vragen stellen.
router.php werkend krijgen
router.php werkend krijgen
29 aug 2012 21:07
Hallo,
Om me het maken van een Joomla Component eigen te maken ben ik bezig met een simpel activiteiten component te maken.
Het gaat om het tonen van een serie activiteiten in een overzicht en vervolgens na klikken op een activiteit een enkele activiteit te tonen.
Het component is in feite werkend, maar om hem ook voor SEF geschikt te krijgen heb ik een router.php bestand gemaakt.
Het lukt echt nog niet volledig dus vandaar mij vraag of iemand weet wat hier mis gaat?
Er is een verborgen menu wat een item bevat met de volgende URI
index.php?option=com_events&view=activity met als alias activiteit
Hoofdmenu item met overzicht van de activiteiten (alias activiteiten):
URI: domeinnaam/index.php?option=com_events&view=activities&Itemid =160
mod_breadcrumbs geeft netjes Home->Activiteiten met een actief hoofdmenu item
Met SEF aan: URI domeinnaam/activiteiten
mod_breadcrumbs geeft netjes Home->Activiteiten met een actief hoofdmenu item
Losse activiteit
URI: domeinnaam/index.php?option=com_events&view=activity&id=1&Ite mid=160
mod_breadcrumbs geeft netjes Home->Activiteiten->Activiteitnaam
Met SEF: URI domeinnaam/activiteit/activiteitnaam
mod_breadcrumbs geeft Home->Activiteit->Activiteitnaam, verder is het hoofdmenu item niet actief.
Hier de betreffende router.php
Om me het maken van een Joomla Component eigen te maken ben ik bezig met een simpel activiteiten component te maken.
Het gaat om het tonen van een serie activiteiten in een overzicht en vervolgens na klikken op een activiteit een enkele activiteit te tonen.
Het component is in feite werkend, maar om hem ook voor SEF geschikt te krijgen heb ik een router.php bestand gemaakt.
Het lukt echt nog niet volledig dus vandaar mij vraag of iemand weet wat hier mis gaat?
Er is een verborgen menu wat een item bevat met de volgende URI
index.php?option=com_events&view=activity met als alias activiteit
Hoofdmenu item met overzicht van de activiteiten (alias activiteiten):
URI: domeinnaam/index.php?option=com_events&view=activities&Itemid =160
mod_breadcrumbs geeft netjes Home->Activiteiten met een actief hoofdmenu item
Met SEF aan: URI domeinnaam/activiteiten
mod_breadcrumbs geeft netjes Home->Activiteiten met een actief hoofdmenu item
Losse activiteit
URI: domeinnaam/index.php?option=com_events&view=activity&id=1&Ite mid=160
mod_breadcrumbs geeft netjes Home->Activiteiten->Activiteitnaam
Met SEF: URI domeinnaam/activiteit/activiteitnaam
mod_breadcrumbs geeft Home->Activiteit->Activiteitnaam, verder is het hoofdmenu item niet actief.
Hier de betreffende router.php
Code:
<?php
defined( '_JEXEC' ) or die;
jimport('joomla.database.databasequery');
function EventsBuildRoute(&$query)
{
$segments = array();
if (isset($query['view'])) {
if ($query['view'] == 'activity') {
$segments[] = EventsGetAlias($query['id'], $query['view']);
unset($query['id']);
}
// look up Itemid
$query['Itemid'] = EventsGetItemid($query['view']);
unset($query['view']);
}
return $segments;
}
function EventsParseRoute($segments)
{
$vars = array();
$item = JFactory::getApplication()->getMenu()->getActive();
if (isset($item)) {
$vars['view'] = $item->query['view'];
}
if (count($segments) == 1) {
$vars['id'] = EventsGetIDFromAlias($segments[0], $vars['view']);
}
return $vars;
}
function EventsGetAlias($id, $view)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
if ($view == 'activity') {
$query->select('activity_alias');
$query->from('#__events_activities');
$query->where('activity_id = ' . $id);
} else {
return '';
}
return $db->setQuery($query)->loadResult();
}
function EventsGetIDFromAlias($alias, $view)
{
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$alias = str_replace(':', '-', $alias);
$alias = $db->getEscaped($alias);
if ($view == 'activity') {
$query->select('activity_id');
$query->from('#__events_activities');
$query->where("activity_alias = '{$alias}'");
} else {
return 0;
}
return $db->setQuery($query)->loadResult();
}
function EventsGetItemid($view)
{
$db = JFactory::getDbo();
$db_query = $db->getQuery(true);
$db_query->select('id')
->from('#__menu')
->where("link = 'index.php?option=com_events&view=" . $view . "' AND client_id = 0");
$db->setQuery($db_query);
return $db->loadResult();
}
- Thuurke
- Heeft onderwerp gestart
- Nieuw op Joomla!NL
- Berichten: 13
router.php werkend krijgen
31 aug 2012 21:56
Misschien heb je
hier
iets aan?
Ik neem aan dat je hier al bent geweest?
Zelf heb ik geen ervaring hiermee, ik zou adviseren om de Apache logs te bekijken en goed uit te pluizen waar (welke stap) het mis gaat.
Weetje: het huidige MVC concept willen ze voor Joomla 4 helemaal herzien.
Ik neem aan dat je hier al bent geweest?
Zelf heb ik geen ervaring hiermee, ik zou adviseren om de Apache logs te bekijken en goed uit te pluizen waar (welke stap) het mis gaat.
Weetje: het huidige MVC concept willen ze voor Joomla 4 helemaal herzien.
- Ronald
- Bezoeker
router.php werkend krijgen
03 sep 2012 16:24
Hallo Ronald,
De 2e link had ik al bekeken. De eerste nu ook maar kom er nog niet verder mee. Ik ga nog eens even wat verder uitpluizen
De 2e link had ik al bekeken. De eerste nu ook maar kom er nog niet verder mee. Ik ga nog eens even wat verder uitpluizen
- Thuurke
- Heeft onderwerp gestart
- Nieuw op Joomla!NL
- Berichten: 13
router.php werkend krijgen
03 sep 2012 21:09
Ja joh ik heb er kort naar gekeken, maar dit zijn dingen waar je echt diep in moet duiken (wel leuk!).
Ik zou je ook zeker adviseren om het irc kanaal (#joomla-dev op freenode) van Joomla te benutten.
Hiervoor dien je wel de vraag volledig voorgekauwd te hebben.
Ik zou je ook zeker adviseren om het irc kanaal (#joomla-dev op freenode) van Joomla te benutten.
Hiervoor dien je wel de vraag volledig voorgekauwd te hebben.
- Ronald
- Bezoeker
Tijd voor maken pagina: 0.612 seconden