본문 내용 영역 내 페이지에서 PHP 코드를 사용하는 데 문제가 있습니다. 이 사이트, Drupal 사이트 및 기타 사이트 전반에 걸쳐 끊임없이 수색을 해본 결과, 답변이이 사이트의 어딘가에 있다면 사과드립니다. 그러나 찾을 수 없으며 도움이 필요합니다.본문 내용 영역 내에서 PHP 변수 사용
우리는 PHP 파일에 변수로 저장하려는 많은 정보를 사이트에서 재사용하고 있습니다. 우리 사이트에서이 작업을 수행하지만 Drupal을 사용하기 위해 전체 사이트를 다시 작성합니다. 예를 들어 소프트웨어를 판매하고 사이트의 다양한 '장바구니에 추가'버튼에 대한 각 제품 URL에 대한 변수를 원합니다. 각 링크에 제품 URL을 하드 코딩하지 않고 모든 Drupal 페이지에서 호출 할 수있는 PHP 변수를 설정해야합니다.
아무 것도 작동하지 않습니다. 몇 가지 제안을 읽었지만 아무 것도 작동하지 않았습니다. 변수를 자체 블록으로 설정 한 다음 새 페이지를 만들 때 페이지 내에서 변수를 호출 해 보았습니다. 페이지의 변수를 반향시킬 수는 있지만 내부에있는 블록 내에서만 변수를 호출 할 수는 있지만 다른 블록이나 컨텐츠 영역에서 반향을 일으킬 수는 없습니다. global 키워드를 사용해 보았습니다 (하나의 추천에 따라). 그러나 그것은 저에게 효과적이지 않았습니다.
나는 이것이 의미가 있기를 바랍니다. 다른 정보? Drupal 6.x를 사용하고 있습니다. 페이지를 만들 때 PHP 코드가 활성화되어 있습니다. PHP 필터 모듈이 활성화되어 있습니다. PHP 코드를 렌더링하여 작동하는지 알 수 있으므로, 필요한 곳에서 작동하지 않습니다. 있다.
내가 말해야 할 것은 (이 글을 읽는 것만으로는 분명하지 않다!) 나는 Drupal 초보자 다. 그래서 누군가가 나를 도울 수 있고 그들의 제안을 가능한 한 분명하게 설명하려고한다면 정말 고맙다.
미리 감사드립니다.
편집 3/15/11
것은 내가 몇 가지 예제 코드를 게시 할 수 있습니다, 더 설명하려고합니다. 나는 아직 보여줄 것이별로 없기 때문에 나는 이것을하지 않았다. 그리고 나는 그것이 더 많은 것을 혼란스럽게 할 수도 있다고 생각했다.
그래서 저는 소프트웨어 체험판 다운로드를위한 Drupal '페이지'를 만들었습니다. 설정하려는 PHP 변수는 다운로드 링크를위한 것입니다. 미래에 다운로드 링크를 변경해야하는 경우 한 곳에서 설정해야하므로 한 곳에서 설정할 수 있습니다. 여러 사이트 페이지에 다운로드 링크가 있습니다. 우리의 '지금 구매'링크에 대해서도 마찬가지입니다. 다음은 페이지 코드입니다 :
<p>Try [product] free for 30 days.</p>
<!--<p>[token_custom_ewintry]</p>-->
<p><?php global $ewintry; ?><a href="<?php print $ewintry; ?>">Download for Windows PC</a></p>
<p><?php global $emactry; ?><a href="<?php print $emactry; ?>">Download for Mac OS X</a></p>
<p><?php global $ebbtry; ?><a href="<?php print $ebbtry; ?>">Download for BlackBerry</a></p>
<?php
$ebbtryprint = variable_get("ebbtry", "default");
print $ebbtryprint;
?>
<p><a href="<?php print $ewmtry; ?>">Download for Windows Mobile</a></p>
<p><?php global $ipewlstorelink; ?>iPhone, iPad, iPod touch owners: <a href="<?php print $ipewlstorelink; ?>">Download [product] on the iTunes App Store</a>. You'll be able to create 10 cards for free to try [product] before you buy!</p>
나는이 모든 것을 시험해 보았습니다. 절대로 작동하지 않는 글로벌 변수에 대한 호출이 표시됩니다. 나는 내가 만든 'content top'영역에 배치 된 커스텀 블록에 정의 된 전역 변수를 가지고있다. 나는 분명히 그 지역의 어떤 것도 내 페이지의 몸 내용에 실제로 접근 할 수 없다는 것을 알았다. 왜냐하면 그 전화는 결코 작동하지 않았기 때문이다.
토큰 모듈을 사용하여 어제 만든 사용자 지정 토큰이 있습니다. 그것은 작동하지 않지만 기본적으로 토큰이 본문 내용 영역에서 사용할 수있는 다른 게시물을 읽고 특별한 필터가 필요합니다. 아직 필터를 찾지 못해서이 솔루션이 제대로 작동하는지 확신 할 수 없습니다.
나는 variable_get을 호출했습니다. 자, 이것이 효과가있었습니다. 내 template.php 페이지 내에서 variable_set을 정의했습니다. 내 값은 내 코드 샘플에서 위의 인쇄 호출을 사용하여 인쇄합니다. 그러나 나는 오늘 아침이 페이지를 보았고 그것이 내가 필요한 대답이라고 생각하지 않는다. 이제는 아무 것도 인쇄하기 전에 모든 내 페이지에서 variable_get을 호출해야하기 때문입니다. 그리고 그것은 어디서나 전화를 걸기 위해 한 곳에서 모든 것을 설정해야하는 문제를 해결하지 못합니다. 내 custom 블록에 variable_get 호출을 넣으려고했지만 다시는 내 본문 내용 영역의 'content top'에 아무것도 액세스 할 수 없습니다.variable_get 호출은 'content top'에 값을 인쇄하지만 내용 영역에서는 그 값 아래에 다시 인쇄되지 않습니다.
어쩌면 그 코드가 도움이 될 것입니다. CCK에서 자세히 살펴 보겠습니다. 시도하지 않은 유일한 제안입니다. 누구든지 도울 수 있다면 미리 감사드립니다.
<?php
// For some reason, this sometimes gives me problems
$foo = 'test';
// So I do this instead, they are equivalent
$GLOBALS['bar'] = 'test';
echo "<p>Global <br/> foo: $foo <br/> bar: $bar</p>";
function globalTest() {
global $foo;
echo "<p>globalTest() <br/> foo: $foo <br/> bar: $bar</p>";
}
globalTest();
function globalBarTest() {
global $foo, $bar;
echo "<p>globalBarTest() <br/> foo: $foo <br/> bar: $bar</p>";
}
globalBarTest();
?>
행동 : http://jfcoder.com/test/globals.php
당신이 global variable을 설정 한 다음 함수/메소드 블록 내에서 사용하려는 경우
코드 또는 적어도 일부 샘플을 게시해야합니다. –
어쩌면 앱이 어떻게 결합되어 있는지 다시 생각해야 할 때가 있습니다. 리팩토링이라 불리우며 심하게해야합니다. PHP의 전역 변수는 http://blog.case.edu/gps10/2006/07/22/why_global_variables_in_php_is_bad_programming_practice의 나쁜 관행과 일치합니다. 어떤 경우에는 상수를 사용할 수 있습니다. 아마도 정적 클래스 변수가 더 나은 선택 일 수 있습니까? 진짜로 shure 아닙니다 그러나 당신이 Drupal가 그런 것을 취급하고 표준을 보존하기 위하여 "다만"교류에 "가는지 어떻게에 당신이 자기 자신다는 것을 심하게 필요로하는 것처럼 보인다. –
Poelinca의 답변 외에도 PHP를 몸에 두는 것 (즉, 데이터베이스)은 실제로 나쁜 습관으로 간주됩니다. 드루팔 (Drupal)에서 매우 불행한 "특징"입니다. – berkes