d4shoernchen
Goto Top

JQuery, neue Klasse an vorhandene Klasse hängen.

Guten Tag,

ich erstelle gerade eine neue Webpräsenz für unseren Verein und setze dort Joomla ein. In Joomla bekommt jeder Menüpunkt eine eigene Klasse.

Mein Menüpunkt um den es geht
<li class="item-113">Shop</li>

würde ich gerne wie folgt abändern:
<li class="item-113">Shop_<span class="badge">4</span></li>

Könnt ihr mir dabei eventuell helfen?

Vielen Dank.

Gruß
Toni

Content-Key: 250456

Url: https://administrator.de/contentid/250456

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: colinardo
Lösung colinardo 29.09.2014 aktualisiert um 15:43:32 Uhr
Goto Top
Mit jQuery z.B. so
$('li.item-113').append('_<span class="badge">4</span>');
Grüße Uwe
Mitglied: d4shoerncheN
d4shoerncheN 29.09.2014 um 15:41:08 Uhr
Goto Top
Hallo Uwe,

wie gewohnt die Lösung, vielen Dank. face-smile

Kennst du dich ein wenig mit Joomla aus? Ich würde das Script gerne erweitern wollen. Ich habe eine Kategorie angelegt mit dem Namen "Shop" und als Kategoriebeschreibung die Zahl "4" eingetragen. Nun wäre es schön, wenn der jQuery-Code in die Datenbank gucken könnte und schaut welcher Wert in der Datenbank in "Kategoriebeschreibung" steht und diesen Wert dort einsetzt.

Gruß
Toni
Mitglied: colinardo
colinardo 29.09.2014 aktualisiert um 15:48:41 Uhr
Goto Top
Zitat von @d4shoerncheN:
Kennst du dich ein wenig mit Joomla aus?
im Moment habe ich damit wenig zu tun
Ich würde das Script gerne erweitern wollen. Ich habe eine Kategorie angelegt mit
dem Namen "Shop" und als Kategoriebeschreibung die Zahl "4" eingetragen. Nun wäre es schön, wenn der
jQuery-Code in die Datenbank gucken könnte und schaut welcher Wert in der Datenbank in "Kategoriebeschreibung"
steht und diesen Wert dort einsetzt.
wäre IMHO besser hier direkt im PHP-Code von Joomla die Menüs so zu generieren...

Grüße Uwe
Mitglied: d4shoerncheN
d4shoerncheN 29.09.2014 aktualisiert um 16:05:30 Uhr
Goto Top
Wie würdest du denn vorgehen?

Leider habe ich im Menü keine Felder die ich "missbrauchen" kann, daher dachte ich mir den Weg über die Kategoriebeschreibung. Denn an die PHP- und JS-Dateien kommen die Autoren später nicht mehr ran. Die Kategoriebeschreibung dürfen Sie ändern.

NACHTRAG
Ich sehe gerade im Menü gibt es ein Feld "Notiz", eventuell kann man das dafür verwenden!?

Das ist der Code für das Menü, welchen ich per Override ersetzen könnte, sodass bei einem Update auch nichts geändert wird
<?php
/**
 * @package     	Joomla.Site
 * @subpackage  	mod_menu override
 * @copyright   	Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     	GNU General Public License version 2 or later; see LICENSE.txt
 * Modifications	Joomla CSS
 */

defined('_JEXEC') or die;  
// Note. It is important to remove spaces between elements.
?>
<?php // The menu class is deprecated. Use nav instead. ?>
<ul class="nav menu <?php echo $class_sfx;?>"<?php  
	$tag = '';  
	if ($params->get('tag_id') != null)  
	{
		$tag = $params->get('tag_id').'';  
		echo ' id="'.$tag.'"';  
	}
?>>
<?php
foreach ($list as $i => &$item) :
	$class = 'item-'.$item->id;  
	if ($item->id == $active_id)
	{
		$class .= ' current';  
	}

	if (in_array($item->id, $path))
	{
		$class .= ' active';  
	}
	elseif ($item->type == 'alias')  
	{
		$aliasToId = $item->params->get('aliasoptions');  
		if (count($path) > 0 && $aliasToId == $path[count($path) - 1])
		{
			$class .= ' active';  
		}
		elseif (in_array($aliasToId, $path))
		{
			$class .= ' alias-parent-active';  
		}
	}

	if ($item->type == 'separator')  
	{
		$class .= ' divider';  
	}

	if ($item->deeper) {
		if ($item->level < 2) {
			$class .= ' dropdown deeper';  
		}
		else {
			$class .= ' dropdown-submenu deeper';  
		}
	}

	if ($item->parent)
	{
		$class .= ' parent';  
	}

	if (!empty($class))
	{
		$class = ' class="'.trim($class) .'"';  
	}

	echo '<li'.$class.'>';  

	// Render the menu item.
	switch ($item->type) :
		case 'separator':  
		case 'url':  
		case 'component':  
		case 'heading':  
			require JModuleHelper::getLayoutPath('mod_menu', 'default_'.$item->type);  
			break;

		default:
			require JModuleHelper::getLayoutPath('mod_menu', 'default_url');  
			break;
	endswitch;

	// The next item is deeper.
	if ($item->deeper){
		echo '<ul class="nav-child unstyled small dropdown-menu">';  
	}
	elseif ($item->deeper) {
		echo '<ul>';  
	}
	// The next item is shallower.
	elseif ($item->shallower) {
		echo '</li>';  
		echo str_repeat('</ul></li>', $item->level_diff);  
	}
	// The next item is on the same level.
	else {
		echo '</li>';  
	}
endforeach;
?></ul>

Gruß
Toni