Zobacz pełną wersję : Main menu - ikona ?
Witam serdecznie. Mam prośbę. Jak wstawić ikonę w Menu dla każdego Menu inna ikona (w pod menu nie mam problemu ze wstawianiem).
Dzięki za pomoc.
Hej,
Ikona ma być w tytule modułu menu?
Dodaj przyrostek klasy modułu (http://www.wiki.joomla.pl/index.php/Przyrostek_klasy_modu%C5%82u) i rób z nim (z modułem) co chcesz...
Dzięki za przydatną informację. O to mi chodziło.
Czytałem całość (http://www.wiki.joomla.pl/index.php/Stosowanie_przyrostk%C3%B3w_klas_w_Joomla%21_1.5)n ie mogę załapać. Chciałem wstawić ikonę: url("../images/123.png") do jednej z menu, aby wyglądało inaczej.
Utworzyłem w template.css na końcu
div.sowa{
background:url("../images/123.png") no-repeat scroll left center transparent; }
następnie w Przyrostek klas CSS modułu (posiadam tam jeszcze jeden przyrostek) po spacji wpisałem sowa (nazwa przyrostka)
Strona to http://www.jeleniagora.e-prawko.com/
Jakaś podpowiedź ?
Z góry dzięki.
Gdybyś napisał, gdzie jest ten moduł...
.sowa h3 {}
Chciałbym wstawić ikonki w lewym menu (Start, Menu główne) zamiast gwiazdek wstawić ikonki.
---------- Post dodany o 10:28 ---------- Poprzedni post był o 00:13 ----------
Chciałbym wstawić tutaj:
.art-vmenublockheader .t {
color:#FFFFFF;
font-size:12px;
height:36px;
line-height:36px;
margin:0;
padding:0 34px 0 11px;
white-space:nowrap;
witaj @Pavlos
Na przykładzie - 'Menu główne' i 'Jak zdobyć prawko' :
pozycje te znajduję się bezpośrednio w:
div.art-vmenublockheader .t
bez nagłówka h3
Żeby uzyskać taki efekt:
Chciałbym wstawić ikonki w lewym menu (Start, Menu główne) zamiast
gwiazdek wstawić ikonki.
Jeśli każda ikonka ma być inna, to musisz każdemu modułowi menu nadać inny przyrostek klasy np.
a) Moduł 'Menu główne' - dodajesz np. _menu-glowne
b) Moduł 'Jak zdobyć prawko' - dodajesz np. _prawko
Następnie w css deklarujesz:
a)
div.art-vmenublockheader .t .menu-glowne { background: url(tu scieżka do obrazka 1) no-repeat }
b)
div.art-vmenublockheader .t .prawko { background: url(tu scieżka do obrazka 2) no-repeat }
Dla pozostałych menu robisz analogicznie.
Pomogło?
Wszystko wyjaśnione super. Lecz nadal nic.
Wstawiam kod na końcu template.css
div.art-vmenublockheader .t .menu-glowne
{
background: url(../images/123.png) no-repeat}Następnie w opcjach modułu Menu główne w parametrach rozszerzonych: Przyrostek klas CSS modułu wpisuje
_menu-glowne
Wstawiłem i na końcu kodu jest ta ikonka tylko nie wyświetla się w menu.
@Pavlos, Nie widać tego co opisujesz (na Firefoxe, Operze, Chrome, IE8, Safari)
Wstawiłem i na końcu kodu jest ta ikonka tylko nie wyświetla się w menu.
Widziałam zmiany w kodzie : m.in menu główne jest teraz w div.art-blockheader .t.
div.art-vmenublockheader .t .menu-glowne
{
background: url(../images/123.png) no-repeatTo wstawiłem w ostatnich wierszach CSS w firebugu wyświetla się tak ostatni wiersz.
div.art-vmenublockheader .t .menu-glowne {
background:url("../images/123.png") no-repeat scroll 0 0 transparent;
Przyrostek klas CSS modułu to: art-vmenu
Kasuję go i wpisuję _menu-glowne
Niby wszystko ok. Zrobiłem wszystko wg. Twoich wskazówek
Wkurzam się bo nie mogę sobie poradzić. Przecież nie jest to trudne.
Czy na pewno mówimy o tej samej stronie?
http://www.jeleniagora.e-prawko.com/
Dziwna sprawa - ja widzę, że menu główne (po lewej stronie) jest i działa, ikona gwiazdki została bez zmian. Na początku faktycznie menu główne było w div.art-vmenublockheader .t
Teraz firebug pokazuje co innego, dokładnie: div.art-blockheader .t
A drzewo wygląda tak:
div.t > div.art-blockheader > div.art-block-body > div.art-block
P.S - odśwież stronę, wyczyść cache.
---------- Post dodany o 17:03 ---------- Poprzedni post był o 15:56 ----------
Nic z tego. Stronę odświeżam a cache zawszę czyszczę po zmianach.
Czy w ogóle ktoś może mi pomóc z tym. Mogę przesłać trochę kodu. Zależy mi na tym bo udostępniam teraz kilka portali dla e-prawko.com i chciałbym wrzucić różne ikonki na menu.
@Pavloc, nie wiem dlaczego jest u Ciebie ten problem, u mnie to działa. Czy możesz napisać, czy teraz to co opisałam tutuj (http://forum.joomla.pl/showthread.php?41134-Main-menu-ikona&p=177810&viewfull=1#post177810), też tak widzisz, czy u Ciebie jest coś innego. Upewnij się czy nie wprowadziłeś jakiś dodatkowych zmian w kodzie.
Tak. To jest ta strona.
I jest to menu główne po lewej stronie. Jak jest przyrostek klasy CSS modułu: art-vmenu to kod wygląda tak:
.art-vmenublockheader .t {color:#FFFFFF;font-size:12px;height:36px;line-height:36px;margin:0;padding:0 34px 0 11px;white-space:nowrap;A jak nie ma przyrostka lub próbuję wstawić nowy to tak:
.art-blockheader .t {color:#FFFFFF;font-size:12px;height:28px;line-height:28px;margin:0;padding:0 33px 0 10px;white-space:nowrap;Tak wygląda ostatnia dopisana linia div. w template.css szablonu:
}
div.art-blockheader .t .menu-glowne { background: url(../images/123.png) no-repeat }Plik
* 123.png jest w katalogu ,,image" szablonu
* do przyrostka wpisuję
_menu-glowne
* jeśli jest jeden przyrostek
art-vmenu to nie jest konieczne wprowadzenie drugiego przyrostka obok po spacji mam na myśli
art-vmenu _menu-glowne
jeśli dodawanie przyrostków guzik zmienia, to bez info o tym jakie pliki są nadpisane w katalogu html szablonu można ten wątek ciągnąć b. długo i równie owocnie
Szablon jest do bani. Ale dzięki za pomoc.
proszę bardzo; natomiast zobacz - jeśli masz problemy z przyrostkami - co masz w nadpisanych plikach - jeśli masz - modules.php i plikach z katalogu mod_mainmenu
Drzewo katalogu html szablonu:
com_content
*article
*category
*frontpage
*section
mod_mainmenu
*index.html
*default.php
mod_syndicate
*index.html
*default.php
modules.php
index.html
fajne drzewo; teraz je przestudiuj
modules.php
<?php
defined('_JEXEC') or die('Restricted access'); // no direct access
if (!defined('_ARTX_FUNCTIONS'))
require_once dirname(__FILE__) . str_replace('/', DIRECTORY_SEPARATOR, '/../functions.php');
function modChrome_artstyle($module, &$params, &$attribs)
{
$style = isset($attribs['artstyle']) ? $attribs['artstyle'] : 'art-nostyle';
$styles = array(
'art-nostyle' => 'modChrome_artnostyle',
'art-block' => 'modChrome_artblock',
'art-article' => 'modChrome_artarticle',
'art-vmenu' => 'modChrome_artvmenu'
);
$sfx = $params->get('moduleclass_sfx');
if (in_array($sfx, array_keys($styles)))
$style = $sfx;
call_user_func($styles[$style], $module, $params, $attribs);
}
function modChrome_artnostyle($module, &$params, &$attribs)
{
if (!empty ($module->content)) : ?>
<div class="art-nostyle">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif;
}
function modChrome_artblock($module, &$params, &$attribs)
{
if (!empty ($module->content))
echo artxBlock(($module->showtitle != 0) ? $module->title : '', $module->content);
}
function modChrome_artvmenu($module, &$params, &$attribs)
{
if (!empty ($module->content)) {
if (function_exists('artxVMenuBlock'))
echo artxVMenuBlock(($module->showtitle != 0) ? $module->title : '', $module->content);
else
echo artxBlock(($module->showtitle != 0) ? $module->title : '', $module->content);
}
}
function modChrome_artarticle($module, &$params, &$attribs)
{
if (!empty ($module->content))
echo artxPost(($module->showtitle != 0) ? $module->title : '', $module->content);
}
mod_mainmenu default.php
<?php
defined('_JEXEC') or die('Restricted access'); // no direct access
ob_start();
require_once realpath(dirname(__FILE__) . str_replace('/', DIRECTORY_SEPARATOR, '/../../../../modules/mod_mainmenu/tmpl/default.php'));
ob_clean();
if (!defined('modMainMenuArtxExtensions'))
{
function modMainMenuArtXMLCallback(&$node, $args)
{
$options = $GLOBALS['modMainMenuArtXMLCallbackOptions'];
if ($node->name() == 'li') {
if (!$options['show_submenus'] && $node->level() == 1) {
if ($ul = $node->getElementByPath('ul'))
$node->removeChild($ul);
}
$liChildren = & $node->_children;
if (count($liChildren) > 0) {
// element ( $img?, $span ( $text ) ) )
// <a href="..."> <img src="..." (align="left|right")? alt="..." />?<span><![CDATA[...]]></span></a>
// <span class="separator"><img src="..." (align="left|right")? alt="..." />?<span><![CDATA[...]]></span></span>
$element = & $liChildren[0];
if ($element->_children[0]->name() == 'img') {
$img = & $element->_children[0];
$span = & $element->_children[1];
$element->removeChild($img);
} else {
$img = null;
$span = & $element->_children[0];
}
$element->removeChild($span);
// convert separator to anchor
if ($element->name() == 'span' && $element->attributes('class') == 'separator') {
$element->_name = 'a';
$element->addAttribute('href', '#');
$element->addAttribute('onclick', 'return false;');
}
// add extra spans for top level items, required for design
if ($element->level() == ($options['start'] + 1) * 2) {
$lspan = & $element->addChild('span', array('class' => 'l'));
$lspan->setData(' ');
$rspan = & $element->addChild('span', array('class' => 'r'));
$rspan->setData(' ');
$tspan = & $element->addChild('span', array('class' => 't'));
$container = & $tspan;
} else {
$container = & $element;
}
// to prevent span from collapsing
$text = strlen($span->data()) == 0 ? ' ' : $span->data();
// container is always <a ...>...</a> here
if ($img != null) {
$align = $img->attributes('align');
if ($align == 'left' || $align == '') {
$container->addChild('img', array('class' => 'art-metadata-icon',
'src' => $img->attributes('src'),
'style' => 'margin-right: 5px; vertical-align: middle;',
'alt' => $img->attributes('alt')));
$extraArtxSpan = & $container->addChild('artx-extra-span');
$extraArtxSpan->setData($text);
} else if ($align == 'right') {
$extraArtxSpan = & $container->addChild('artx-extra-span');
$extraArtxSpan->setData($text);
$container->addChild('img', array('class' => 'art-metadata-icon',
'src' => $img->attributes('src'),
'style' => 'margin-left: 5px; vertical-align: middle;',
'alt' => $img->attributes('alt')));
}
} else {
$container->setData($text);
}
}
modMainMenuXMLCallback($node, $args);
// this should be after modMainMenuXMLCallback, because the callback sets class='active' and id='current'
if ($options['vmenu'] !== null && !$options['vmenu']['simple']) {
$class = $node->attributes('class');
$isActive = $class && false !== strpos(' ' . $class, ' active');
if ($node->attributes('id') != 'current' && !$isActive) {
if ($ul = $node->getElementByPath('ul'))
$node->removeChild($ul);
}
}
$class = $node->attributes('class');
if ($class && false !== strpos(' ' . $class, ' active')) {
$element->addAttribute('class', 'active');
}
} else {
modMainMenuXMLCallback($node, $args);
}
}
function artxMenuDecorator($content)
{
$result = '';
ob_start();
?>
<div class="art-nav">
<div class="l"></div>
<div class="r"></div>
<?php
$result .= ob_get_clean() . $content;
ob_start();
?>
</div>
<?php
$result .= ob_get_clean();
return $result;
}
define('modMainMenuArtxExtensions', true);
}
if (isset($attribs['name']) && $attribs['name'] == 'user3') {
$GLOBALS['modMainMenuArtXMLCallbackOptions'] = array(
'show_submenus' => $GLOBALS['artx_settings']['menu']['show_submenus'] && 1 == $params->get('showAllChildren'),
'vmenu' => null,
'start' => $params->get('startLevel')
);
$xml = modMainMenuHelper::getXML($params->get('menutype'), $params, 'modMainMenuArtXMLCallback');
if ($xml) {
$xml->addAttribute('class', 'art-menu');
if ($tagId = $params->get('tag_id')) {
$xml->addAttribute('id', $tagId);
}
$result = JFilterOutput::ampReplace($xml->toString((bool)$params->get('show_whitespace')));
$result = str_replace(array('<ul/>', '<ul />', '<artx-extra-span>', '</artx-extra-span>'), '', $result);
echo artxMenuDecorator($result);
}
unset($GLOBALS['tmp_menu_show_submenus']);
} else if ($params->get('moduleclass_sfx') == 'art-vmenu') {
$GLOBALS['modMainMenuArtXMLCallbackOptions'] = array(
'show_submenus' => $GLOBALS['artx_settings']['vmenu']['show_submenus'] && 1 == $params->get('showAllChildren'),
'vmenu' => array('simple' => $GLOBALS['artx_settings']['vmenu']['simple']),
'start' => $params->get('startLevel')
);
$xml = modMainMenuHelper::getXML($params->get('menutype'), $params, 'modMainMenuArtXMLCallback');
if ($xml) {
$xml->addAttribute('class', 'art-vmenu');
if ($tagId = $params->get('tag_id')) {
$xml->addAttribute('id', $tagId);
}
$result = JFilterOutput::ampReplace($xml->toString((bool)$params->get('show_whitespace')));
$result = str_replace(array('<ul/>', '<ul />', '<artx-extra-span>', '</artx-extra-span>'), '', $result);
echo $result;
}
unset($GLOBALS['tmp_menu_show_submenus']);
} else {
modMainMenuHelper::render($params, 'modMainMenuXMLCallback');
}
Ok będę szukał dziury :) Dzięki za pomoc. Nawet nie wiedziałem, że mi ktoś tu tak chętnie będzie pomagał. Pozdrawiam serdecznie.
@Pavlos, ten przyrostek _menu-glowne dodajesz chyba w złym miejscu, bo nie ma go w źródle (ctrl+u, a potem ctrl+f i wpisz menu-glowne). A dlaczego nie dodasz przyrostka przez PA? Masz tam w 'Parametry rozszerzone' > Przyrostek klas css modułu.
Daję przez PA w dokładnie takiej postaci _menu-glowne dlatego nie wiem co jest grane.
banał: robicie strony za kasę? niech się autor przyłoży
zwiastun
19-06-2010, 21:00
Przecieram oczy ze zdumienia, aż mnie bolą. Naprawdę dodanie ikony do pozycji menu jest tak ogromnie trudnym zadaniem? I do czego mają posłużyć tutaj a:
a) te długaśne cytowane kody
b) przyrostki klas css menu (modułu).
Widział kto, jak wygląda pozycja menu z ikoną wstawioną za pomocą ustawień Joomla? Spojrzał który/która, na generowany kod?
1. W ustawieniach każdej pozycji menu jest parametr: Grafika w menu
2. W ustawieniach każdego modułu menu jest parametr: Ikony w menu
A reszta to przysłowiowy pryszcz!
P.S @zwiastun, pavlos chciał do każdego tytułu menu tzn. 'Menu główne', 'Jak zdobyć prawko' , 'Idziemy na egzamin' itd. dodać inną ikonkę zamiast tej gwiazdki. O ile się nie mylę, to to co opisujesz da się chyba zrobić jeśli chce się dodać ikony do poszczególnych odnośników menu, ale nie do samej nazwy modułu.
Drogi Zwiastunie, nakrzyczałeś na nas niepotrzebnie; @Pavlos nie chce ikon w pozycjach menu, chce wyróżnić "niektóre" h3 modułów, ale jego szablon się opiera standardowym sposobom modyfikacji.
zwiastun
19-06-2010, 22:07
Nakrzyczałem? Bez przesady! Tak zrozumiałem (nie oglądałem strony, czytałem wątek) :)
ja tylko czytam, co czytam, nic więcej:
Witam serdecznie. Mam prośbę. Jak wstawić ikonę w Menu dla każdego Menu inna ikona (w pod menu nie mam problemu ze wstawianiem).
Dzięki za pomoc.
Chciałbym wstawić ikonki w lewym menu (Start, Menu główne) zamiast gwiazdek wstawić ikonki.[COLOR="Silver"]
Ale nawet jeśli rzecz dotyczy tylko obrazka w nagłówku modułu, to również cały ten wątek może zadziwiać.
nic więcej nie dodam - podobno jego szablon się opiera standardowym sposobom modyfikacji;
pozdrawiam
@a_m, dzięki za wsparcie (http://forum.joomla.pl/showthread.php?41134-Main-menu-ikona&p=177858&viewfull=1#post177858) :)
@zwiastun, faktycznie wątek trochę się rozrósł, ale @Pavlos pisał, że bardzo mu zależy na rozwiązaniu, no i tak doszliśmy do tego miejsca :)
zwiastun
19-06-2010, 22:29
To może trzeba na nowo problem zdefiniować, bo jest to szablon stworzony w Artisterze, jak mnie oczy nie mylą.
A przyrostki klas css modułu działają w nim tak samo, jak w "normalnych" szablonach.
Witam serdecznie. Cieszę się, że ten problem zainteresował Administratora.
Szablon utworzony jest w Artisterze.
Chciałbym zamiast wszystkich gwiazdek powstawiać różne ikony.
Adres strony to http://www.jeleniagora.e-prawko.com/
Koleżanka _eva starała mi pomóc - bardzo to doceniam.
1. Utworzyłem w pliku template.css templatki na końcu taki wpis:
*
}
div.art-blockheader .t .menu-glowne { background: url(../images/123.png) no-repeat }2. Następnie przeszedłem do PA i w parametrach rozszerzonych modułu w przyrostek klas CSS modułu wpisałem:
_menu-glowne
zwiastun
20-06-2010, 00:04
A gdzie tu logika?
Pod 1. jest selektor klasy .menu-glowne
Pod 2. zamiast selektora SPACJAmenu-glowne (tylko wtedy deklaracja stylu w arkuszu CSS będzie się odnosić do tego selektora) jest coś zupełnie innego: _menu-glowne, Niby to samo, ale tylko NIBY!
W artykule na wiki wszystko jest dokładnie objaśnione. Powtarzać nie ma sensu.
Sposobów rozwiązania problemu jest co najmniej kilka. Obrazek może być dodany do selektora nazwy modułu, czy do selektora obejmy modułu (elementu div).
Przykładowo jeśli dodamy go do nazwy (tytułu) modułu, to należy
- w parametrach modułu wpisać przyrostek klas modułu np. bombka. Przed słowem bombka koniecznie zostawić spację!
- podejrzeć sobie kod wynikowy - co najmniej w dwóch miejscach pojawi się atrybut klasy "bombka" - elemencie obejmującym moduł i elemencie obejmującym tytuł (np. h3).
- wystarczy teraz w arkuszu css dopisać regułę dla selektora h3.bombka {background-image: url(../images/bombka.png) 0 100% no-repeat }, a do katalogu ../images przesłać obrazek z bombką
Ok. Wpisałem w Przyrosteku klas CSS modułu SPACJAbombka.
Gdzie można podejrzeć kod wynikowy - aby znaleźć poszukiwany atrybut klasy ?
Ok. Nie odpisuj. Poddaję się. Siedzę przy kompie już drugi dzień i noc i nie umiem sobie z tym poradzić. Podaj mi może jakąś stronkę - zapłacę komuś.
zwiastun
20-06-2010, 10:50
Kod wynikowy można podejrzeć na stronie!
Usunęłam tą moją informacje o z-indexe - myślę, że to niepotrzebnie zaciemniało temat. W sumie to nie powinno mieć znaczenia.
@Pavlos, kod wynikowy możesz podejrzeć w źródle strony (ctrl+u). Dla mnie osobiście dziwne jest to, że w kodzie nie ma (i wcześniej nie było) tej nazwy klasy, którą dodawałeś do modułu. Sprawdzałam to 'szukajką' (ctrl+f). Jedyne co mi przychodzi do głowy, to czy wszystkie pliki szablonu są zapisywalne i jakie są chmody- warto to sprawdzić.
Hej. Sprawdziłem wszystkie chmody mam na 755. Wpisując przedrostek modułu nie pojawia się nigdzie w kodzie. I właśnie to jest dziwne. Inne szablony mają nazwę przedrostka w kodzie - jak zmienię szablon strony to przedrostek jest w kodzie.
@Pavlos powinieneś zainteresować się plikiem modules.php; spróbuj go przebudować np. na wzór identycznego pliku z ja_purity, zachowując oczywiście własne formatowania module chrome
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!