PDA

Zobacz pełną wersję : Main menu - ikona ?



Pavlos
12-06-2010, 00:35
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.

Bazyl
12-06-2010, 00:56
Hej,

Ikona ma być w tytule modułu menu?

Pavlos
12-06-2010, 02:14
Tak w tytule

Bazyl
12-06-2010, 09:08
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...

Pavlos
12-06-2010, 11:04
Dzięki za przydatną informację. O to mi chodziło.

Pavlos
18-06-2010, 22:11
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.

Bazyl
18-06-2010, 23:22
Gdybyś napisał, gdzie jest ten moduł...

.sowa h3 {}

Pavlos
19-06-2010, 10:28
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;

_eva
19-06-2010, 13:09
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?

Pavlos
19-06-2010, 14:38
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.

_eva
19-06-2010, 15:09
@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.

Pavlos
19-06-2010, 15:33
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.

_eva
19-06-2010, 17:03
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 ----------

Pavlos
19-06-2010, 18:40
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.

_eva
19-06-2010, 18:50
@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.

Pavlos
19-06-2010, 19:02
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

a_m
19-06-2010, 19:18
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

Pavlos
19-06-2010, 19:24
Szablon jest do bani. Ale dzięki za pomoc.

a_m
19-06-2010, 19:29
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

Pavlos
19-06-2010, 19:31
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

a_m
19-06-2010, 19:33
fajne drzewo; teraz je przestudiuj

Pavlos
19-06-2010, 19:36
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.

_eva
19-06-2010, 19:42
@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.

Pavlos
19-06-2010, 19:54
Daję przez PA w dokładnie takiej postaci _menu-glowne dlatego nie wiem co jest grane.

a_m
19-06-2010, 20:31
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!

_eva
19-06-2010, 21:03
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.

a_m
19-06-2010, 21:57
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ć.

a_m
19-06-2010, 22:11
nic więcej nie dodam - podobno jego szablon się opiera standardowym sposobom modyfikacji;

pozdrawiam

_eva
19-06-2010, 22:14
@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.

Pavlos
19-06-2010, 23:24
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ą

Pavlos
20-06-2010, 00:51
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!

_eva
20-06-2010, 11:46
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ć.

Pavlos
20-06-2010, 18:03
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.

a_m
20-06-2010, 18:06
@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