PDA

Zobacz pełną wersję : Moduł STOPKA w pozycji footer



james.bien
18-09-2023, 11:05
W sekcji footer umieściłem 3 moduły własne: dane kontaktowe, dane adresowe, linki do stron.

Gdzie umieścić moduł STOPKA z informacjami o wersji Joomla, informacji o autorstwie? Jak ustawiam też na stopkę to wyświetla mi się obok w/w. Chciałbym, aby ta informacja była samodzielna (tak się chyba robi zgodnie ze sztuką), pod w/w modułami?

Czy da się to zrobić za pomocą modułu czy taką informację trzeba wtedy umieścić gdzieś w kodzie strony?

JB

zwiastun
18-09-2023, 14:01
Sekcja footer strony to najodpowiedniejsze miejsce (znacznik footer w kontekście strony obejmuje element(-y), który zawiera informacje o stronie (informacje o treści). A to, jak się moduł układa w stosunku do innych i jak się wyświetla, to tylko kwestia odpowiedniej stylizacji.

james.bien
18-09-2023, 15:25
Dzięki za odpowiedź.

Sekcja footer to najlepsze miejsce na informacje o stronie - jasne jak słońce. W moim planie jednak (może błędnym) chciałbym, aby moduły własne były obok siebie (1), a pod nimi jeden moduł (2) - właśnie z info o stronie i Joomla. W moim przypadku, żeby osiągnąć połowiczny efekt musiałbym albo zrezygnować z tych trzech modułów, albo ze stopki z info o stronie i Joomla. Brakuje mi pozycji footer-b na przykład. Wtedy te informacje mógłbym rozdzielić: jedna w a, druga w b.

W załączniku zrzut ekranu

JB
10149

zwiastun
18-09-2023, 15:39
Nie musisz. Szablon na pewno wykorzystuje techniki flexbox/gridbox. W pozycji modułów można umieścić nawet klika wierszy modułów. W ustawieniach modułu (Wzbogacone) określasz, ile kolumienek siatki obejmuje moduł. Daj 12. Być może konieczne jednak będzie dopisanmie jakiegoś kawałka css

terra
19-09-2023, 18:39
Jeśli mowa o stopce, w szablonie Kasjopea, to akurat ta, ma chyba podział na kolumny o określonym rozmiarze. Ustawienie modułu na 12, pozwoli tylko na pełną szerokość, w kolumnie, a nie całej ramce.
Żeby osiągnąć efekt, o którym mowa czyli wiersz z podziałem i pełem wiersz pod spodem, trzeba dodać nową pozycję.

footer ma klasę:


<footer class="container-footer footer full-width">
</div>


z ramką


<div class="grid-child">
</div>

co nie będzie dawać pełnej szerokości, (container-footer jest w ogóle niezdefiniowany)

Należałoby dodać


<div class="grid-child container-nazwakontenera">
</div>


W praktyce powinno to wyglądać mniej więcej tak:
plik /templates/nazwaszablonu/index.php


<?php if ($this->countModules('footer', true)) : ?>
<footer class="container-footer footer full-width">
<div class="grid-child">
<jdoc:include type="modules" name="footer" style="none" />
</div>

<?php if ($this->countModules('nazwakontenera', true)) : ?>
<div class="grid-child container-nazwakontenera">
<jdoc:include type="modules" name="nazwakontenera" style="card" />
</div>
<?php endif; ?>

</footer>


plik /templates/nazwaszablonu/templateDetails.xml



<positions>
<position>topbar</position>
<position>below-top</position>
<position>menu</position>
<position>search</position>
<position>banner</position>
<position>top-a</position>
<position>top-b</position>
<position>main-top</position>
<position>main-bottom</position>
<position>breadcrumbs</position>
<position>sidebar-left</position>
<position>sidebar-right</position>
<position>bottom-a</position>
<position>bottom-b</position>
<position>footer</position>
<position>debug</position>

<position>nazwakontenera</position>
</positions>

plik /media/templates/site/nazwaszablonu/css/template.css


.
.
.container-nazwakontenera {
position: relative;
}
.
.
.container-nazwakontenera > * {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
margin: 0.5em 0;
}
.
.
@media (max-width: 991.98px) {
. .container-nazwakontenera {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}

.container-nazwakontenera > * {
-webkit-box-flex: 0;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
}



}
.
.
@supports (display: grid) {
.site-grid {
display: grid;
grid-template-areas: ".......". nazwakontenera nazwakontenera nazwakontenera nazwakontenera ."......
.
.
}
@media (min-width: 992px) {
.site-grid {
grid-template-areas: ".... ". nazwakontenera nazwakontenera nazwakontenera nazwakontenera .";
}
}
.
.
.
.container-nazwakontenera {
grid-area: nazwakontenera;
}

james.bien
19-09-2023, 23:21
Zwiastun napisał:
Być może konieczne jednak będzie dopisanmie jakiegoś kawałka css
Tak, zmiany w ustawieniach modułu nie przyniosły oczekiwanego efektu. Konieczna zatem ingerencja w kod z dopisaniem pozycji.

To rozwiązanie podaje terra.

Wielkie dzięki - to mało powiedziane. Dla Wyjadaczy to pewnie codzienność. Dla mnie, hobbysty - POTĘGA. Wiedza wzbogacona extra dawką, teraz jeszcze przełożyć na umiejętności i praktykę.

Dzięki za wspaniała lekcje i podzielenie się swoją wiedzą. Teraz trzeba tylko wykonać zadanie.

JB

terra
20-09-2023, 08:29
Pamietaj, że najpierw należy utworzyć szablon potomny, a dopiero w tym szablonie wprowadzić zmiany, inaczej, przy kolejnej aktualizacji Joomla, wszystkie zmiany zostaną usunięte.

james.bien
22-09-2023, 00:31
Na razie testuję sobie, żeby sprawdzić efekt. Jak już wszystko będzie grało - wtedy oczywiście szablon potomny. Jestem już prawie (słowo klucz:))na ukończeniu swoich prób. Na ten moment chcę jeszcze wyrównać zawartość z tej pozycji - ze środka na górę modułu. Patrzyłem trochę gdzie to może być w pliku template.css i wygląda na .footer .grid.child i align-items:, ale nie wiem jeszcze, czy to to.

Dziękuję za wskazówki z dodaniem nowej pozycji - wszystko się udało!!! Jestem wdzięczny. Myślę, że ten, kto trafił na ten wątek skorzystał tak jak ja.

JB

terra
22-09-2023, 16:47
align-items

james.bien
22-09-2023, 20:28
Ustawiam na flex-start i zapisuję template.css- nic się niestety nie zmienia.

Jak uruchamiam inspekcję - align-items ma wartość center. Jak zmieniam na flex-start, żeby sprawdzić efekt - jest OK.

Wydaje mi się, że robię dobrze. Zmiana w css, zapis. Ale...

JB

terra
22-09-2023, 23:05
Jak dasz center to wyrówna do środka, start zacznie układać od początku, end bedzie układać od końca. Jeśli jest na to przestrzeń, to zacznie rozmieszczać w pionie.
Nie bardzo wiem co chcesz osiągnąć, bo


body.wrapper-fluid footer > .grid-child {
align-items: start;
}


narzuca wyrównywanie modułów w footer, tak jak tego oczekujesz. Jeśli tego nie robi, to sprawdź klasy tego elementu, bo pewnie on ma jakiś margin lub padding.

james.bien
23-09-2023, 00:04
Tekst, albo pozycje z menu wyświetlają mi się wyrównane do środka (1). Bardziej podoba mi się, gdyby wyrównanie było od góry (2) - załącznik.

W kodzie mam:

body.wrapper-fluid footer > .grid-child {
padding-right: 2em;
padding-left: 2em;
}


Nawet jak dorzucę align-items: start; nic to nie zmienia

10150

terra
25-09-2023, 20:56
bo to nie ta definicja

poszukaj wiersza, z nadrzędną definicją


body.wrapper-fluid footer>.grid-child{
align-items: start;
}


w css istotne jest drzewo klas i kolejność zapisu

james.bien
26-09-2023, 19:14
Kolejna lekcja do odrobienia:). Dzięki. Spróbujemy.

Sposób na rozwiązanie tego problemu, mało elegancki i być może niezgodny ze sztuką, to zastosowanie znacznika <br />. Efekt zamierzony osiągnięty.

Inny sposób: czy mój tok rozumowania jest dobry - utworzenie nowej klasy, wywołanej potem w ustawieniach modułu, która zrealizuje efekt. Czy taką klasę zapisuje się wtedy w template.css czy może w user.css?

JB

terra
26-09-2023, 22:04
template.css bedzie nadpisywany przy aktualizacjach

terra
27-09-2023, 10:22
stosowanie <br> to sztywne ustawienie odległości, więc jeśli sąsiedni moduł wydłuży się , albo skróci to odległość przestanie pasować.
1. Użyj zakładki modułu WZBOGACONE i dodaj tam jakąś klasę np. bottom
2. w pliku user css dodaj definicję


.footer .bottom {
margin-top:auto;
}

james.bien
29-09-2023, 00:08
terra

stosowanie <br> to sztywne ustawienie odległości, więc jeśli sąsiedni moduł wydłuży się , albo skróci to odległość przestanie pasować.


<br> to delikatne "oszukanie" wyświetlania. Przy zmiennej wysokości sąsiadujących modułów rozjeżdża się układ i wygląda to faktycznie mało profesjonalnie.

Próbuję - bez efektu

body.wrapper-fluid footer>.grid-child{
align-items: start;
}

Próbowałem - bez efektu (miałem padding-right i -left; dodałem align-items: stretch)

body.wrapper-fluid footer > .grid-child {
padding-right: 2em;
padding-left: 2em;
align-items: stretch;
}}


Próbuję - wywołuję bottom w klasie modułu, bez efektu

.footer .bottom {
margin-top:auto;
}


.footer .bottom {
/*margin-top: auto;*/
align-items: stretch;
}


Zamierzony efekt widzę tylko podczas inspekcji, align-items: center. Center zamieniam na stretch, baseline, start - wtedy jest ok, ale do tylko podgląd.

.footer .grid-child {
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
align-items: center;
justify-content: space-between;
padding: 2.5rem .5em;
}

Póki co - brak pomysłów. Ale i tak dzięki za wskazówki. Zawsze to jakaś nauka.

JB

terra
30-09-2023, 00:07
Za dużo mieszasz, może widzisz efekt, ale to fikcyjne wrażenie, bo baseline i stretch pełnią zupełnie inne funkcje. Wyczyść zmiany które wprowadziłeś i opcja z klasą dla modułu zadziała.
stretch to rozciąganie na wolną przestrzeń, a baseline ustawianie sekcji w osi. poziomej.

skorzystaj z tego https://www.w3schools.com/cssref/css_pr_margin-block-end.php

james.bien
02-10-2023, 21:40
Wszystkie te moje chaotyczne próby robiłem oddzielnie, żeby sprawdzić, która z nich zadziała. Nie zauważyłem oczekiwanego efektu.

Na czystej instalacji Joomla i Cassiopei (żadnej ingerencji w żaden plik) do pliku user.css dodaję:

.footer .bottomf {
margin-top: auto;
}


Efekt w załączniku, układ się nie zmienia.

terra
03-10-2023, 07:23
Nie wiem, czy to tylko tutaj, ale masz literówki, w module jest bootomf, a w klasie bottomf

james.bien
03-10-2023, 23:34
Mój błąd. W każdym z trzech modułów w klasie poprawiam błędne wpisy bootomf na bottomf (jak w user.css), ale niestety to nie działa.

terra
04-10-2023, 20:32
Już widzę gdzie problem, w nowej wersji szablonu zmienił się wpis dla .footer .grid-child , dlatego muisz dodać w user.css


.footer .grid-child {
align-items: unset;
}

james.bien
04-10-2023, 23:13
Victoria!!!

Słowami klasyka z Killerów 2-óch: "Wykonałeś grande travajo, wielką grande robotę przyjacielu terra (sorki za poufałość, ale inaczej się nie da). Należy ci się za to granda walizka złota."

Dziękuję, dziękuję...

terra
05-10-2023, 09:48
:) uwlcm