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>