1

このコードを<head> </head>mybb フォーラムに挿入しています。

<?php if(isset($_REQUEST['url'])): // <-- only include jQuery if url set ?>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
  $(function() {
    $( "#dialog-modal" ).dialog({
      height: 140,
      modal: true
    });
  });
</script>
<?php endif; ?>

ページの上部に次の 2 つのエラーが表示される

Parse error: syntax error, unexpected $end in /home/content/87/9583687/html/a/global.php(524) : eval()'d code(2) : eval()'d code on line 1

Parse error: syntax error, unexpected T_ENDIF in /home/content/87/9583687/html/a/global.php(524) : eval()'d code(14) : eval()'d code on line 1

最初の行のコードに問題や構文の問題はありますか? 私はこれを意味します:

<?php if(isset($_REQUEST['url'])): // <-- only include jQuery if url set ?>

ありがとうございました!

アップデート::

ありがとうございました!試してみましたが、間違いがあると思いますか?:/

<?php if(isset($_REQUEST['url'])): 
$str = <<<EOD
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
  $(function() {
    $( "#dialog-modal" ).dialog({
      height: 140,
      modal: true
    });
  });
</script>
EOD;
echo $str;
endif;
?>

"アップデート"

これは、headerincludeという名前の実際のファイルです。

<link rel="alternate" type="application/rss+xml" title="{$lang->latest_threads} (RSS 2.0)" href="{$mybb->settings['bburl']}/syndication.php" />
<link rel="alternate" type="application/atom+xml" title="{$lang->latest_threads} (Atom 1.0)" href="{$mybb->settings['bburl']}/syndication.php?type=atom1.0" />
<meta http-equiv="Content-Type" content="text/html; charset={$charset}" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<script type="text/javascript" src="{$mybb->settings['bburl']}/jscripts/prototype.js?ver=1603"></script>
<script type="text/javascript" src="{$mybb->settings['bburl']}/jscripts/general.js?ver=1603"></script>
<script type="text/javascript" src="{$mybb->settings['bburl']}/jscripts/popup_menu.js?ver=1600"></script>
{$stylesheets}
<script type="text/javascript">
<!--
    var cookieDomain = "{$mybb->settings['cookiedomain']}";
    var cookiePath = "{$mybb->settings['cookiepath']}";
    var cookiePrefix = "{$mybb->settings['cookieprefix']}";
    var deleteevent_confirm = "{$lang->deleteevent_confirm}";
    var removeattach_confirm = "{$lang->removeattach_confirm}";
    var loading_text = '{$lang->ajax_loading}';
    var saving_changes = '{$lang->saving_changes}';
    var use_xmlhttprequest = "{$mybb->settings['use_xmlhttprequest']}";
    var my_post_key = "{$mybb->post_code}";
    var imagepath = "{$theme['imgdir']}";
// -->
</script>
{$newpmmsg}

このファイルに以下の php コードを追加します。

<?php if(isset($_REQUEST['url'])): // <-- only include jQuery if url set ?>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
  <script>
  $(function() {
    $( "#dialog-modal" ).dialog({
      height: 140,
      modal: true
    });
  });
  </script>
  <?php endif; ?>

このヘッダーインクルード ファイルは、次の方法でファイル Global.php にインクルードされます。

// Set up some of the default templates
eval("\$headerinclude = \"".$templates->get("headerinclude")."\";");
eval("\$gobutton = \"".$templates->get("gobutton")."\";");
eval("\$htmldoctype = \"".$templates->get("htmldoctype", 1, 0)."\";");
eval("\$header = \"".$templates->get("header")."\";");
4

2 に答える 2

2

このプラグインが必要になると思います: PHP in Templates / Complex Templates

MyBB は<?php ... ?>テンプレート内での使用を許可していないためです。ただし、そのプラグインを使用する場合は可能ですが、いくつかの制限があります (私が提供するリンクで確認できます)。

このプラグインは、MyBB で今まで見た中で最も強力なプラグインです。たとえば、ゲストに forumdisplay.php の新しいスレッドを表示させたくない場合は、テンプレートを次のように変更するだけです。

<if $mybb->user['uid'] != 0 then>
    <a href="newthread.php?fid={$fid}>New Thread</a>
</if>

MyBBを楽しんでください!

于 2014-01-14T02:45:26.180 に答える
1

どうやら、phpBBはすべてを<?php ?>ブロック内に配置しますeval。あなたの場合、これはそれが投げることを意味します

if(isset($_REQUEST['url'])):

eval。そして、それは未完成のif構成です。これを修正するには、PHPコード全体を1つの <?php ?>ブロック内に配置します。HTMLを実行するには、文字列処理またはヒアドキュメントを使用します。

ヒアドキュメントの例:

<?php 
    if(isset($_REQUEST['url'])):
       $str = <<<EOD
... put your HTML here ...
EOD;
       echo $str;
    endif;
?>
于 2013-01-11T11:27:24.787 に答える