it-swarm.com.de

Überschreiben Sie die Datei blog_style_default_title.php

Hallo, ich lerne PHP und das ist mir weit über den Kopf gegangen. Ich versuche, die Seitenlinks des Blogeintrags auf einen externen Link zu verlinken, wenn der A-Link im Artikel eingegeben wird. Ich habe Code in der Datei com_content/article/default_link.php gefunden. Ich habe versucht, den Code einfach einzufügen, bevor ich versuchte, einen weiteren Befehl 'blog_style_default_title.php' auszuführen, aber er funktionierte nicht. Grundsätzlich soll das Bild und die Links zu A-Record wechseln, falls einer eingetragen ist, ansonsten gehe zum Artikel wie gewohnt.

Code unten: Original und Code, der angewendet werden soll:

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

Endlich hat es geklappt.

Ok, also im Layout kannst du nicht einfach $this->item wie du es in einer Ansicht tun würdest. Das zu verwendende Objekt ist $displayData.

Um den gewünschten URL-Parameter zu erhalten, öffnen Sie die folgende Datei:

ROOT/layouts/joomla/content/blog_style_default_title.php

und füge das Fließen nach oben hinzu:

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

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

Sie sehen dann den folgenden Code, der für den Artikellink verwendet wird:

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

welches ersetzt werden muss:

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

Addieren Sie können sehen, $urlarray[0][0] ist die Variable, die Sie jetzt für den Wert Link A verwenden müssen.

Hoffe das hilft

1
Lodder