web-dev-qa-db-fra.com

Comment ajouter des liens d'articles au module mod_articles_category?

Je veux prendre le code ci-dessous de com_content/article/default.php (ligne 91-94):

<?php if (isset($urls) && ((!empty($urls->urls_position) && ($urls->urls_position == '0')) || ($params->get('urls_position') == '0' && empty($urls->urls_position)))
    || (empty($urls->urls_position) && (!$params->get('urls_position')))) : ?>
    <?php // echo $this->loadTemplate('links'); ?>
<?php endif; ?>

Et appelez-le dans le module mod_articles_category pour que le lien personnalisé apparaisse sous chaque article.

J'ai trouvé une solution similaire sur ce fil de discussion: Comment ajouter une image d'article au module mod_article_categories?

Mais c'est pour les images. Je ne sais pas comment charger les liens.

2
Trethewey

Créez un remplacement pour le module dans templates/your_template/html/mod_articles_category/default.php

Ajouter à la ligne 20 et 84 après la balise li:

<?php
    $params  = $item->params;
    $urls = json_encode($item->urls);
    if (isset($urls) && ((!empty($urls->urls_position) && ($urls->urls_position == '0')) || ($params->get('urls_position') == '0' && empty($urls->urls_position)))
    || (empty($urls->urls_position) && (!$params->get('urls_position')))) :

        if ($urls && (!empty($urls->urla) || !empty($urls->urlb) || !empty($urls->urlc))) :
        ?>
        <div class="content-links">
            <ul class="nav nav-tabs nav-stacked">
                <?php
                    $urlarray = array(
                    array($urls->urla, $urls->urlatext, $urls->targeta, 'a'),
                    array($urls->urlb, $urls->urlbtext, $urls->targetb, 'b'),
                    array($urls->urlc, $urls->urlctext, $urls->targetc, 'c')
                    );
                    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 ?: $link;

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

                            switch ($target)
                            {
                                case 1:
                                    // Open in a new window
                                    echo '<a href="' . htmlspecialchars($link, ENT_COMPAT, 'UTF-8') . '" target="_blank" rel="nofollow noopener noreferrer">' .
                                        htmlspecialchars($label, ENT_COMPAT, 'UTF-8') . '</a>';
                                    break;

                                case 2:
                                    // Open in a popup window
                                    $attribs = 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=600,height=600';
                                    echo "<a href=\"" . htmlspecialchars($link, ENT_COMPAT, 'UTF-8') . "\" onclick=\"window.open(this.href, 'targetWindow', '" . $attribs . "'); return false;\" rel=\"noopener noreferrer\">" .
                                        htmlspecialchars($label, ENT_COMPAT, 'UTF-8') . '</a>';
                                    break;
                                case 3:
                                    // Open in a modal window
                                    JHtml::_('behavior.modal', 'a.modal');
                                    echo '<a class="modal" href="' . htmlspecialchars($link, ENT_COMPAT, 'UTF-8') . '"  rel="{handler: \'iframe\', size: {x:600, y:600}} noopener noreferrer">' .
                                        htmlspecialchars($label, ENT_COMPAT, 'UTF-8') . ' </a>';
                                    break;

                                default:
                                    // Open in parent window
                                    echo '<a href="' . htmlspecialchars($link, ENT_COMPAT, 'UTF-8') . '" rel="nofollow">' .
                                        htmlspecialchars($label, ENT_COMPAT, 'UTF-8') . ' </a>';
                                    break;
                            }
                        ?>
                        </li>
                <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>
<?php endif; ?>
1
Dennis Heiden

Je n'ai pas actuellement une nouvelle image de la mod_articles_category et de la façon dont elle est codée - et je n'ai pas le temps de l'examiner pour le moment.

Dans tous les cas, pour avoir ces données supplémentaires (liens personnalisés) des articles dans la sortie du module (modèle), ces données doivent devenir disponibles à partir de la partie "modèle" du module - celle qui récupère les données des articles. de la base de données.

Ceci est généralement traité dans les fichiers d'assistance des modules. C’est à cet endroit que vous devez vérifier si les liens personnalisés sont inclus dans l’appel de données et qu’il s’agit de l’endroit où un tel appel doit être effectué.

Si ces données supplémentaires ne sont pas incluses, il n’existe pas de moyen simple de remplacer cette valeur, mais vous pouvez facilement créer un clone de ce module (une version personnalisée du même module) dans lequel vous pouvez créer votre propre aide.

Lire ici pour Comment développer un module Joomla?

0
FFrewin