PDA

Zobacz pełną wersję : Tagi HTML w wynikach wyszukiwania Joomla



Ambroz
12-09-2018, 20:59
Witam szanowne forum.
Napotkałem problem, gdzie w wynikach wyszukiwania w systemie Joomla pojawiają mi się znaczniki HTML:
<span class="highlight">kawasaki</span> 1*...
Działam na templatce Yoo Master 2 i kierując się tym rozwiązaniem: Usunięcie tagów HTML (https://forum.joomla.org/viewtopic.php?t=956085)
nie mogę odnaleźć miejsca gdzie wpisać kod.
Tak wygląda mój default_results.php



<?php
/**
* @package yoo_master2
* @author YOOtheme http://www.yootheme.com
* @copyright Copyright (C) YOOtheme GmbH
* @license http://www.gnu.org/licenses/gpl.html GNU/GPL
*/

// include config and layout
$base = dirname(dirname(dirname(__FILE__)));
include($base.'/config.php');
include($warp['path']->path('layouts:'.preg_replace('/'.preg_quote($base, '/').'/', '', __FILE__, 1)));



Natomiast tak wygląda default_results-20180912-172442.php



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

defined('_JEXEC') or die;

?>
<dl class="search-results<?php echo $this->pageclass_sfx; ?>">
<?php foreach ($this->results as $result) : ?>
<dt class="result-title">
<?php echo $this->pagination->limitstart + $result->count . '. '; ?>
<?php if ($result->href) : ?>
<a href="<?php echo JRoute::_($result->href); ?>"<?php if ($result->browsernav == 1) : ?> target="_blank"<?php endif; ?>>
<?php // $result->title should not be escaped in this case, as it may ?>
<?php // contain span HTML tags wrapping the searched terms, if present ?>
<?php // in the title. ?>
<?php echo $result->title; ?>
</a>
<?php else : ?>
<?php // see above comment: do not escape $result->title ?>
<?php echo $result->title; ?>
<?php endif; ?>
</dt>
<?php if ($result->section) : ?>
<dd class="result-category">
<span class="small<?php echo $this->pageclass_sfx; ?>">
(<?php echo $this->escape($result->section); ?>)
</span>
</dd>
<?php endif; ?>
<dd class="result-text">
<?php echo $result->text; ?>
</dd>
<?php if ($this->params->get('show_date')) : ?>
<dd class="result-created<?php echo $this->pageclass_sfx; ?>">
<?php echo JText::sprintf('JGLOBAL_CREATED_DATE_ON', $result->created); ?>
</dd>
<?php endif; ?>
<?php endforeach; ?>
</dl>
<div class="pagination">
<?php echo $this->pagination->getPagesLinks(); ?>
</div>




Oba pliki znajdują się w /html/com_search/search/
Jeśli możecie to proszę o pomoc. Joomla jest w wersji 3.8.12

Ambroz
12-09-2018, 22:25
P.S Znalazłem, że to znaczniki (raczej kod) &lt; i &gt; powoduje błąd:

<a href="/test/13-kawasaki-2/8-lorem-ipsum-3.html" title="<span class=&quot;highlight&quot;>kawasaki</span> 2&amp;#160;...">&lt;span class="highlight"&gt;kawasaki&lt;/span&gt; 2&amp;#160;...</a>

Rozwiązanie jakie znalazłem, ale póki co nie działa:


$('#test').each(function(){
var $this = $(this);
var t = $this.text();
$this.html(t.replace('&lt','<').replace('&gt', '>'));
});

Bazyl
12-09-2018, 22:27
Cześć,

zmień nazwę folderu Twoj_szablon\html\com_search i sprawdź

Ambroz
13-09-2018, 07:39
Cześć.
Zmiana nazwy jedynie sprawi, że templatka będzie nieaktywna.

Ambroz
13-09-2018, 08:15
Małe dopowiedzenie.
Dziwne jest to, ze problemy są przy normalnej wyszukiwarce, natomiast przy ZAAWANSOWANEJ już nie ma.

Bazyl
13-09-2018, 08:41
Zmiana nazwy jedynie sprawi, że templatka będzie nieaktywna

No skoro wiesz lepiej...
Pozdrawiam

zwiastun
13-09-2018, 08:47
@Bazyl sugerował jedynie, by zmienić nazwę wskazanego folderu, a więc tego, w którym są nadpisane pliki wyszukiwarki (a nie całego katalogu szablonu). Po co - bo jeśli wówczas będzie OK, to znaczy, że masz niepoprawny plik w katalogu szablonu.
Plik oznaczony jako: default_results-20180912-172442.php jest oryginalnym plikiem Joomla ze zmienioną nazwą. Fragment "-20180912-172442" to prawdopodobnie data wygenerowania pliku plus jakiś znacznik. W takiej formie plik w ogóle nie jest czytany przez Joomla. W zamian masz plik z szablonu Yootheme - ten pierwszy, który nakazuje wczytać ("include") pliki ze ścieżek


include($base.'/config.php');
include($warp['path']->path('layouts:'.preg_replace('/'.preg_quote($base, '/').'/', '', __FILE__, 1)));

Nie znam szablonów Yootheme, nie wiem, co masz rzeczywiście wczytywane.
Na początek możesz zmienić nazwy obu plików które masz -
Temu default_results-20180912-172442.php nadaj nazwę default_results.php,
a temu default_results.php - nazwę default_results-cokolwiek.php

marekal
18-09-2018, 00:56
U mnie to zadziałało
https://github.com/joomla/joomla-cms/commit/35752efbb495a0e266c32925771980470b94985c

Ambroz
18-09-2018, 07:43
Marekal widzę tu sporo grzebania, ale mimo wszystko dzięki.
Póki działa zostanę przy zaawansowanym wyszukiwaniu, tylko ukryje odpowiednie elementy za pomocą display:none.
Pozdrawiam.