让theme_item_list生成的列表更易读
theme_item_list 函数是用于生成主题样式UL、OL等列表,然而在生成这些代码时会发现代码是不会换行的,象<ul><li>...</li><li>...</li></ul>
这篇文章 Add newlines to theme_item_list 指导我们轻松的解决这个问题,对于像我这样不会写代码的人来说帮助不小。
修改的宗旨保证核心代码不变动,复制 includes\theme.inc 行915 - 969粘贴在你的主题template.php文件中
/**
* Return a themed list of items.
*
* @param $items
* An array of items to be displayed in the list. If an item is a string,
* then it is used as is. If an item is an array, then the "data" element of
* the array is used as the contents of the list item. If an item is an array
* with a "children" element, those children are displayed in a nested list.
* All other elements are treated as attributes of the list item element.
* @param $title
* The title of the list.
* @param $type
* The type of list to return (e.g. "ul", "ol")
* @param $attributes
* The attributes applied to the list element.
* @return
* A string containing the list output.
*/
function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
$output = '<div class="item-list">';
if (isset($title)) {
$output .= '<h3>'. $title .'</h3>';
}
if (!empty($items)) {
$output .= "<$type" . drupal_attributes($attributes) . '>';
foreach ($items as $item) {
$attributes = array();
$children = array();
if (is_array($item)) {
foreach ($item as $key => $value) {
if ($key == 'data') {
$data = $value;
}
elseif ($key == 'children') {
$children = $value;
}
else {
$attributes[$key] = $value;
}
}
}
else {
$data = $item;
}
if (count($children) > 0) {
$data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
}
$output .= '<li' . drupal_attributes($attributes) . '>'. $data .'</li>';
}
$output .= "</$type>";
}
$output .= '</div>';
return $output;
}
* Return a themed list of items.
*
* @param $items
* An array of items to be displayed in the list. If an item is a string,
* then it is used as is. If an item is an array, then the "data" element of
* the array is used as the contents of the list item. If an item is an array
* with a "children" element, those children are displayed in a nested list.
* All other elements are treated as attributes of the list item element.
* @param $title
* The title of the list.
* @param $type
* The type of list to return (e.g. "ul", "ol")
* @param $attributes
* The attributes applied to the list element.
* @return
* A string containing the list output.
*/
function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
$output = '<div class="item-list">';
if (isset($title)) {
$output .= '<h3>'. $title .'</h3>';
}
if (!empty($items)) {
$output .= "<$type" . drupal_attributes($attributes) . '>';
foreach ($items as $item) {
$attributes = array();
$children = array();
if (is_array($item)) {
foreach ($item as $key => $value) {
if ($key == 'data') {
$data = $value;
}
elseif ($key == 'children') {
$children = $value;
}
else {
$attributes[$key] = $value;
}
}
}
else {
$data = $item;
}
if (count($children) > 0) {
$data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
}
$output .= '<li' . drupal_attributes($attributes) . '>'. $data .'</li>';
}
$output .= "</$type>";
}
$output .= '</div>';
return $output;
}
将function theme_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
改写为:
function phptemplate_item_list($items = array(), $title = NULL, $type = 'ul', $attributes = NULL) {
当然也可是function phptemplate_item_list2之类的,我们在调用时,把原theme_item_list改成你的名字,如:phptemplate_item_list2
另外在这个函数中
if (count($children) > 0) {
$data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
}
$data .= theme_item_list($children, NULL, $type, $attributes); // Render nested list
}
根据需要改写$data .= theme_item_list
提醒:修改代码有风险,请三思再行。本人水平有限,不保证代码的安全性。
评论
发表新评论