То, что я пытаюсь сделать, – добавить некоторые HTML-теги в мой Joomla! названия модулей. Мне нужно что-то вроде этого
Some <b>Title</b>
но при сохранении! Joomla урезает заголовки и удаляет все теги HTML.
Я проверяю администратора / com_content, который, я думаю, должен нести ответственность за вставку данных базы данных, но я не смог найти ответ там.
Может ли кто-нибудь помочь мне с этой головной болью?
Проверьте ../templates/system/html/modules.php
Вы можете создать структуру своего модуля в HTML.
function modChrome_myCustomModule($module, &$params, &$attribs) { $doc =& JFactory::getDocument(); $css = ".otherClass {}"; $css .= ".yourClass {}"; $doc->addStyleDeclaration($css); ?> <div> <?php if ($module->showtitle != 0) : ?> <h1><?php echo $module->title; ?></h1> <?php endif; ?> // post your title </div> <div> <?php echo $module->content; ?> // post your module content </div> <?php }
Затем вызовите свой стилизованный модуль в index.php:
<jdoc:include type="modules" name="right" style="myCustomModule" />
Поэтому я нашел решения. Он включает оба предыдущих ответа, поэтому я помещаю здесь новый код с правильным кодом.
Прежде всего, я должен сказать, что это решение работает только для фиксированного количества слов (последний, два и т. Д.). Мне нужно только иметь последний, поэтому я отправлю пример кода одним словом.
Сначала, как SMacFadyen, мне нужно было создать новую структуру модуля в моей папке html шаблона: /templates/system/html/modules.php.
Примечание. Если вы не хотите добавлять этот новый стиль модуля во все шаблоны, но только на одном из них вам нужно поместить файл module.php в папку html вашего шаблона.
Предоставленный SMacFadyen выглядит следующим образом:
function modChrome_myCustomModule($module, &$params, &$attribs) { $doc =& JFactory::getDocument(); $css = ".otherClass {}"; $css .= ".yourClass {}"; $doc->addStyleDeclaration($css); ?> <div> <?php if ($module->showtitle != 0) : ?> <h1><?php echo $module->title; ?></h1> <?php endif; ?> // post your title </div> <div> <?php echo $module->content; ?> // post your module content </div> <?php }
Затем истек по комментариям Hanny, я добавил некоторый php-код, чтобы соответствовать последнему слову названия и сохранить его в новой varibale. Код выглядит так:
$wrap_tag = 'b'; $html_title = preg_replace("~\W\w+\s*$~", '<'.$wrap_tag.'>'.'\\0'.'</'.$wrap_tag.'>', $module->title);
Примечание: переменная $wrap_tag
хранит тег, который вы хотите. Вы можете положить b, em, u и т. Д., Чтобы иметь другой результат.
Последнее, что нужно было заменить отображаемый заголовок, поэтому я заменил этот код: <h1><?php echo $module->title; ?></h1>
<h1><?php echo $module->title; ?></h1>
с этим: <h1><?php echo $html_title; ?></h1>
<h1><?php echo $html_title; ?></h1>
Конечным результатом было следующее:
function modChrome_myCustomModule($module, &$params, &$attribs) { $doc =& JFactory::getDocument(); $css = ".otherClass {}"; $css .= ".yourClass {}"; $wrap_tag = 'b'; $html_title = preg_replace("~\W\w+\s*$~", '<'.$wrap_tag.'>'.'\\0'.'</'.$wrap_tag.'>', $module->title); $doc->addStyleDeclaration($css); ?> <div> <?php if ($module->showtitle != 0) : ?> <h1><?php echo $html_title; ?></h1> <?php endif; ?> // post your title </div> <div> <?php echo $module->content; ?> // post your module content </div> <?php }
Спасибо всем за помощь.
Рамка Gantry может помочь вам выполнить то, что вы хотите (1-е слово стилизовано в одну сторону, второе слово – другое), но много накладных расходов просто выполняет одну задачу, которую вы ищете. В конечном итоге вам придется создать переопределение шаблона для вашего шаблона, а затем сделать некоторое креативное редактирование с помощью php, чтобы оно отображалось таким образом.
Нет быстрого и простого способа добиться этого. Вам нужно будет сделать некоторое кодирование php на бэкэнд и отредактировать шаблон (используйте переопределение, чтобы вы не взламывали основные файлы). В конечном итоге вам, вероятно, придется закодировать php, чтобы разделить заголовок и применить форматирование для каждого раздвинутого слова (или строки слов в зависимости от случая) с помощью CSS.
Надеюсь, это поможет.