Prestashop 1.7 добавляет тег специального символа <br>в название категории, но недействителен, как разделить строку в навигации по меню? - PullRequest
0 голосов
/ 12 июля 2020

Многие люди сталкиваются с подобной проблемой при добавлении хэштега в название продукта. Я пытаюсь добавить тег (html разрыв строки) в название категории . Я поставил "Категория name ", например, это не сработает. Проверка символов предназначена для мер безопасности, это имеет смысл.

Итак, я попытался перезаписать файл« Validate. php », как описано на другом topi c, переопределив функцию isCatalogName следующим образом:

<?php
class Validate extends ValidateCore
{

    public static function isCatalogName($name)
    {
        // simple test
        
        return !preg_match('/[]/i', $name);
        
    }
}

теперь я могу поставить хэштег, например # или <br />, как я хотел, но все равно получаю ошибку.

Я пробовал разные способы:

  • перезапись только файла «Validate. php»
  • перезапись Validate. php, но также Category. php и CMSCategory. php, где вызывается функция isCatalogName ($ name) и удаляет проверку в этих файлах.
  • Я очистил кеш в серверной части, а также файлы var / cache, чтобы убедиться, что каждый время, каждый раз выходил из системы / входил в систему администрирования. Обновленный кеш браузера / также измененный браузер! 1,7? * 1 023 *enter image description here enter image description here

    введите описание изображения здесь

1 Ответ

0 голосов
/ 13 июля 2020

Что ж, после того, как я посмотрел вокруг и спросил на форумах Prestashop, мне сказали, что для этого не существует простого и простого решения без взлома. Потому что, очевидно, имя, выбранное для категории, используется для создания URL-адреса. Это означало бы отредактировать многие файлы ядра, просто чтобы добавить специальный символ через поля back-end> Categories, то есть illogi c.

Итак, я просто жестко запрограммировал это в файл modules\ps_mainmenu\*ps_mainmenu.tpl*: он работает для мой случай.

 {* {$node.label} *}


               {if $node.label|strstr:"and"}
                  {assign var="teststring" value=$node.label}
                  {assign var="testsplit" value="and"|explode:$teststring}
                  {$testsplit[0]} <br/> and {$testsplit[1]}
              
                  {elseif $node.label|strstr:","}

                  {if substr_count($node.label, ",") > 1 }

                    {assign var="teststring" value=$node.label}

                    {assign var="label" value=","|explode:$teststring}

                    {$label[0]},<br/>{$label[1]}, {$label|@end}
                    

                  {/if}

Я уверен, что кто-нибудь из PHP / Smarty savy мог бы сделать это в несколько строк и намного лучше (дайте мне знать, пожалуйста!), но у меня это работает. (в некоторых случаях добавляя <br/>)

...