이 글은 주로 Dede에서 SQL과 함께 PHP 태그를 사용하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 좋습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | {dede:php}
{/dede:php}
{dede:php}
$sql = "select ars.*, art.typedir from dede_archives AS ars
LEFT JOIN dede_arctype AS art ON ars.typeid=art.id
where typeid=2 ORDER BY weight ASC ";
$dsql ->SetQuery( $sql );
$dsql ->Execute();
while ( $row = $dsql ->GetArray()){
$link = $refObj ->Fields['indexurl'].'/'. $row ['typedir'].'/'. $row ['id'];
$link = str_replace ('{cmspath}', '', $link );
$class = "ahy" ;
if ( $refObj ->Fields['id'] == $row ['id']) $class = "ahytt" ;
echo '<a href= "'.$link.'.html" class = "'.$class.'" >';
echo $row ['title'];
echo '</a> ';
}
{/dede:php}
|
로그인 후 복사
{dede:sql} 태그 사용
sql 태그는 데이터베이스를 쿼리하여 출력합니다.
1입니다. 예를 들어, 게시된 총 기사 수를 계산해 보겠습니다. 아이디어는 dede_addonarticle 기사의 추가 테이블 내용의 총 수를 출력하는 것입니다.
1 2 3 4 5 | {dede:sql sql= "SELECT COUNT(*) AS nums FROM dede_addonarticle" }
[field:name = "nums" /]
{/dede:sql}
|
로그인 후 복사
2. ~field~를 사용하여 특별한 쿼리를 수행합니다. 예를 들어 이전에는 포럼의 많은 회원이 현재 기사를 게시하고 있는 회원의 관련 콘텐츠를 출력해야 했습니다. 이전에는 각 기사 때문에 sql 또는 arclist 태그를 사용하는 것이 불가능했습니다. 내용이 다릅니다. 여기서는 5.5 SQL 문을 데모로 사용합니다.
먼저 기사 템플릿의 해당 위치에 다음 태그를 추가합니다.
1 2 3 | {dede:sql sql= "SELECT * FROM dede_archives WHERE writer=~writer~" }
[field:id/], DEDE模板
{/dede:sql}
|
로그인 후 복사
이것을 article_article.htm 페이지에 넣으면 현재 회원이 게시한 관련 기사가 검색됩니다. 여기 ~작가~는 환경을 기반으로 합니다. 현재 콘텐츠의 변수 쿼리를 실행하기 전에 대체를 수행합니다.
SQL 문에서 조건부 쿼리에 나타나는 ~writer~는 다음과 같습니다. 즉, $refObj->Fields[$value]의 해당 내용입니다.
템플릿에 PHP를 사용합니다.
많은 사람들이 DreamWeaver의 템플릿 태그는 PHP 실행 기능을 추가하여 더욱 유연해졌습니다. 여기 DedeCMS V5.5에는 PHP를 실행할 수 있는 특수 태그인 {dede:php}{/dede:php}가 추가되어 있습니다.
다음은 몇 가지 일반적인 예입니다.
1. 가장 간단한 출력 내용:
1 2 3 4 5 6 | {dede:php}
$numA = 1;
$numB = 2;
echo $numA + $numB ;
{/dede:php}
|
로그인 후 복사
{dede:php}에서 정보를 출력하려면 print, echo 등을 직접 사용하여 인쇄하고 할당하면 됩니다. @me에 대한 값이 유효하지 않음
이 출력의 내용은 계산 결과입니다:
2. SQL 쿼리와 결합하여 단일 내용을 출력합니다.
1 2 3 4 | {dede:php}
$row = $dsql ->GetOne('select id,typename from dede_arctype where id=2');
print_r( $row );
{/dede:php}
|
로그인 후 복사
이 출력의 내용은
1 2 3 4 5 | Array
(
[id] => 2
[typename] => 问答
)
|
로그인 후 복사
3입니다. . 현재 페이지의 변수 가져오기
예를 들어 여기서는 시스템 배경 [Template]-[Global Mark Test]를 입력하고 코드에 다음 내용을 입력합니다.
1 2 3 4 | {dede:php}
print_r( $refObj ->Fields);
{/dede:php}
|
로그인 후 복사
가져오려면 PHP에서 특정 필드 값을 지정하려면 $refObj->Fields 개체를 사용하여 열을 가져올 수 있습니다. 제목 가져오기 => 환경 변수 test를 살펴보겠습니다. 여기서는 로컬 열을 테스트로 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 | Array
(
[typeid] => 0
[phpurl] => /plus
[indexurl] => /
[templeturl] => /templets
[memberurl] => /member
[specurl] => /special
[indexname] => 主页
[templetdef] => /templets/ default
)
|
로그인 후 복사
이러한 방식으로 현재 페이지의 로컬 변수를 검색합니다. 다음으로 이전 SQL 문을 결합하여 다양한 환경 ID를 구현할 수 있습니다.
예:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Array
(
[id] => 3
[reid] => 0
[topid] => 0
[sortrank] => 1
[typename] => 产品
[typedir] => {cmspath}/product
… …
[indexname] => 主页
[templetdef] => /templets/ default
[position] => 主页 > 产品 >
[title] => 产品
)
|
로그인 후 복사
이는 현재 열의 제목을 호출하는 것입니다. 이 레이블 함수는 {dede:field.typename/}과 유사합니다.
다음으로 쿼리를 실행하여 sql 및 출력 변수를 처리합니다.
1 2 3 4 5 | {dede:php}
$thisid = $refObj ->Fields['id'];
$row = $dsql ->GetOne('select id,typename from dede_arctype where id='. $thisid );
print_r( $row );
{/dede:php}
|
로그인 후 복사
이런 방식으로 쿼리 결과가 기본 템플릿에 나타나는 관련 변수로 대체된 다음 출력 문자열이 생성되고 모든 문자열 정보가 $revalue에 저장됩니다.
마지막으로 이 값을 반환합니다. return $revalue;
전체 파일의 내용은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $dsql ->Execute('me', $sql );
while ( $rs = $dsql ->GetArray('me'))
{
$rs ['title'] = cn_substr( $rs ['title'], $titlelen );
$ctp ->LoadSource( $innertext );
foreach ( $ctp ->CTags as $tagid => $ctag ) {
if (! empty ( $rs [ strtolower ( $ctag ->GetName())])) {
$ctp ->Assign( $tagid , $rs [ $ctag ->GetName()]); DEDE模板
}
}
$revalue .= $ctp ->GetResult();
}
|
로그인 후 복사
다음으로 태그를 테스트해 보겠습니다. article_article.htm 템플릿을 수정하고 여기에 다음 태그 코드를 추가합니다.
관련 권장 사항 :
dedecms5.7 최신 sql 익스플로잇 guestbook.php 주입 취약점
dedecms SESSION 변수 덮어쓰기로 인해 SQL 주입 common.inc.php 솔루션
PHP 명령어 주입 dedecs 원격 쓰기 파일 링크 예시 공유
위 내용은 Dede에서 SQL과 함께 PHP 태그를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!