本文整理汇总了PHP中JHtmlString::truncateComplex方法的典型用法代码示例。如果您正苦于以下问题:PHP JHtmlString::truncateComplex方法的具体用法?PHP JHtmlString::truncateComplex怎么用?PHP JHtmlString::truncateComplex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JHtmlString
的用法示例。
在下文中一共展示了JHtmlString::truncateComplex方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getText
/**
* Get text from string with or without stripped html tags
* Strips out Joomla plugin tags
* Joomla 3.1+ only
*
*/
static function getText($text, $type = 'html', $max_letter_count = 0, $strip_tags = true, $tags_to_keep = '')
{
$temp = '';
if ($max_letter_count == 0) {
return $temp;
}
if ($max_letter_count > 0) {
if ($type == 'html') {
$temp = self::stripPluginTags($text);
if ($strip_tags) {
if ($tags_to_keep == '') {
$temp = strip_tags($temp);
return JHtmlString::truncate($temp, $max_letter_count, false, false);
// splits words and no html allowed
} else {
$temp = strip_tags($temp, $tags_to_keep);
if (method_exists('JHtmlString', 'truncateComplex')) {
return JHtmlString::truncateComplex($temp, $max_letter_count, true);
// since Joomla v3.1
} else {
//JFactory::getApplication()->enqueueMessage(JText::_('LIB_SYW_WARNING_CANNOTUSETRUNCATE'), 'warning'); // requires Joomla 3.1 minimum
return JHtmlString::truncate($temp, $max_letter_count, false, false);
}
}
} else {
if (method_exists('JHtmlString', 'truncateComplex')) {
return JHtmlString::truncateComplex($temp, $max_letter_count, true);
// since Joomla v3.1
} else {
//JFactory::getApplication()->enqueueMessage(JText::_('LIB_SYW_WARNING_CANNOTUSETRUNCATE'), 'warning'); // requires Joomla 3.1 minimum
JHtmlString::truncate($temp, $max_letter_count, false, false);
}
}
} else {
// 'txt'
return JHtmlString::truncate($text, $max_letter_count, false, false);
// splits words and no html allowed
}
} else {
// take everything
if ($type == 'html') {
$temp = self::stripPluginTags($text);
if ($strip_tags) {
if ($tags_to_keep == '') {
return strip_tags($temp);
} else {
return strip_tags($temp, $tags_to_keep);
}
} else {
return $temp;
}
} else {
// 'txt'
return $text;
}
}
return $temp;
}
示例2: testTruncateComplex
/**
* Tests the JHtmlString::truncateComplex method.
*
* @param string $html The text to truncate.
* @param integer $maxLength The maximum length of the text.
* @param boolean $noSplit Don't split a word if that is where the cutoff occurs (default: true)
* @param string $expected The expected result.
*
* @return void
*
* @dataProvider getTestTruncateComplexData
* @since 12.2
*/
public function testTruncateComplex($html, $maxLength, $noSplit, $expected)
{
$this->assertThat(JHtmlString::truncateComplex($html, $maxLength, $noSplit), $this->equalTo($expected));
}
示例3: truncateComplex
/**
* This method is available first in joomla 3.1
* We have this function here to polyfill for joomla 2.5
*
* Method to extend the truncate method to more complex situations
*
* The goal is to get the proper length plain text string with as much of
* the html intact as possible with all tags properly closed.
*
* @param string $html The content of the introtext to be truncated
* @param integer $maxLength The maximum number of characters to render
* @param boolean $noSplit Don't split a word if that is where the cutoff occurs (default: true).
*
* @return string The truncated string. If the string is truncated an ellipsis
* (...) will be appended.
*
* @note If a maximum length of 3 or less is selected and the text has more than
* that number of characters an ellipsis will be displayed.
* This method will not create valid HTML from malformed HTML.
*
* @since 3.1
*/
public static function truncateComplex($html, $maxLength = 0, $noSplit = true)
{
if (JVERSION > 3.1) {
return JHtmlString::truncateComplex($html, $maxLength, $noSplit);
}
// Start with some basic rules.
$baseLength = strlen($html);
// If the original HTML string is shorter than the $maxLength do nothing and return that.
if ($baseLength <= $maxLength || $maxLength == 0) {
return $html;
}
// Take care of short simple cases.
if ($maxLength <= 3 && substr($html, 0, 1) != '<' && strpos(substr($html, 0, $maxLength - 1), '<') === false && $baseLength > $maxLength) {
return '...';
}
// Deal with maximum length of 1 where the string starts with a tag.
if ($maxLength == 1 && substr($html, 0, 1) == '<') {
$endTagPos = strlen(strstr($html, '>', true));
$tag = substr($html, 1, $endTagPos);
$l = $endTagPos + 1;
if ($noSplit) {
return substr($html, 0, $l) . '</' . $tag . '...';
}
// TODO: $character doesn't seem to be used...
$character = substr(strip_tags($html), 0, 1);
return substr($html, 0, $l) . '</' . $tag . '...';
}
// First get the truncated plain text string. This is the rendered text we want to end up with.
$ptString = JHtml::_('string.truncate', $html, $maxLength, $noSplit, $allowHtml = false);
// It's all HTML, just return it.
if (strlen($ptString) == 0) {
return $html;
}
// If the plain text is shorter than the max length the variable will not end in ...
// In that case we use the whole string.
if (substr($ptString, -3) != '...') {
return $html;
}
// Regular truncate gives us the ellipsis but we want to go back for text and tags.
if ($ptString == '...') {
$stripped = substr(strip_tags($html), 0, $maxLength);
$ptString = JHtml::_('string.truncate', $stripped, $maxLength, $noSplit, $allowHtml = false);
}
// We need to trim the ellipsis that truncate adds.
$ptString = rtrim($ptString, '.');
// Now deal with more complex truncation.
while ($maxLength <= $baseLength) {
// Get the truncated string assuming HTML is allowed.
$htmlString = JHtml::_('string.truncate', $html, $maxLength, $noSplit, $allowHtml = true);
if ($htmlString == '...' && strlen($ptString) + 3 > $maxLength) {
return $htmlString;
}
$htmlString = rtrim($htmlString, '.');
// Now get the plain text from the HTML string and trim it.
$htmlStringToPtString = JHtml::_('string.truncate', $htmlString, $maxLength, $noSplit, $allowHtml = false);
$htmlStringToPtString = rtrim($htmlStringToPtString, '.');
// If the new plain text string matches the original plain text string we are done.
if ($ptString == $htmlStringToPtString) {
return $htmlString . '...';
}
// Get the number of HTML tag characters in the first $maxLength characters
$diffLength = strlen($ptString) - strlen($htmlStringToPtString);
if ($diffLength <= 0) {
return $htmlString . '...';
}
// Set new $maxlength that adjusts for the HTML tags
$maxLength += $diffLength;
}
}
示例4: testTruncateComplex
/**
* Tests the JHtmlString::truncateComplex method.
*
* @param string $html The text to truncate.
* @param integer $maxLength The maximum length of the text.
* @param boolean $noSplit Don't split a word if that is where the cutoff occurs (default: true)
* @param string $expected The expected result.
*
* @return void
*
* @since 3.1
* @dataProvider getTestTruncateComplexData
*/
public function testTruncateComplex($html, $maxLength, $noSplit, $expected)
{
$this->assertEquals($expected, JHtmlString::truncateComplex($html, $maxLength, $noSplit));
}
示例5: getList
/**
* Retrieve a list of article
*
* @param JRegistry &$params module parameters
*
* @return mixed
*/
public static function getList(&$params)
{
// Get the dbo
$db = JFactory::getDbo();
// Get an instance of the generic articles model
$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
// Set application parameters in model
$app = JFactory::getApplication();
$appParams = $app->getParams();
$model->setState('params', $appParams);
// Set the filters based on the module params
$model->setState('list.start', 0);
$model->setState('list.limit', (int) $params->get('count', 5));
$model->setState('filter.published', 1);
// Access filter
$access = !JComponentHelper::getParams('com_content')->get('show_noauth');
$authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
$model->setState('filter.access', $access);
// Category filter
$model->setState('filter.category_id', $params->get('catid', array()));
// User filter
$userId = JFactory::getUser()->get('id');
switch ($params->get('user_id')) {
case 'by_me':
$model->setState('filter.author_id', (int) $userId);
break;
case 'not_me':
$model->setState('filter.author_id', $userId);
$model->setState('filter.author_id.include', false);
break;
case '0':
break;
default:
$model->setState('filter.author_id', (int) $params->get('user_id'));
break;
}
// Filter by language
$model->setState('filter.language', $app->getLanguageFilter());
// Featured switch
switch ($params->get('show_featured')) {
case '1':
$model->setState('filter.featured', 'only');
break;
case '0':
$model->setState('filter.featured', 'hide');
break;
default:
$model->setState('filter.featured', 'show');
break;
}
// Set ordering
$order_map = array('m_dsc' => 'a.modified DESC, a.created', 'mc_dsc' => 'CASE WHEN (a.modified = ' . $db->quote($db->getNullDate()) . ') THEN a.created ELSE a.modified END', 'c_dsc' => 'a.created', 'p_dsc' => 'a.publish_up', 'random' => 'RAND()');
$ordering = JArrayHelper::getValue($order_map, $params->get('ordering'), 'a.publish_up');
$dir = 'DESC';
$model->setState('list.ordering', $ordering);
$model->setState('list.direction', $dir);
$items = $model->getItems();
//var_dump($items);
foreach ($items as &$item) {
$item->introtext = JHtmlString::truncateComplex($item->introtext, $params->get('textlimit'));
$item->slug = $item->id . ':' . $item->alias;
$item->catslug = $item->catid . ':' . $item->category_alias;
if ($access || in_array($item->access, $authorised)) {
// We know that user has the privilege to view the article
$item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug));
} else {
$item->link = JRoute::_('index.php?option=com_users&view=login');
}
}
return $items;
}