Joomla intro изображение как Подробнее ссылка

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

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

<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 ответов


просто решил!

вот мой код:

        <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>

для Joomla 2.5:

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

<?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; ?>

Итак, позвольте мне начать с объяснения, что код, который вы опубликовали выше. Весь блок кода генерирует одну ссылку: есть куча операторов 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>

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


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

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


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

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

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

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

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

теперь собственно код

это компоненты\com_content\views\featured\tmpl\default_item.php (это я по умолчанию FRONTPAGE вид статьи)

<?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 ссылка "Читать далее", как это

<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 внутри него


в 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>

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

    <?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>