PDA

Zobacz pełną wersję : [Rozwiązane] Intro image poniżej tytułu



majan
17-05-2022, 11:34
Witam,
we wcześniejszej wersji joomla intro image było zawsze wewnątrz artykułu, w joomla 4 widzę, że intro image jest powyżej tytułu. Czy jest jakaś szansa by to zmienić?

/majan

siristru
17-05-2022, 12:35
Tak... ale to może zależeć po prostu od szablonu.
Prostym sposobem jest nadpisanie widoku artykułu szablonem.
Czy robiłeś to kiedyś sam? Jak nie to Cię poinstruuję.

majan
17-05-2022, 14:09
Przyznam się bez bicia, że nie mam doświadczenia w nadpisywaniu widoku artykułu czy nawet samego szablonu. Cały szablon tworzę w TeampleToaster potem go importuje i ewentualnie poprawiam kodowanie w CSS. Gdybyś mógł pomóc, to będę wdzięczny. Możemy ewentualnie zgadać się PRIV

/majan

siristru
17-05-2022, 15:13
To prosta sprawa :)

Sprawdź czy masz plik w lokalizacji:

ROOT/templates/<twoj-szablon>/html/com_content/article/default.php

Jeśli nie masz to skopiuj go tam z lokalizacji:

ROOT/components/com_content/tmpl/article/default.php

Blok odpowiedzialny za wyświetlenie obrazka głównego artykułu:


<?php echo LayoutHelper::render('joomla.content.full_image', $this->item); ?>

A blok tytułu:


<?php if ($params->get('show_title')) : ?>
<div class="page-header">
<<?php echo $htag; ?> itemprop="headline">
<?php echo $this->escape($this->item->title); ?>
</<?php echo $htag; ?>>
<?php if ($this->item->state == ContentComponent::CONDITION_UNPUBLISHED) : ?>
<span class="badge bg-warning text-light"><?php echo Text::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>
<?php if ($isNotPublishedYet) : ?>
<span class="badge bg-warning text-light"><?php echo Text::_('JNOTPUBLISHEDYET'); ?></span>
<?php endif; ?>
<?php if ($isExpired) : ?>
<span class="badge bg-warning text-light"><?php echo Text::_('JEXPIRED'); ?></span>
<?php endif; ?>
</div>
<?php endif; ?>

Odpowiednio przenieś linię z obrazkiem tam gdzie Ci to pasuje. Kod dla Joomla 4.

majan
17-05-2022, 18:20
Mam to zrobić z poziomu zaplecza joomla czy z poziomu ftp?

siristru
17-05-2022, 18:44
Przez klienta FTP. Chyba, że masz już ten plik w tej lokalizacji w szablonie, wtedy można przez admina... ale mi jest zawsze wygodniej przez FTP.

majan
18-05-2022, 11:20
Nie jestem pewien ale wydaje mi się, że kod który podałeś odnosi się do full image, czyli do Ilustracja pełnego tekstu, a mi zależy na ilustracji wprowadzenia.

siristru
18-05-2022, 11:31
Przepraszam, moja wina. Masz rację, oto dla widoku kategorii:

ROOT/components/com_content/tmpl/category/blog_item.php


<?php echo LayoutHelper::render('joomla.content.intro_image', $this->item); ?>

A tytuł:


<?php echo LayoutHelper::render('joomla.content.blog_style_de fault_item_title', $this->item); ?>

Plik skopiuj do:

ROOT/templates/<twoj-szablon>/html/com_content/category/blog_item.php

majan
18-05-2022, 11:41
Nie bardzo rozumiem, czy mam zamienić linijkę ?
<?php echo LayoutHelper::render('joomla.content.intro_image', $this->item); ?>

na

<?php echo LayoutHelper::render('joomla.content.blog_style_de fault_item_title', $this->item); ?>

siristru
18-05-2022, 12:18
Zamienić... miejscami :) Przennieść jedno nad drugie.

majan
18-05-2022, 12:45
perfect działa :) nie wiem czemu tekst nie opływa obrazka ale moze do tego dojdę :) chyba że masz pomysł?

- - - Updated - - -

perfect działa :) nie wiem czemu tekst nie opływa obrazka ale moze do tego dojdę :) chyba że masz pomysł?

siristru
18-05-2022, 13:07
To jest kod dla tego obrazka:


$params = $displayData->params;
$images = json_decode($displayData->images);

if (empty($images->image_intro))
{
return;
}

$imgclass = empty($images->float_intro) ? $params->get('float_intro') : $images->float_intro;
$layoutAttr = [
'src' => $images->image_intro,
'alt' => empty($images->image_intro_alt) && empty($images->image_intro_alt_empty) ? false : $images->image_intro_alt,
];
?>
<figure class="<?php echo $this->escape($imgclass); ?> item-image">
<?php if ($params->get('link_intro_image') && ($params->get('access-view') || $params->get('show_noauth', '0') == '1')) : ?>
<a href="<?php echo Route::_(RouteHelper::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>" itemprop="url" title="<?php echo $this->escape($displayData->title); ?>">
<?php echo LayoutHelper::render('joomla.html.image', array_merge($layoutAttr, ['itemprop' => 'thumbnailUrl'])); ?>
</a>
<?php else : ?>
<?php echo LayoutHelper::render('joomla.html.image', array_merge($layoutAttr, ['itemprop' => 'thumbnail'])); ?>
<?php endif; ?>
<?php if (isset($images->image_intro_caption) && $images->image_intro_caption !== '') : ?>
<figcaption class="caption"><?php echo $this->escape($images->image_intro_caption); ?></figcaption>
<?php endif; ?>
</figure>

I tutaj mamy:


$imgclass = empty($images->float_intro) ? $params->get('float_intro') : $images->float_intro;

Zobacz czy jest ustawiony float dla obrazka w ustawieniach globalnych dla artykułu czy też w samym artykule - sprawdź czy właściwa klasa jest przypisana do obrazka i czy jest obsługiwana w stylach CSS jako float.

Jeżeli nie wiesz jak to zrobić - wyślij mi na PW link do strony, pomogę.

majan
18-05-2022, 16:58
W ustawieniach globalnych dla artykułu w pozycji Klasa obrazu wprowadzenia jest ustawione left, ale nie działa chyba...
ustawiłem swoje klasy

figure.small_img.item-image > img
{
height:250px;
float:left;
margin-right: 25px;
}

figure.big_img.item-image
{
text-align:center;
}

Nie wiem czy jest to zrobione zgodnie z sztuką, ale działa. Jeśli powinno być to inaczej to jestem otwarty na sugestie

siristru
19-05-2022, 10:07
No i git :)