+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Hyperlink wird fehlinterpretiert

  1. #1
    Kommt häufiger vorbei Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    279
    Bedankte sich
    56
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard Hyperlink wird fehlinterpretiert

    Hallo Experten,

    ich binde per PHP einen Hyperlink in ein Template-Override ein
    Code:
    echo '<a href="index.php?option=com_jevlocations&view=locations&layout=detail&loc_id=' . $loc_id . '&Itemid=999">' . $loc_title . '</a><br /></em></p>';
    Beim Laden der fertigen Seite wird der Link jedoch so angezeigt: https://sgsn-handball.de/component/j...=23&Itemid=999, der in einer Fehlermeldung mündet.

    Ich Tippe, dass es etwas mit SEF zu tun haben muss, habe aber keine Idee, wie ich das beheben kann.

    Gruß,
    Berndi
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  2. #2
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    6.283
    Bedankte sich
    143
    Erhielt 2.364 Danksagungen
    in 2.223 Beiträgen

    Standard

    JRoute nutzen um die URL zu generieren. https://docs.joomla.org/API17:JRoute
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Suport via PN

  3. #3
    Kommt häufiger vorbei Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    279
    Bedankte sich
    56
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Wahrscheinlich bin ich einfach zu doof, aber
    Code:
        $loc_url = JRoute::_('index.php?option=com_jevlocations&view=locations&layout=detail&loc_id=' . $loc_id . '&Itemid=999', false); 
    
          echo '<a href="' . $loc_url . '">' . $loc_title . '</a><br /></em></p>';
    führt zum gleichen, unbefriedigenden Ergebnis. :-(

    Zwischen locations und layout wird das & zum ?
    Geändert von Berndi (30.08.2017 um 19:09 Uhr)
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  4. #4
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    6.283
    Bedankte sich
    143
    Erhielt 2.364 Danksagungen
    in 2.223 Beiträgen

    Standard

    , false weglassen.
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Suport via PN

  5. #5
    Kommt häufiger vorbei Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    279
    Bedankte sich
    56
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Kein Effekt :-(
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  6. #6
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    6.283
    Bedankte sich
    143
    Erhielt 2.364 Danksagungen
    in 2.223 Beiträgen

    Standard

    Setze mal einen Menüpunkt für die Sache.
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Suport via PN

  7. #7
    Kommt häufiger vorbei Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    279
    Bedankte sich
    56
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Ich verstehe an der Sache etwas nicht...

    wenn ich in die Adresszeile des Browsers den Link
    Code:
    https://sgsn-handball.de/index.php?option=com_jevlocations&view=locations&layout=detail&loc_id=22&Itemid=999999999
    eintrage, obwohl kein Menüeintag existiert, dann wird trotzdem eine Seite mit dem gewünschten Inhalt angezeigt.

    Wenn ich jedoch den o.g. Link per php in mein Template-Override schreibe
    Code:
    $loc_id = 22;
    $loc_url = 'index.php?option=com_jevlocations&view=locations&layout=detail&loc_id=' . $loc_id . '&Itemid=999999999';
    echo '<br/><a href="' . $loc_url2 . '">' . $loc_url2 . '</a><br/>';
    , dann wird der Link von Joomla dahingehend verändert, dass das UND (&) zwischen view=locations und layout=detail zu einem Fragezeichen (?) wird.

    Deshalb funktioniert der Link nicht.

    Warum macht Joomla so etwas?
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

  8. #8
    Gehört zum Inventar Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    5.795
    Bedankte sich
    156
    Erhielt 2.255 Danksagungen
    in 2.022 Beiträgen

    Standard

    Wenn du einen solchen Link einsetzt, wie du im letzten Post beschreibst, musst du die
    &
    als
    &amp;

    schreiben. & ist in HTML ein besonderes Zeichen. Deshalb.
    Code:
    index.php?option=com_jevlocations&amp;view=locations&amp;....
    Joomlafachmann: https://www.ghsvs.de

  9. #9
    Kommt häufiger vorbei Avatar von Berndi
    Registriert seit
    20.02.2013
    Beiträge
    279
    Bedankte sich
    56
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    Leider wandelt auch dann Joomla das & in ein ? um. :-(

    ...aber komischerweise nur an der genannten Stelle.
    Ansonsten bleiben die UND-Zeichen erhalten.

    ...um die Sache zu verdeutlichen ist hier der Link zur Seite https://sgsn-handball.de/index.php?Itemid=586

    ...und hier der Code der Seite:
    Code:
    <?php
    /**
     * @package   T3 Blank
     * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
     * @license   GNU General Public License version 2 or later; see LICENSE.txt
     */
    
    defined('_JEXEC') or die;
    
    $db = JFactory::getDbo();
    
    $q0 = $db->getQuery(tre);
    $q0
      ->SELECT('a.ics_id')
      ->FROM($db->quoteName('MSGSwaNi_jevents_icsfile', 'a'))
      ->WHERE($db->quoteName('a.label') . ' = "BlaBla"')
      ;
    
    $db->setQuery($q0);
    $q0wert = $db->loadRow();
    
    if ($q0wert > 0) {
    
      $q1 = $db->getQuery(true);
      $q1
        ->SELECT(array('b.detail_id', 'a.loc_id', 'c.title'))
        ->FROM($db->quoteName('MSGSwaNi_jevents_vevdetail', 'a'))
        ->JOIN('INNER', $db->quoteName('MSGSwaNi_jevents_vevent', 'b') . ' ON (' . $db->quoteName('b.detail_id') . ' = ' . $db->quoteName('a.evdet_id') . ')')
        ->JOIN('INNER', $db->quoteName('MSGSwaNi_jev_locations', 'c') . ' ON (' . $db->quoteName('c.loc_id') . ' = ' . $db->quoteName('a.loc_id') . ')')
        ->WHERE($db->quoteName('b.icsid') . ' = ' . $q0wert[0])
        ; //
    
      $db->setQuery($q1);
    //  $q2wert = array_sort($db->loadAssocList(), function($value){return $value['dtstart'];}, SORT_ASC); 
      $q1wert = $db->loadAssocList();
    
      if ($q1wert > 0){
        for ($i = 0; $i < count($q1wert); $i++){
          $dids[] = $q1wert[$i][detail_id];
          }
          
        $q2 = $db->getQuery(true);
        $q2
          ->SELECT(array('a.startrepeat', 'a.endrepeat', 'a.eventdetail_id'))
          ->ORDER($db->quoteName('a.startrepeat'))
          ->FROM($db->quoteName('MSGSwaNi_jevents_repetition', 'a'))
          ->JOIN('INNER', $db->quoteName('MSGSwaNi_jevents_vevent', 'b') . ' ON (' . $db->quoteName('b.detail_id') . ' = ' . $db->quoteName('a.eventdetail_id') . ')')
          ->WHERE($db->quoteName('a.eventdetail_id') . ' IN (' .implode(',',$dids) . ')')
        ; //    
    
        $db->setQuery($q2);
        $q2wert = $db->loadAssocList();
        }
      }
    
    $input = JFactory::getApplication()->input;
    if ($input->get('option') == 'com_content' && $input->get('view') == 'article')
    {
     $context = 'com_content.article';
     $artikel = new stdClass;
     $artikel->id = (int) $input->get('id');
     JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
     $artikelFelder = FieldsHelper::getFields($context, $artikel);
     
     // Felder-Werte sammeln.
     $felderWerte = array();
     if (is_array($artikelFelder))
     {
      foreach ($artikelFelder as $artikelFeld)
      {
       $felderWerte[$artikelFeld->name] = $artikelFeld->value;
      }
     }
     
     // Felder-Werte in Registry-Object. Spart ggf. isset-Prüfungen bzw. warnings.
     $felderWerte = new Joomla\Registry\Registry($felderWerte);
     
     // Wenn Feldwert für turnier in Beitrag eingegeben wurde, diesen setzen.
     // Andernfalls Text KEINES setzen.
    $teampic = $felderWerte->get('teampic');
    $teamliste = $felderWerte->get('teamliste');
    $siscode = $felderWerte->get('sis-ligacode');
    $trainer = $felderWerte->get('trainer', 'KEINES'); 
    $cotrainer = $felderWerte->get('co-trainer', 'KEINES'); 
    $betreuer = $felderWerte->get('betreuer'); 
    }
    
    ?>
    
    <div id="t3-mainbody" class="container t3-mainbody">
    	<div class="row">
    
    		<!-- MAIN CONTENT -->
    		<div id="t3-content" class="t3-content col-xs-12">
    			<?php //if($this->hasMessage()) : ?>
    			<jdoc:include type="message" />
    			<?php //endif ?>
    			<jdoc:include type="component" />
          <jdoc:include type="module" name="Trainingszeiten" />
          
    <?php
    
    echo '<h2 style="text-align: center;">Spielklasse: ' . $felderWerte->get('spielklasse') . '</h2>';
    if ($siscode) {
      echo '<p style="text-align: center;">';
      echo '<a href="http://www.sis-handball.de/web/AktuelleSeite/?view=AktuelleSeite&amp;Liga=' . $siscode . '" target="_blank" rel="noopener noreferrer">aktuelle Tabelle und Spielpläne</a>';
      echo '</p><p>&nbsp;</p>';
      }
    
    if (count($q2wert) > 0) {
      echo '<table style="margin-right: auto; margin-left: auto;" border="0">';
      echo '<tbody><tr><td rowspan="1" ><em>Trainingszeiten:</em></td></tr>';
      echo '<tr><td style="text-align: left;">';
    
      $wochentage = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
      for($i=0; $i < count($q2wert); $i++) {
        
        // Doppelausgaben vermeiden
        if ($i > 0) {
          while (strtotime($q2wert[$i]['startrepeat']) == strtotime($q2wert[$i - 1]['startrepeat'])) { 
            $i++;  
            }
          }
    
        //Ort suchen
        $loc_key = array_search($q2wert[$i]['eventdetail_id'], array_column($q1wert, 'detail_id'));
        $loc_id = $q1wert[$loc_key]['loc_id'];
        $loc_title = $q1wert[$loc_key]['title'];
        
        $q3 = $db->getQuery(true);
        $q3
          ->SELECT('a.path')
          ->FROM($db->quoteName('MSGSwaNi_menu', 'a'))
          ->WHERE($db->quoteName('a.link') . ' = "index.php?option=com_jevlocations&amp;view=locations&amp;layout=detail&amp;loc_id=' . $loc_id . '"')
          ; //    
    
        $db->setQuery($q3);
        $loc_url = $db->loadRow(); 
        $loc_url2 = 'index.php?option=com_jevlocations&view=locations&layout=detail&loc_id=' . $loc_id . '&Itemid=0';  
        //$loc_url = JRoute::_('index.php?option=com_jevlocations&view=locations' . '&layout=detail' . '&loc_id=' . $loc_id); 
        //var_dump($loc_url);
    
        if (strtotime($q2wert[$i]['startrepeat']) > time()) {
          $dtstart = date("H:i", strtotime($q2wert[$i]['startrepeat']));
          $dtend = date("H:i", strtotime($q2wert[$i]['endrepeat']));
          if ($dtstart == "00:00" and $dtend == "23:59") { 
            $datum = date("d.m.Y",strtotime($q2wert[$i]['startrepeat']));
            $wochentag = $wochentage[date("w",strtotime($q2wert[$i]['startrepeat']) + 1)];
            } 
          else { 
            $datum = date("d.m.Y",strtotime($q2wert[$i]['startrepeat']));
            $wochentag = $wochentage[date("w",strtotime($q2wert[$i]['startrepeat']))];
            }    
          echo '<p><em>' . $wochentag . ', den ' . $datum . ' von ' . $dtstart . ' Uhr bis ' . $dtend . ' Uhr in der ';
          echo ($loc_url ? '<a href="' . $loc_url[0] . '">' . $loc_title . '</a><br /></em></p>' : $loc_title . '<br /></em></p>');
          echo '<br/><a href="' . $loc_url2 . '">' . $loc_url2 . '</a><br/>';
          }
        }
      echo '</td></tr></tbody></table>';
      echo '<p>&nbsp;</p>';
      }
    
    echo '<!-- CROP TGS -->';
    if ($teampic){
      echo '<p>&nbsp;</p>';
      echo '<p><a type="image" target="_blank" href="' . $teampic . '" rel="noopener noreferrer" class="jcepopup" data-mediabox="1"><img src="' . $teampic . '" width="600" style="display: block; margin-left: auto; margin-right: auto;" /></a></p>';
      echo '<p>&nbsp;</p>';
      }
    
    if ($teamliste) {  
      echo '<table style="width: 639px; margin-left: auto; margin-right: auto;"><tbody><tr>';
      echo '<td style="width: 78px; text-align: left; vertical-align: top;"><strong><em><span style="text-decoration: underline; font-size: 8pt;">Unser Team:</span></em></strong></td>';
      echo '<td style="text-align: left; vertical-align: top;"><em><span style="font-size: 10pt;">' . $teamliste . '</span></em></td>';
      echo '</tr></tbody></table>';
      echo '<p>&nbsp;</p>';
      }  
    
    if ($trainer > 0) {
      echo '<p style="margin-left: 30px;"><em><strong>';
      echo '  <span style="text-decoration: underline;">Trainer:</span>  ';
      echo '  <a href="index.php?option=com_comprofiler&amp;task=userprofile&amp;user=' . $trainer . '">' . JFactory::getUser($trainer)->name . '</a>';
      if ($cotrainer > 0) {
        echo ', <a href="' . JRoute::_('index.php?option=com_comprofiler&amp;task=userprofile&amp;user=' . $cotrainer) . '">' . JFactory::getUser($cotrainer)->name . '</a>';
        }
      echo '</strong></em><br /></a></p>';
      }
    if ($betreuer) {
      echo '<p style="margin-left: 30px;"><em><strong>';
      echo '  <span style="text-decoration: underline;">Betreuer:</span>  ';
      echo $betreuer;
      echo '</strong></em><br /></a></p>';
      }
    echo '<!-- CROP TGS -->';
    ?>  
    		</div>
    		<!-- //MAIN CONTENT -->   
    	</div>
    </div>
    ---> siehe Zeile 156
    Geändert von Berndi (01.09.2017 um 12:01 Uhr)
    -----------------------------------------------------------------------------------
    Merke: Planung ist der Ersatz des Zufalls durch den Irrtum.

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein