Я хочу сделать intro-образ статьи joomla, чтобы вести себя как прочитанное больше, и ссылку заголовка. Таким образом, пользователь щелкает изображение, и изделие загружается.
Я не эксперт PHP, но, возможно, это код readmore links:
<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. Благодаря !
Просто решил!
ваш образ мышления помог мне. Спасибо!
вот мой код:
<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 (Location: 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; ?>
Поэтому позвольте мне начать с объяснения того, что делает код, который вы опубликовали выше. Весь блок кода генерирует одну ссылку: существует группа операторов 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,
вы можете сделать это двумя способами, редактируя представления в вашем приложении / components / com_content / views /
или использовать переопределения шаблонов, сначала вам нужно знать, использует ли ваш шаблон IS переопределения, если вы редактируете представления компонентов в самом компоненте, вы не увидите изменений.
чтобы проверить это, перейдите в папку site_name / templates / template_name / html и проверьте, есть ли имя папки 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 внутри него
В 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>
Если у вас установлен Gantry на Joomla 3.1, переопределения находятся в другом месте. Вам нужно будет перейти к плагинам / системе / 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>