web-dev-qa-db-fra.com

Remplacer le fichier blog_style_default_title.php

Salut, j'apprends le php et cela a dépassé mes capacités. J'essaie de faire en sorte que les liens de page d'élément de blog soient dirigés vers un lien externe si le lien A de l'article est entré. J'ai trouvé du code dans com_content/article/default_link.php. J'ai essayé de simplement insérer le code, avant d'essayer de faire une autre commande, "blog_style_default_title.php", mais cela ne fonctionnait pas. Essentiellement, vous voulez que l'image et les liens changent en enregistrement A, le cas échéant, sinon passez à l'article comme d'habitude.

Code ci-dessous: original et code essayant d'appliquer:

<?php
/**
 * @package     Joomla.Site
 * @subpackage  Layout
 *
 * @copyright   Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Create a shortcut for params.
$params = $displayData->params;
$canEdit = $displayData->params->get('access-edit');
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers/html');
?>
<?php if ($params->get('show_title') || $displayData->state == 0 || ($params->get('show_author') && !empty($displayData->author ))) : ?>
    <div class="page-header">

        <?php if ($params->get('show_title')) : ?>
            <h2 itemprop="name">
                <?php if ($params->get('link_titles') && $params->get('access-view')) : ?>
                    <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>" itemprop="url">
                    <?php echo $this->escape($displayData->title); ?></a>
                <?php else : ?>
                    <?php echo $this->escape($displayData->title); ?>
                <?php endif; ?>
            </h2>
        <?php endif; ?>

        <?php if ($displayData->state == 0) : ?>
            <span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
        <?php endif; ?>
        <?php if (strtotime($displayData->publish_up) > strtotime(JFactory::getDate())) : ?>
            <span class="label label-warning"><?php echo JText::_('JNOTPUBLISHEDYET'); ?></span>
        <?php endif; ?>
        <?php if ((strtotime($displayData->publish_down) < strtotime(JFactory::getDate())) && $displayData->publish_down != JFactory::getDbo()->getNullDate()) : ?>
            <span class="label label-warning"><?php echo JText::_('JEXPIRED'); ?></span>
    <?php endif; ?>
    </div>
<?php endif; ?>




<?php
// ##################### Code from  default_link ########## //

// Create shortcut
$urls = json_decode($this->item->urls);

// Create shortcuts to some parameters.
$params = $this->item->params;
if ($urls && (!empty($urls->urla))) :
?>
<div class="content-links">
        <?php
            $urlarray = array(
            array($urls->urla, $urls->urlatext, $urls->targeta, 'a'),
            );
            foreach ($urlarray as $url) :
                $link = $url[0];
                $label = $url[1];
                $target = $url[2];
                $id = $url[3];

                if ( ! $link) :
                    continue;
                endif;

                // If no label is present, take the link
                $label = ($label) ? $label : $link;

                // If no target is present, use the default
                $target = $target ? $target : $params->get('target' . $id);
                ?>
                <?php
                    // Compute the correct link

                    switch ($target)
                    {
                        case 1:
                            // open in a new window
                            echo '<a href="' . htmlspecialchars($link) . '" target="_blank"  rel="nofollow">' .
                                htmlspecialchars($label) . '</a>';
                            break;

                        default:
                            // open in parent window
                            echo '<a href="' . htmlspecialchars($link) . '" rel="nofollow">' .
                                htmlspecialchars($label) . ' </a>';
                            break;
                    }
                ?>
        <?php endforeach; ?>
</div>
<?php endif; ?>
1
Martin Earl

Finalement, ça a fonctionné.

Ok, donc dans la mise en page, vous ne pouvez pas simplement utiliser $this->item comme vous le feriez dans une vue. L'objet à utiliser est $displayData.

Donc, pour obtenir le paramètre d'URL que vous voulez, ouvrez le fichier suivant:

ROOT/layouts/joomla/content/blog_style_default_title.php

et ajoutez le coulant vers le haut:

$urls = json_decode($displayData->urls);

$urlarray = array(
    array($urls->urla)
);

Vous verrez alors le code suivant utilisé pour le lien de l'article:

<a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>" itemprop="url">

qui doit être remplacé par ceci:

<?php if (!empty($urlarray[0][0])) : ?>
    <a href="<?php echo $urlarray[0][0]; ?>" target="_blank">
<?php else : ?>
    <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>" itemprop="url">
<?php endif; ?>

Ajoutez vous pouvez voir, $urlarray[0][0] est la variable que vous devez maintenant utiliser pour la valeur lien A.

J'espère que cela t'aides

1
Lodder