php 问题设置文章新闻快报到一个表

8i9zcol2  于 2023-10-15  发布在  PHP
关注(0)|答案(2)|浏览(114)

嗨,我正试图把文章新闻快报到一个表中的链接列表。我通过注解删除了介绍文本,这样它就只显示文章标题,并修改了tmpl文件。
这是一个名为Links的PHP文件。我从modules/mod_article_news复制了vertical.php,然后将此信息改为。

<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_news
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die; 

echo '<div class="newsflash-vert">';
for ($i = 0, $n = count($list); $i < $n; $i ++) {
    $item = $list[$i]; 
if ($i==0){
echo "<table>";
}

if ($i & 1){
//odd
}else{
//even
echo "<tr>";
}
echo "<td>";
    echo '<div class="newsflash-item">';
     require JModuleHelper::getLayoutPath('mod_articles_news', '_item_links');
    if ($n > 1 && (($i < $n - 1) || $params->get('showLastSeparator'))) {
        echo '<span class="article-separator">&#160;</span>';
    }
    echo '</div>';

echo "</td>";
if ($i & 1){
//odd
}else{

if ($i == $n){
echo "</tr>";
}
}
if ($i == $n){
//end
echo "</table>";
}
}
echo "</div>";

我还复制了_item.php并将其重命名为_item_links,并有以下PHP代码:

<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_news
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;
$item_heading = $params->get('item_heading', 'h4');
?>
<?php if ($params->get('item_title')) : ?>

    <<?php echo $item_heading; ?> class="newsflash-title<?php echo $params->get('moduleclass_sfx'); ?>">
    <?php if ($params->get('link_titles') && $item->link != '') : ?>
        <a href="<?php echo $item->link;?>">
            <?php echo $item->title;?></a>
    <?php else : ?>
        <?php echo $item->title; ?>
    <?php endif; ?>
    </<?php echo $item_heading; ?>>

<?php endif; ?>

<?php if (!$params->get('intro_only')) :
    echo $item->afterDisplayTitle;
endif; ?>

<?php echo $item->beforeDisplayContent; ?>

<?php //echo $item->introtext; ?>

<?php if (isset($item->link) && $item->readmore != 0 && $params->get('readmore')) :
    echo '<a class="readmore" href="'.$item->link.'">'.$item->linkText.'</a>';
endif; ?>

然后我打算用CSS使它看起来更好,但我在error_log中得到一个错误:
[29-Mar-2016 00:19:58 America/New_约克] PHP通知:在线请求:/home/public_html/images/com_content/article/view.html.php
当我把文件放回去的时候,这个错误就消失了,我相信这和我的if语句有关。但我不确定。我还尝试了代码,没有把它全部作为PHP,并使用了大量的<?php ?>,让所有的HTML只是HTML,而不是回显。
不知道是什么原因造成的,有人有什么想法吗?

a64a0gku

a64a0gku1#

检查你的代码,并确保你试图回显的变量实际上有一个值。我敢肯定它会对你大喊大叫,例如,如果你试图调用$item->title,但$item本身没有传入一个值。所以它的意思是你试图获取一个标题,但是对象$item不存在或者是一个对象以外的东西。
在进入$item对象之前,我会这样做:

if ($item) {

    echo $item->title;
echo $item->value2;

}

或者,如果某些对象值有时没有附加值,请在输出之前检查实际值

$itme->value1 ? $item->value1 : "";

希望有帮助

csbfibhn

csbfibhn2#

代码中有几个问题。第一个也是最主要的问题是,我试图使用一个条件if $i == $n来结束表。但是for语句只在$i < $n的情况下循环,因此我必须让结束表的条件是$i == $n-1;
同样,关于我之前的代码,如果没有在几个不同的区域设置,那么放置isset可以使代码不被处理。我将进一步研究这一点,因为我没有得到这个问题之前,但现在它的工作!

相关问题