Комментарии

Применение метода truncate () из класса JHtmlString
( 0 Голосов )

Для устранения этого недостатка можно было бы написать собственный метод, воспользовавшись, например, функцией strrpos () языка РНР, чтобы обнаружить последний пробел в предварительно просматриваемом (или вводном) тексте каждой статьи и отобразить его только до этого пробела. Но в Joomla уже имеется метод, предназначенный именно для этой цели. Он называется truncate () и находится в файле libraries/joomla/html/html/string.php библиотеки Joomla.

Если проанализировать код этого метода, то можно заметить, что в нем применяется метод JString: : substr () вместо стандартной для языка РНР функции substr (), как показано в приведенной ниже строке кода.

$tmp = JString::substr($text, 0, $length);

Почему выбран именно такой подход? Ответ следует искать к международной области применения Joomla. Для поддержки всех основных языков мира приходится правильно обращаться с кодировкой UTF-8. Этот стандартный набор символов позволяет отображать все символы алфавита любого языка мира, в том числе китайского, греческого, корейского, арабского, русского и прочих языков, где применяются нелатинские символы.

Некоторые команды языка РНР для обработки символьных строк не совсем верно обращаются с символами в коде UTF-8. Именно поэтому в Joomla применяются собственные методы обработки символьных строк, правильно интерпретирующие символы в коде UTF-8. Эти методы находятся в классе JString из файла libraries/joomla/ utilities/string.php. В этот класс входят методы, заменяющие стандартные функции языка РНР для обработки символьных строк, в том числе substr (), strlen(), str_split (), strpos () и пр. Все методы из класса JString специально разработаны для правильного обращения с любыми символами в коде UTF-8, и поэтому ими рекомендуется пользоваться во всех случаях, когда приходится иметь дело с нелатинскими символами.

Применение метода JHtmlString:: truncate () дает возможность обратить внимание на еще два важных момента.

  1. На платформе Joomla уже имеется немало полезных методов. Поэтому если вам потребуется метод для решения какой-нибудь задачи, проверьте сначала, присутствует ли он уже на данной платформе, чтобы не писать его сызнова.
  2. Если требуется воспользоваться каким-нибудь классом из платформы Joomla, его следует сделать доступным для компоновки. Ниже будет показано, как это можно сделать разными способами.

В состав библиотеки (или платформы) Joomla входит немало полезных методов, решающих типичные задачи веб-разработки. Так, в папке html находится библиотека с методами, особенно пригодными для этой цели. Перечень удобных методов, пригодных для разметки HTML-документов, приведен в приложении В. Таким образом, решая задачу, требующую программирования, следует сначала выяснить, имеется ли готовое ее решение на платформе Joomla. В связи с этим целесообразно сделать небольшое отступление, чтобы ответить на следующий вопрос: как найти на платформе Joomla подходящие методы для решения конкретных задач веб-разработки?

Для такого поиска имеется несколько источников информации. Так, в приложении В представлен ряд методов, особенно полезных для веб-разработки на платформе Joomla. Кроме того, можно перейти на страницу Code Summary (Сводка кода) веб-сайта разработчиков Joomla по адресу http://developer.joomla.org/code.html и щелкнуть на ссылке API Documentation (Документация на прикладной программный интерфейс), чтобы перейти далее на сайт http://api.joomla.org, где представлены все классы последней версии платформы Joomla. Так, если выбрать сначала пакет Joomla-Platf orm из раскрывающегося списка слева вверху, а затем элемент HTML=>Classes=> JHtmlString из расположенного ниже древовидного списка, на странице появятся сведения о классе JHtmlString. А если прокрутить страницу вниз, то можно обнаружить сведения о методе truncate (). задачи, попробуйте сначала найти его на платформе Joomla, а уж затем приступать к написанию собственного метода, если ничего подходящего обнаружить не удастся.

А теперь покажем, как добавить библиотечный файл в текущую компоновку. Обратите внимание на строку Located in... (Находится в...) под заголовком Description (Описание). В ней указано местонахождение нужного нам библиотечного файла, чтобы включить его в текущую компоновку. В данном случае файл находится по пути joomla/html/html/string.php. Напомним, что все классы платформы Joomla находятся в папке libraries, и поэтому полный путь к искомому файлу следующий: libraries/joomla/html/html/string.php.

Для загрузки класса JHtmlString воспользуемся методом JLoader:: register (). Метод register () принимает два аргумента: имя класса и полный путь к библиотечному файлу. В данном случае в качестве имени класса указывается JHtmlString, а в качестве пути к библиотечному файлу — libraries/joomla/html/html/string.php. Для указания местонахождения папки libraries мы можем также воспользоваться константой JPATH_LIBRARIES, и тогда строка кода для загрузки класса JHtmlString примет следующий вид.

Как пояснялось ранее, в Joomla всегда загружается ряд констант, включая и константу JPATH LIBRARIES, чтобы уведомить систему о местонахождении различных папок. Кроме того, загружается ряд основных классов для данной платформы, в том числе и класс JLoader. А остальные классы приходится загружать по мере надобности в них. К их числу относится и класс JHtmlString. Для его загрузки достаточно добавить метод register() в начале рассматриваемого здесь файла компоновки (как правило, после оператора defined). Теперь мы можем воспользоваться классом JHtmlString в нашей компоновке.

Если попробовать воспользоваться классом JHtmlString без предварительной загрузки с помощью метода register (), то появится сообщение об ошибке в коде РНР, уведомляющее о том, что класс JHtmlString не удалось найти. А теперь, когда у нас имеется непосредственный доступ к методам из класса JHtmlString, можем воспользоваться его методом truncate (), чтобы прервать вводный текст из поля introtext на границе слова. Это действие, по существу, выполняется в следующей строке кода:

introtext), 53) ; ?>

В ней используется синтаксис, взятый из документации на прикладной программный интерфейс (API), где в качестве первого аргумента указывается урезаемый текст, а в качестве второго аргумента — максимальная длина символьной строки. Мы увеличили ее с 50 до 53 символов и удалили многоточие, поскольку метод truncate () автоматически добавляет многоточие, учитывая его в длине строки.

А теперь перезагрузим страницу и посмотрим, как она выглядит после корректив, внесенных нами в ее компоновку. Как видите, предварительно просматриваемый текст теперь прерывается на пробеле, а не на полуслове.


Понравился материал? Пригодилась информация? Плюсани в социалки!


Теги:
 
Похожие новости