尝试在joomla中与用户ID建立链接

时间:2017-11-02 19:02:51

标签: php joomla

我正在尝试在我的joomla组件中添加带有卖家商店链接的按钮,我不知道该怎么做。
我正在添加php文件中的代码,它有我需要但我不知道如何在另一个页面上添加它。如果有人可以指导我一些步骤,那将是非常棒的 这是包含商店链接的页面:

<?php

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

use Joomla\Registry\Registry;

/** @var SellaciousViewProduct $this */
$sellers = $this->item->get('sellers');

if (!isset($sellers[0]) || (count($sellers) == 1 && $sellers[0]->seller_uid == $this->item->get('seller_uid')))
{
    return;
}

$c_currency = $this->helper->currency->current('code_3');
?>
<div class="clearfix"></div>
<a name="also-selling">&nbsp;</a>
<hr class="isolate"/>
<h4 class="center"><?php echo JText::_('COM_SELLACIOUS_PRODUCT_HEADING_BLOCK_SELLERS'); ?></h4>

<table class="product-sellers table table-striped table-hover table-bordered">
    <thead>
    <tr>
        <th>SELLER       </th>
        <th>DELIVERY INFO</th>
        <th>PRICE        </th>
        <th>ACTION       </th>
    </tr>
    </thead>
    <tbody>
    <?php
    foreach ($sellers as $i => $seller)
    {
        /** @var Registry $item */
        $item       = new Registry($seller);
        $s_currency = $this->helper->currency->forSeller($item->get('seller_uid'), 'code_3');

        // todo: Add this to config (show current one or not in more sellers) and move to model
        if ($item->get('seller_uid') == $this->item->get('seller_uid'))
        {
            continue;
        }
        ?>
        <tr>
            <td style="width: 220px;" class="nowrap">
                <div class="seller-info">
                    <a href="<?php echo JRoute::_('index.php?option=com_sellacious&view=store&id=' . $item->get('seller_uid')); ?>">
                        <?php echo $item->get('seller_company', $item->get('seller_name')); ?></a>
                    <?php $rating = $item->get('seller_rating.rating'); ?>
                    <span class="label <?php echo ($rating < 3) ? 'label-warning' : 'label-success' ?>"><?php echo number_format($rating, 1) ?> / 5.0</span>
                </div>

                <?php if ($item->get('exchange_days')): ?>
                    <?php if ($item->get('exchange_tnc')):
                        $options = array(
                            'title'    => '<strong>' . (int) $item->get('exchange_days') . ' Days</strong> Replacement Guarantee',
                            'backdrop' => 'static',
                        );
                        echo JHtml::_('bootstrap.renderModal', 'exchange_tnc-' . $item->get('code'), $options, $item->get('exchange_tnc'));
                    endif; ?>
                    <div class="replacement-info">
                        <i class="fa fa-refresh"></i>
                        <strong> <?php echo (int) $item->get('exchange_days') ?> Days</strong> Replacement
                        <?php if ($item->get('exchange_tnc')): ?>
                            <a href="#exchange_tnc-<?php echo $item->get('code') ?>" role="button" data-toggle="modal">[<i class="fa fa-question"></i>]</a>
                        <?php endif; ?>
                    </div>
                <?php endif; ?>

                <?php if ($item->get('return_days')): ?>
                    <?php if ($item->get('return_tnc')):
                        $options = array(
                            'title'    => '<strong>' . (int) $item->get('return_days') . ' Days</strong> Easy Return',
                            'backdrop' => 'static',
                        );
                        echo JHtml::_('bootstrap.renderModal', 'return_tnc-' . $item->get('code'), $options, $item->get('return_tnc'));
                    endif; ?>
                    <div class="replacement-info">
                        <i class="fa fa-refresh"></i>
                        <strong> <?php echo (int) $item->get('return_days') ?> Days</strong> Easy Return
                        <?php if ($item->get('return_tnc')): ?>
                            <a href="#return_tnc-<?php echo $item->get('code') ?>" role="button" data-toggle="modal">[<i class="fa fa-question"></i>]</a>
                        <?php endif; ?>
                    </div>
                <?php endif; ?>

                <div>
                    <?php $allowed_listing_type = (array) $this->helper->config->get('allowed_listing_type'); ?>
                    <?php if (count($allowed_listing_type) != 1): ?>
                    <span class="label label-info margin-top-10">Condition:
                        <?php
                        $list_type = $item->get('listing_type');

                        // What if this is a not allowed listing type value
                        if ($list_type == 1):
                            echo JText::plural('COM_SELLACIOUS_PRODUCT_FIELD_LISTING_TYPE_VALUE', $list_type);
                        else:
                            $list_cond = $item->get('item_condition');
                            echo JText::plural('COM_SELLACIOUS_PRODUCT_FIELD_ITEM_CONDITION_VALUE', $list_type * 10 + (int) $list_cond);
                        endif;
                        ?>
                    </span>
                    <?php endif; ?>
                </div>
            </td>
            <td>
                <div class="delivery-info">
                    <?php echo JHtml::_('date', '+ ' . rand(1, 30) . ' days', 'D, dS F'); ?>
                    <br>
                    <small><?php
                        $flat_ship = $item->get('flat_shipping');
                        $ship_fee  = $item->get('shipping_flat_fee');

                        if ($flat_ship == 0)
                        {
                            echo JText::_('COM_SELLACIOUS_PRODUCT_SHIPPING_FEE_IN_CART');
                        }
                        elseif (round($ship_fee, 2) > 0)
                        {
                            $fee = $this->helper->currency->display($ship_fee, $s_currency, $c_currency, true);
                            echo JText::sprintf('COM_SELLACIOUS_PRODUCT_SHIPPING_FEE_FLAT', $fee);
                        }
                        else
                        {
                            echo JText::_('COM_SELLACIOUS_PRODUCT_SHIPPING_FEE_FREE');
                        }
                    ?></small>
                </div>
            </td>
            <td style="width:90px;" class="center">
                <span class="product-price-sm"><?php
                    echo $this->helper->currency->display($item->get('price.sales_price'), $s_currency, $c_currency, true) ?></span>
            </td>
            <td style="width:100px;" class="nowrap">
                <?php $link = JRoute::_('index.php?option=com_sellacious&view=product&p=' . $item->get('code')); ?>
                <a href="<?php echo $link ?>"><button class="btn btn-primary btn-cart-sm">DETAILS</button></a><br/>
                <button type="button" class="btn btn-warning btn-cart-sm btn-add-cart" data-item="<?php echo $item->get('code') ?>">ДОБАВИ В КОЛИЧКАТА</button>
                <!--<button type="button" class="btn btn-success btn-cart-sm btn-add-cart"
                            data-item="<?php /*echo $item->get('code') */?>" data-checkout="true">КУПИ СЕГА</button>-->
            </td>
        </tr>
        <?php
    }
    ?>
    </tbody>
</table>

这是我正在尝试导入带有卖家商店链接

的部分的文件
<?php

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

jimport('sellacious.loader');

if (class_exists('SellaciousHelper'))
{
    $helper = SellaciousHelper::getInstance();
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">

    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

        <!-- favicon -->
        <link rel="shortcut icon" href="templates/sellacious/images/favicon/favicon.ico" type="image/x-icon" />
        <link rel="icon" href="templates/sellacious/images/favicon/favicon.ico" type="image/x-icon" />

        <?php
        $user     = JFactory::getUser();
        $doc      = JFactory::getDocument();
        $app      = JFactory::getApplication();
        $sitename = $app->get('sitename');

        JHtml::_('script', 'media/com_sellacious/js/plugin/messagebox/jquery.messagebox.min.js', false, false);
        JHtml::_('stylesheet', 'media/com_sellacious/js/plugin/messagebox/jquery.messagebox.css', null, false);

        $doc->addStyleSheet('//fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,300,400,700');
        $doc->addStyleSheet('templates/sellacious/css/bootstrap.min.css', 'text/css', 'screen');
        $doc->addStyleSheet('templates/sellacious/css/font-awesome.min.css', 'text/css', 'screen');
        $doc->addStyleSheet('templates/sellacious/css/joomla-icons.css', 'text/css', 'screen');

        $doc->addStyleSheet('templates/sellacious/css/smartadmin-production.css', 'text/css', 'screen');
        $doc->addStyleSheet('templates/sellacious/css/smartadmin-skins.css', 'text/css', 'screen');
        $doc->addStyleSheet('templates/sellacious/css/custom-style.css', 'text/css', 'screen');

        if ($this->direction == 'rtl')
        {
            $doc->addStyleSheet('templates/sellacious/css/smartadmin-rtl.css', 'text/css', 'screen');
        }

        JHtml::_('jquery.framework');
        JHtml::_('bootstrap.tooltip');

        $doc->addScript('templates/sellacious/js/libs/jquery-ui-1.10.3.min.js');                     // jQuery UI full, not from joomla core's minimised one
        $doc->addScript('templates/sellacious/js/plugin/fastclick/fastclick.js');                    // FastClick: For mobile devices
        $doc->addScript('templates/sellacious/js/plugin/jquery-touch/jquery.ui.touch-punch.min.js'); // JS TOUCH plugin for mobile drag-drop touch events
        $doc->addScript('templates/sellacious/js/plugin/msie-fix/jquery.mb.browser.min.js');         // browser msie issue fix
        $doc->addScript('templates/sellacious/js/bootstrap/bootstrap.min.js');                       // Bootstrap JS
        $doc->addScript('templates/sellacious/js/notification/SmartNotification.min.js');            // Custom notification
        $doc->addScript('templates/sellacious/js/plugin/cookie/jquery.cookie.min.js');               // cookie
        $doc->addScript('templates/sellacious/js/sellacious-core.js');                               // Sellacious core functions to work template wide
        $doc->addScript('templates/sellacious/js/sellacious-notifier.js');                           // Sellacious notification per view page
        ?>

        <script data-pace-options='{ "restartOnRequestAfter": true }' src="templates/sellacious/js/plugin/pace/pace.min.js"></script>

        <jdoc:include type="head"/>

        <!--[if IE 7]>
        <h1>Your browser is out of date, please update your browser by going to www.microsoft.com/download</h1>
        <![endif]-->
    </head>

    <?php $collapse = $app->input->cookie->get('collapsedmenu'); ?>
    <body class="fixed-page-footer <?php echo $app->input->get('hidemainmenu') || $collapse ? 'minified' : '' ?>"><!--
     The possible classes: smart-style-3, minified, fixed-ribbon, fixed-header, fixed-width -->

        <!-- HEADER -->
        <header id="header" class="btn-group-justified">
            <div id="logo-group">
                <?php
                $logo = 'templates/sellacious/images/logo.png';

                if (isset($helper) && $helper->access->isSubscribed()):
                    $altLogo = $helper->media->getImage('config.backoffice_logo', 1, false);
                    $logo    = $altLogo ?: $logo;
                endif;
                ?>
                <span id="logo"><a class="pull-left" href="<?php echo JRoute::_('index.php') ?>">
                    <img src="<?php echo $logo ?>" alt="<?php echo htmlspecialchars($sitename) ?>"></a></span>

                <?php if ($this->countModules('logo-group')) { ?>
                    <!-- OPTIMAL PLACE FOR NOTIFICATION MODULE -->
                    <jdoc:include type="modules" name="logo-group" style="none"/>
                <?php } ?>
            </div>

            <?php if ($this->countModules('header-left')) { ?>
                <!-- Project Context -->
                <jdoc:include type="modules" name="header-left" style="none"/>
            <?php } ?>

            <!-- pulled right: nav area -->
            <div class="pull-right" style="margin-right: 1px;">
                <!-- logout button -->
                <div id="logout" class="btn-header transparent pull-right cursor-pointer">
                    <?php $logout_url = 'index.php?option=com_login&task=logout&' . JSession::getFormToken() . '=1'; ?>
                    <span> <a href="<?php echo $logout_url ?>" title="Sign Out" data-action="userLogout" class="hasTooltip" data-placement="bottom"
                            data-logout-msg="You can improve your security further after logging out by closing this opened browser"><i
                                class="fa fa-sign-out"></i></a> </span>
                </div>
                <!-- end logout button -->

                <!-- fullscreen button -->
                <div id="fullscreen" class="btn-header transparent pull-right">
                    <span> <a href="javascript:void(0);" data-action="launchFullscreen" class="hasTooltip" data-placement="bottom"
                                title="Full Screen"><i class="fa fa-arrows-alt"></i></a> </span>
                </div>
                <!-- end fullscreen button -->

                <!-- back to Joomla administrator button -->
                 <div id="my-tore" class="btn-header transparent pull-right cursor-pointer">
                    <span> <a href="../<?php echo basename(JPATH_ADMINISTRATOR); ?>/index.php" class="hasTooltip" data-placement="bottom"
                              title="Back to Joomla Administrator"><i class="fa fa-joomla"></i></a> </span>
                </div>
                <!-- end back to Joomla administrator button -->

                <!-- Go to Joomla frontend button -->
                <div id="joomla" class="btn-header transparent pull-right cursor-pointer">
                    <span> <a href="../index.php" target="_blank" class="hasTooltip" data-placement="bottom"
                                title="View Site"><i class="fa fa-external-link"></i></a> </span>
                </div>
                <!-- end Go to Joomla frontend button -->

                <!-- Go to Joomla frontend button -->
                <div id="hide-menu" class="btn-header transparent pull-right cursor-pointer">
                    <span> <a href="#" class="hasTooltip" data-placement="bottom" data-menu="hidemenu"
                                title="Menu"><i class="fa fa-reorder"></i></a> </span>
                </div>
                <!-- end Go to Joomla frontend button -->

                <!-- Sync media button -->
                <div id="sync-media" class="btn-header transparent pull-right cursor-pointer">
                    <span> <a href="javascript:void(0)" class="hasTooltip" data-placement="bottom" data-action="sync-media" style="width: 135px;"
                                title="Refresh Media Uploads"><i class="fa fa-refresh"></i> <span class="text-normal"> <?php
                                echo JText::_('COM_SELLACIOUS_MEDIA_SYNC_BUTTON_LABEL') ?> </span></a> </span>
                </div>
                <!-- end Sync media button -->

                <?php if ($this->countModules('header-right')): ?>
                    <jdoc:include type="modules" name="header-right" style="none"/>
                <?php endif; ?>
            </div>
            <!-- end pulled right: nav area -->

            <?php if (isset($helper) && ($helper->access->check('config.edit') || !$helper->access->isSubscribed())): ?>
                <div id="context-news" class="pull-right padding-5"><!-- dynamic news --></div>
            <?php endif; ?>
        </header>
        <!-- END HEADER -->

        <!-- Left panel : Navigation area -->
        <?php if ($this->countModules('left-panel') || $this->countModules('menu')) { ?>
        <!-- Note: This width of the aside area can be adjusted through LESS variables -->
        <aside id="left-panel">
            <div class="login-info">
                <span> <!-- User image size is adjusted inside CSS, it should stay as it -->
                    <a style="cursor:auto;" id="show-shortcut" data-action="toggleShortcut" href="index.php?option=com_sellacious&view=profile">
                        <!--<img src="templates/sellacious/images/avatars/male.png" alt="me" class="online"/>-->
                        <i class="fa fa-user"></i>
                        <span><?php echo $user->get('name'); ?></span>
                    </a>
                </span>
            </div>

            <!-- User info -->
            <?php if ($this->countModules('left-panel')) { ?>
                <jdoc:include type="modules" name="left-panel" style="none"/>
            <?php } ?>
            <!-- end user info -->

            <!-- NAVIGATION : This navigation is also responsive
            To make this navigation dynamic please make sure to link the node
            (the reference to the nav > ul) after page load. Or the navigation will not initialize.
            -->

            <!-- User info -->
            <?php if ($this->countModules('menu')) { ?>
                <jdoc:include type="modules" name="menu" style="none"/>
            <?php } ?>
            <!-- end user info -->

            <span class="minifyme"> <i class="fa fa-arrow-circle-left hit"></i> </span>

        </aside>
        <!-- END NAVIGATION -->
        <?php } ?>
        <!-- End Left panel : Navigation area -->

        <!-- MAIN PANEL -->
        <div id="main" role="main">

            <!-- RIBBON -->
            <div id="ribbon">

                <!-- breadcrumb -->
                <?php if ($this->countModules('ribbon-left')) { ?>
                    <jdoc:include type="modules" name="ribbon-left" style="none"/>
                <?php } ?>
                <!-- end breadcrumb -->

                <?php if ($this->countModules('ribbon-right')) { ?>
                <span class="ribbon-button-alignment pull-right">
                    <jdoc:include type="modules" name="ribbon-right" style="none"/>
                </span>
                <?php } ?>
                <div class="btn-headactions pull-right">
                    <a href="http://sellacious.com/documentation.html" target="_blank" title="Document" class="primary"><i class="fa fa-book"></i> Documentation</a>
                    <a href="http://sellacious.com/community-support.html" target="_blank" title="Forum"><i class="fa fa-phone"></i> Support</a>
                    <a href="https://extensions.joomla.org/write-review/review/add?extension_id=11448" target="_blank" title="More info"><i class="fa fa-star"></i> Rate us on JED</a>
                </div>

            </div>
            <!-- END RIBBON -->

            <?php if ($this->countModules('toolbar') || $this->countModules('title')) : ?>
                <div class="box-toolbar">
                    <div class="">
                        <!-- col -->
                        <div class="pull-left">
                            <!-- PAGE HEADER -->
                            <jdoc:include type="modules" name="title"/>
                        </div>
                        <!-- end col -->

                        <!-- right side of the page with the sparkline graphs -->
                        <!-- col -->
                        <div class="pull-right">
                            <?php if ($this->countModules('toolbar')) : ?>
                                <span class="pull-right">
                                    <jdoc:include type="modules" name="toolbar" style="none"/>
                                </span>
                            <?php endif; ?>
                        </div>
                        <!-- end col -->
                    </div>
                </div>
            <?php endif; ?>

            <?php if ($this->countModules('top')) : ?>
                <div class="row">
                    <div class="col-sm-12">
                        <jdoc:include type="modules" name="content-top" style="xhtml"/>
                    </div>
                </div>
            <?php endif; ?>

            <?php if ($this->countModules('submenu')) : ?>
                <div class="row">
                    <div class="col-sm-12">
                        <jdoc:include type="modules" name="submenu" style="none"/>
                    </div>
                </div>
            <?php endif; ?>

            <div class="clearfix"></div>

            <!-- MAIN CONTENT -->
            <div id="content">

                <?php if ($this->countModules('content-top')) { ?>
                    <div class="row">
                        <jdoc:include type="modules" name="content-top" style="none"/>
                    </div>
                <?php } ?>

                <div class="clearfix"></div>

                <div class="component content-wrap">

                    <div id="system-message-container"><jdoc:include type="message" style="xhtml"/></div>
                    <div class="clearfix"></div>

                    <jdoc:include type="component" style="xhtml"/>
                    <div class="clearfix"></div>
                </div>

                <?php if ($this->countModules('content-bottom')) { ?>
                    <div class="row">
                        <jdoc:include type="modules" name="content-bottom" style="none"/>
                    </div>
                <?php } ?>

            </div>

            <div class="clearfix"></div>

            <!-- END MAIN CONTENT -->

        </div>
        <!-- END MAIN PANEL -->

    <?php if ($this->countModules('footer')) { ?>
        <jdoc:include type="modules" name="footer" style="none"/>
    <?php } ?>

        <jdoc:include type="modules" name="dynamic" style="xhtml"/>

        <!-- Google Analytics code below -->
        <?php if ($ga_code = $this->params->get('ga_code')) { ?>
            <script type="text/javascript">
                var _gaq = _gaq || [];
                _gaq.push(['_setAccount', '<?php echo htmlspecialchars($ga_code) ?>']);
                _gaq.push(['_trackPageview']);

                (function() {
                    var ga = document.createElement('script');
                    ga.type = 'text/javascript';
                    ga.async = true;
                    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                    var s = document.getElementsByTagName('script')[0];
                    s.parentNode.insertBefore(ga, s);
                })();
            </script>
        <?php } ?>

    </body>

</html>

我知道我需要这个链接,

<a href="<?php echo JRoute::_('index.php?option=com_sellacious&view=store&id=' . $item->get('seller_uid')); ?>">
                        <?php echo $item->get('seller_company', $item->get('seller_name')); ?></a>

但不知道如何在第二个文件中实现它。

1 个答案:

答案 0 :(得分:0)

您需要从文件中的sellacious产品视图访问视图对象(即$sellers = **$this**->item->get('sellers')中的 this )。您的文件是模板文件,模板无权访问组件视图对象 - 在模板呈现时,它已被标记为垃圾回收。如果您只在包含sellacious组件的页面上呈现精美的商店链接,则可以将数据复制并存储在JRegistry中以在模板中使用。您可以在模板的布局覆盖中执行此操作(布局可以访问其组件的视图对象)。如果要在自定义组件或其他组件中使用,则需要编写模型逻辑以从数据库中提取信息。在这种情况下,我会看看这个精美的模型是如何做到这一点并复制你需要的部分。