Joomla вводное изображение, как читать дальше ссылку - PullRequest
6 голосов
/ 08 марта 2012

Я хочу, чтобы заставка joomla статей заставляла себя вести себя как читать дальше, и ссылка на заголовок. Таким образом, пользователь нажимает на изображение, и статья загружается.

Я не эксперт по PHP, но, возможно, это код ссылок для чтения:

<a href="<?php echo $this->item->readmore_link; ?>" class="button<?php echo $this->item->params->get('pageclass_sfx'); ?>">
        <?php if ($this->item->readmore_register) :
            echo JText::_('Register to read more...');
        elseif ($readmore = $this->item->params->get('readmore')) :
            echo $readmore;
        else :
                echo JText::_("Read Article");
        endif; ?></a>

Это то, что я хочу делать с каждым вступительным изображением на моем сайте Joomla. Спасибо!

Ответы [ 7 ]

6 голосов
/ 07 апреля 2012

Только что решил!

Ваш образ мышления помог мне.Спасибо!

вот мой код:

        <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>">

    <?php
        $images = json_decode($item->images);
        if (isset($images->image_intro) and !empty($images->image_intro)) {
            $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro;
            $class = (htmlspecialchars($imgfloat) != 'none') ? ' class="size-auto align-'.htmlspecialchars($imgfloat).'"' : ' class="size-auto"';
            $title = ($images->image_intro_caption) ? ' title="'.htmlspecialchars($images->image_intro_caption).'"' : '';
            echo '<img'.$class.$title.' src="'.htmlspecialchars($images->image_intro).'" alt="'.htmlspecialchars($images->image_intro_alt).'" />';
        }

        echo $this->item->introtext;

    ?>

    </a>
2 голосов
/ 01 августа 2012

для Joomla 2.5:

в переопределении для _item.php (расположение: yourtemplate \ html \ mod_articles_news \ item.php) поместите следующую строку:

<?php if ($params->get('image')) : ?>
    <?php  $images = json_decode($item->images); ?>
    <?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
        <a href="<?php echo $item->link;?>"><img src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo   htmlspecialchars($images->image_intro_alt); ?>"/></a>
    <?php endif; ?>
<?php endif; ?>

Поместите его туда, где вы хотели бы, чтобы он появился Например после:

<?php echo $item->beforeDisplayContent; ?>

Ваше вступительное изображение теперь стало ссылкой. часть isset гарантирует, что, если средство просмотра использует Internet Explorer, оно не отображает маленькое поле красного креста.

Только для информации: в blog_item.php вы можете найти пример кода, как он показан в статье. Здесь вы также можете найти код для imagefloat и т. Д.

<?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
<?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro; ?>
<div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
<img
    <?php if ($images->image_intro_caption):
        echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
    endif; ?>
    src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
</div>
<?php endif; ?>
1 голос
/ 19 октября 2013

В Joomla 3.1 макет intro_image был перемещен в папку layouts / joomla / content.В моей ситуации он вызывается из com_content / views / category / tmpl / blog_item.php примерно так:

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

Я переместил этот файл в свой шаблон / html / com_content / category / blog_item.php, а затемзавернул вызов в JLayoutHelper так:

<?php $link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>
<a href="<?php echo $link; ?>">
<?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
</a>
1 голос
/ 17 марта 2012

В J есть образы вступительных статей, начиная с 1.7.5 и теперь в последней 2.5.3 вам нужно изменить значения по умолчанию для component_content,

Вы можете сделать это 2 способами, редактируя представления в yourinstall / components / com_content / views /

или используйте переопределения шаблонов, сначала вам нужно знать, использует ли ваш шаблон переопределения, иначе, если вы редактируете представления компонентов в самом компоненте, вы не увидите изменений.

, чтобы проверить это, перейдите к имя_сайта / templates / template_name / html folder и проверьте, есть ли имя папки com_content,

если это так, тогда ваш шаблон использует переопределения, и любые изменения должны выполняться там, а не через компонент

теперь к фактическому коду

это в Компоненты \ com_content \ views \ featured \ tmpl \ default_item.php (ЭТОТ Я ПО УМОЛЧАНИЮ ПОСМОТРЕТЬ СТАТЬЮ ПЕРЕДНЕГО ТИПА)

<?php  if (isset($images->image_intro) and !empty($images->image_intro)) : ?>
    <?php $imgfloat = (empty($images->float_intro)) ? $params->get('float_intro') : $images->float_intro; ?>

    <div class="img-intro-<?php echo htmlspecialchars($imgfloat); ?>">
    <img
        <?php if ($images->image_intro_caption):
            echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
        endif; ?>
        src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>
    </div>
<?php endif; ?>

все, что вам нужно сделать, это обернуть элемент вокруг тега IMG со ссылкой readmore, как это

<a href="<?php echo $this->item->readmore_link; ?>">

<img
        <?php if ($images->image_intro_caption):
            echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
        endif; ?>
        src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/>



</a>

НЕ забывайте, что если есть переопределение шаблона для com_content, вам нужно отредактировать в нем файл featured / default_item.php

1 голос
/ 14 марта 2012

Поскольку вы заявили, что вы не являетесь экспертом по PHP, похоже, вам лучше всего использовать расширение Joomla, которое имеет функциональность, аналогичную той, которую вы хотите.

Я считаю, что mod_minifrontpage будет работать для того, что вам нужно. Он позволяет отображать список статей и генерирует миниатюры для этих статей на основе первого изображения, на которое делается ссылка.

1 голос
/ 14 марта 2012

Итак, позвольте мне начать с объяснения того, что делает код, который вы опубликовали выше.Весь блок кода генерирует одну ссылку: существует множество операторов if, которые определяются на основе некоторых настроек.Например, если вы установили, что люди должны зарегистрироваться, чтобы читать больше, ссылка будет содержать «Зарегистрироваться, чтобы читать больше ...»

Часть, которая нам интересна здесь, так какмы хотим превратить изображения в ссылки, это URL, на который мы хотим, чтобы изображения ссылались.Это правильно в первой строке:

<a href="<?php echo $this->item->readmore_link; ?>"

, поэтому мы знаем, что URL-адрес предоставляется динамически благодаря $item->item->readmore_link, и весь этот код выполняет его эхо в HTML.

Осталось только отредактировать шаблон Joomla на странице, на которой у вас есть изображения (вероятно, тот же файл, с которого вы взяли этот код).Похоже, это должно быть частью большего цикла PHP, который проходит по всем постам.Где-то выше, где вы нашли этот код, должен быть код для вступительного изображения, которое идет вместе с этим сообщением.

Я не уверен, как это будет выглядеть, это может быть <img src="<? stuff here; ?> />, или это можетбыть динамически генерируемым.Продолжай читать.Если вы все еще не уверены, где его найти в конце, отредактируйте свое сообщение, указав полный код шаблона, из которого вы получили отрывок выше.Независимо от того, как это выглядит, на следующем шаге это называется <WHATEVER IMAGE CODE YOU FOUND ABOVE>:

Вы должны обернуть это изображение тегами «a», чтобы оно выглядело следующим образом:

<a href="<?php echo $this->item->readmore_link; ?>"> <WHATEVER IMAGE CODE YOU FOUND ABOVE> </a>

Это должно сделать это.Дайте мне знать, если у вас возникнут какие-либо проблемы, я буду более чем рад сделать мой пост более конкретным, если вы сможете предоставить более подробную информацию, но я постарался объяснить это достаточно хорошо, чтобы вы могли с ним разобратьсяпара пытается.

0 голосов
/ 14 ноября 2013

Если у вас установлен Gantry на Joomla 3.1, переопределения находятся в другом месте. Вы захотите перейти к плагинам / system / gantry / overrides / 3.0 / 2.5 / com_content / category / blog_item.php и обернуть вступительное изображение кодом ссылки для дополнительной информации.

    <?php $link = JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid)); ?>
<a href="<?php echo $link; ?>"><img
        <?php if ($images->image_intro_caption):
            echo 'class="caption"'.' title="' .htmlspecialchars($images->image_intro_caption) .'"';
        endif; ?>
        src="<?php echo htmlspecialchars($images->image_intro); ?>" alt="<?php echo htmlspecialchars($images->image_intro_alt); ?>"/></a>
...