• Доброго времени суток. Появилась проблемка.
    Имеется код:

    <?php
    /**
     * Event Results
     *
     * @author 		ThemeBoy
     * @package 	SportsPress/Templates
     * @version     0.8
     */
    
    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
    
    if ( ! isset( $id ) )
    	$id = get_the_ID();
    
    $defaults = array(
    	'show_outcomes' => get_option( 'sportspress_event_show_outcomes', 'yes' ) == 'yes' ? true : false,
    );
    
    extract( $defaults, EXTR_SKIP );
    
    $teams = (array)get_post_meta( $id, 'sp_team', false );
    $results = array_filter( sp_array_combine( $teams, (array)get_post_meta( $id, 'sp_results', true ) ), 'array_filter' );
    $result_labels = sp_get_var_labels( 'sp_result' );
    
    $output = '';
    
    // Initialize and check
    $table_rows = '';
    
    $i = 0;
    
    if ( empty( $results ) )
    	return false;
    
    foreach( $results as $team_id => $result ):
    	if ( count( array_filter( $results ) ) ):
    
    		if ( $show_outcomes ):
    			$outcomes = array();
    			$result_outcome = $result['outcome'];
    			if ( ! is_array( $result_outcome ) ):
    				$result_outcome = (array) $result_outcome;
    			endif;
    			foreach( $result_outcome as $outcome ):
    				$the_outcome = get_page_by_path( $outcome, OBJECT, 'sp_outcome' );
    				if ( is_object( $the_outcome ) ):
    					$outcomes[] = $the_outcome->post_title;
    				endif;
    			endforeach;
    		endif;
    
    		unset( $result['outcome'] );
    
    		$table_rows .= '<tr class="' . ( $i % 2 == 0 ? 'odd' : 'even' ) . '">';
    
    		$table_rows .= '<th class="data-name">' . get_the_title( $team_id ) . '</th>';
    
    		foreach( $result_labels as $key => $label ):
    			if ( $key == 'name' )
    				continue;
    			if ( array_key_exists( $key, $result ) && $result[ $key ] != '' ):
    				$value = $result[ $key ];
    			else:
    				$value = '&mdash;';
    			endif;
    			$table_rows .= '<td class="data-' . $key . '">' . $value . '</td>';
    		endforeach;
    
    		if ( $show_outcomes ):
    			$table_rows .= '<td class="data-outcome">' . implode( ', ', $outcomes ) . '</td>';
    		endif;
    
    		$table_rows .= '</tr>';
    
    		$i++;
    
    	endif;
    endforeach;
    
    if ( empty( $table_rows ) ):
    
    	return false;
    
    else:
    
    	$output .= '<h3>' . SP()->text->string('Team Results') . '</h3>';
    
    	$output .= '<div class="sp-table-wrapper sp-scrollable-table-wrapper">' .
    		'<table class="sp-event-results sp-data-table sp-responsive-table"><thead>' .
    		'<th class="data-name">' . SP()->text->string('Team') . '</th>';
    	foreach( $result_labels as $key => $label ):
    		$output .= '<th class="data-' . $key . '">' . $label . '</th>';
    	endforeach;
    	if ( $show_outcomes ):
    		$output .= '<th class="data-outcome">' . SP()->text->string('Outcome') . '</th>';
    	endif;
    	$output .= '</tr>' . '</thead>' . '<tbody>';
    	$output .=  $table_rows ;
    	$output .= '</tbody>' . '</table>' . '</div>';
    
    endif;
    
    echo $output;
    
    echo $team;

    Сейчас информация выводится в по колонкам. Подскажите, как можно вывести информацию отдельно. Допустим в название команды в одном месте, а второе название в другом.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Результат этого куска кода — это строка таблицы с названием команды (первая колонка) в строке 2 и значением для нее (вторая колонка) в строке 11, в строке 14 выводится третья колонка с data-outcomes.

    1.	$table_rows .= '<tr class="' . ( $i % 2 == 0 ? 'odd' : 'even' ) . '">';
    	2.	$table_rows .= '<th class="data-name">' . get_the_title( $team_id ) . '</th>';
    
    	3.	foreach( $result_labels as $key => $label ):
    	4.		if ( $key == 'name' )
    	5.			continue;
    	6.		if ( array_key_exists( $key, $result ) && $result[ $key ] != '' ):
    	7.			$value = $result[ $key ];
    	8.		else:
    	9.			$value = '—';
    	10.		endif;
    	11.		$table_rows .= '<td class="data-' . $key . '">' . $value . '</td>';
    	12.	endforeach;
    
    	13.	if ( $show_outcomes ):
    	14.		$table_rows .= '<td class="data-outcome">' . implode( ', ', $outcomes ) . '</td>';
    	15.	endif;
    
    	16.	$table_rows .= '</tr>';

    Если Вы хотите выводить не в таблицу, то нужно убрать строку 1 (которая открывает строку таблицы), строку 16 (которая закрывает строку таблицы) и убрать соотв. соотв. тэги для ячеек таблицы в строках, которые я указал выше — заменить их тэгами, которые соотв. Вашей задаче.

    Аналогично нужно поработать с кодом тут

    $output .= '<h3>' . SP()->text->string('Team Results') . '</h3>';
    
    	$output .= '<div class="sp-table-wrapper sp-scrollable-table-wrapper">' .
    		'<table class="sp-event-results sp-data-table sp-responsive-table"><thead>' .
    		'<th class="data-name">' . SP()->text->string('Team') . '</th>';
    	foreach( $result_labels as $key => $label ):
    		$output .= '<th class="data-' . $key . '">' . $label . '</th>';
    	endforeach;
    	if ( $show_outcomes ):
    		$output .= '<th class="data-outcome">' . SP()->text->string('Outcome') . '</th>';
    	endif;
    	$output .= '</tr>' . '</thead>' . '<tbody>';
    	$output .=  $table_rows ;
    	$output .= '</tbody>' . '</table>' . '</div>';
    Автор gold-dollar

    (@gold-dollar)

    Исправил, но все равно, информация выводится встроку и совместно.
    можно ли как нибудь разделить результат? двойным запросом или другим способом?

    Пример Team1 vs. Team2

    Запрос идет по ID, что бы каждый ID выводился отдельно от предыдущего в другом месте кода?

    Ок, значит я не понял вопрос. Тогда можно сохранять требуемые значения в переменные или в массив. Или построить запрос к базе с получением всей информации сразу. Или в худшем случае написать функцию для вызова нужных Вам значений и обращаться к ней в цикле.

    Автор gold-dollar

    (@gold-dollar)

    А если не трудно, можно пример или ссылку на пример, как это адаптировать к данному коду.

    То есть вывести дважды get_the_title( $team_id ), без повторения а с новым результатом нельзя7

    Пример:

    перед endforeach в Вашем коде:

    endforeach;
    if ( empty( $table_rows ) ):

    добавляете строчку
    $prev_team_id= $team_id;

    —-
    Соотв. при следующей итерации цикла (для второй команды и всех последующих), у Вас будет сохраняться в $prev_team_id значение $team_id для предыдущей команды. Соответственно, используя его можете выводить 1 и 2, 2 и 3 и тд.

    ——

    Чтобы разобраться, лучше всего обратитесь к курсу php или сформулировать задачу и привлечь программиста.

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «вывод информации» закрыта для новых ответов.