我也想知道这一点。我尝试并花了很多小时的时间尝试,但是我终于能够继续前进。我发现了一些在此过程中对大多数人来说不会显而易见的事情,所以我在这里发布了一些步骤。您应该能够在测试服务器上立即进行测试。如果有人找到了另一种方法,请告诉我。

首先,我希望我所有的书签都有些井井有条,尽管Firefox有一些标签扩展名,但其中许多似乎太笨重了。回想起来,我本可以首先尝试其中一些。

我选择使用 delicious.com (以前 del.icio.us)为我标记我的书签。这似乎是最简单的方法,并且该网站所知道的1,500个书签中的大多数,因此可以使用标签。您将能够使用Firefox美味扩展名,或直接导入其网站。

他们有一个API,隐藏在其中是这个URL http:// username:password@api.del.icio.us/v1/posts/all

这应该使您获得书签,现在使用标签作为XML文件。

接下来,您将使用此处的脚本 http://memografia.com/wordpress/delicious-to-wordpress-importer/ 将其导入博客。但是您不能将此脚本放入插件目录中并使其正常工作! WordPress 3.0改变了他们的进口商的方式,但是他们留在了一些旧的支持中(尽管在任何地方都没有记录在任何地方。 。 (这与使用register_importer()函数的任何进口商脚本一起使用。

现在,当您进入仪表板并在工具下查看>导入时,您会看到一个美味。您可以将书签标签作为类别或标签导入,它将为每个书签发表帖子。

如果有人尝试这个问题,我会喜欢关于下一步该怎么做的建议。我提出了如何做到这一点,因此我可以处理书签,并评论最有用的书签。我可以做到这一点,但是如果有人知道任何可以摘录摘录以充实一切的插件,请告诉我。有一个可以通过时间轻松整理的书签的档案很简单。

有帮助吗?

解决方案

要在问题上进行主题(Firefox),我认为使用美味作为中间步骤的方法是首选的,因为:

  1. 您将失去在Firefox中应用的高级分类法(它们是您结构的方式)
  2. 您失去了在Firefox中聚集的Favicons
  3. 您丢失了链接之间的分隔线添加的信息
  4. 您丢失有关在Firefox中应用的目录和URL顺序的信息
  5. 它与其他书签不兼容,例如其他浏览器,例如URL目录

因此,我的方法是a)将Firefox导出到“书签”目录结构中,每个书签都保存为URL。 b)此书签目录是实际的心脏,可以从其他浏览器中填充,保留层次结构信息,并且可以放置.URL文件中的添加元信息。

(在此阶段,我在当前代码中放下了分隔线的导出)

从WordPress可以穿越目录结构将其放在WP中。您会注意到的是,当前在WordPress中的链接也丢失了应用目录分类法(例如没有层次结构类别),并且没有好的元表,因此我选择为我的链接存储制作一个侧表以保留此信息(请参阅其他信息(请参阅其他信息)在此之后的步骤回答)。

如果您想首先集中出口Firefox,则可能需要以下内容。再次:通过物理目录进行遍历,然后在数据库表(WPLINKS)中读取此内容:

require_once("class-EdlSqliteDb.php");
require_once("class-EdlUtil.php");

class EdlFirefox {

const BOOKMARKTYPE_URL = 1;
const BOOKMARKTYPE_DIRECTORY = 2;
const BOOKMARKTYPE_DIVIDER = 3;
const FMODE = 0777;
const DIVIDER = '--------------';

var $use_cache = true;
var $dbh;

public function __construct($DbLocation, $ffRoot, $exportLocationBookmarks) 
{
    $this->mDbLocation = $DbLocation;
    $this->mRootTitle = $ffRoot;
    $this->mExportLocation = $exportLocationBookmarks;

    // database settings
    $this->dbh = new EdlSqliteDb($DbLocation);
    $this->dbh->addQ(1,"SELECT id FROM moz_bookmarks WHERE title=?");
    $this->dbh->addQ(2,"SELECT id, title, type, fk FROM moz_bookmarks WHERE parent=? ORDER BY position");
    $this->dbh->addQ(3,"SELECT content FROM moz_items_annos WHERE item_id=?");
    $this->dbh->addQ(4,"SELECT url,favicon_id FROM moz_places WHERE id=?");
    $this->dbh->addQ(5,"SELECT data, mime_type FROM moz_favicons WHERE id=?");

    // parse the content
    $this->ParseTree();     
}

/*
 * check the ff database for the the root folder folders
 *
 */
function ParseTree()
{           
    $row = $this->dbh->DbExecutePrepared(1, Array($this->mRootTitle), 'row');
    if (USE_FIREFOX_FOLDER)
    {
        $this->ParsePagesPerTree($row[0], $this->mExportLocation . '/'. FIREFOX_FOLDER .  '/');
    }
    else 
    {
        $this->ParsePagesPerTree($row[0], $this->mExportLocation . '/');
    }
    return;
}

/*
 * if a bookmark is a url then write it as a file
 *
 */
function processFFUrl($moz_bookmarks_id, $moz_bookmarks_fk, $moz_bookmarks_title, $strRootFolder)
{
    // (1.1) Get from the annotations the description of the url
    $moz_items_annos_row = $this->dbh->DbExecutePrepared(3, Array($moz_bookmarks_id), 'row');
    $moz_items_annos_description = $moz_items_annos_row[0];

    // (1.2) get the url and favicon_id from moz_places
    if ($moz_places_recordset = $this->dbh->DbExecutePrepared(4, Array($moz_bookmarks_fk), 'recordset'))
    {
        foreach ($moz_places_recordset as $moz_places_row) 
        {
            $moz_places_url        = $moz_places_row[0];
            $moz_places_favicon_id = $moz_places_row[1];
        }
    }   

    $this->getFaviconIcon($moz_places_favicon_id, $moz_places_url);

    // (1.3) create the file
    $link_url_string = "[InternetShortcut]\n";
    $link_url_string .= 'URL=' . $moz_places_url . "\n";
    $link_url_string .= 'description=' . $moz_items_annos_description . "\n";   

    if (!is_file($strRootFolder . '/'. $moz_bookmarks_title . '.url')) 
    {
        $filename = $strRootFolder . '/'. $moz_bookmarks_title . '.url';
        $fp = fopen($filename, 'w');
        fwrite($fp, $link_url_string);
        fclose($fp);
    }
}

/*
 * for each logical folder create a physical folder
 *
 */
function parsePagesPerTree($intRootId, $strRootFolder)
{
    if ($moz_bookmarks_recordset = $this->dbh->DbExecutePrepared(2, Array($intRootId), 'recordset'))
    {
        foreach ($moz_bookmarks_recordset as $moz_bookmarks_row)
        {
            $moz_bookmarks_id       = $moz_bookmarks_row[0];
            $moz_bookmarks_title    = EdlUtil::filename_safe($moz_bookmarks_row[1]);
            $moz_bookmarks_type     = $moz_bookmarks_row[2];
            $moz_bookmarks_fk       = $moz_bookmarks_row[3];
            $moz_bookmarks_url = '';
            $moz_bookmarks_favicon_id = '';

            // A bookmark can be one of three things: process (1) urls, (2) directories and (3) dividers
            if ($moz_bookmarks_type==self::BOOKMARKTYPE_URL)
            {
                $this->processFFUrl($moz_bookmarks_id, $moz_bookmarks_fk, $moz_bookmarks_title, $strRootFolder);
            } 
            elseif ($moz_bookmarks_type==self::BOOKMARKTYPE_DIRECTORY)
            {       
                $dir = $strRootFolder . '/'. $moz_bookmarks_title . '/';
                if (!file_exists($dir)) 
                {
                    if (!mkdir($dir, 0777, true)) 
                    {
                        die('Failed to create folders...');
                    }                   
                }
                $this->parsePagesPerTree($moz_bookmarks_id, $strRootFolder . '/'. $moz_bookmarks_title);
            }
            elseif ($moz_bookmarks_type==self::BOOKMARKTYPE_DIVIDER)
            {
                // todo         
            }       
        }
    }   
    return;
}   

//
function getFaviconIcon($moz_bookmarks_favicon_id, $moz_bookmarks_url)
{
    $icon_data = '';
    $moz_bookmarks_favicon = '';
    if ($moz_bookmarks_favicon_id)
    {
        if ($moz_favicons_recordset = $this->dbh->DbExecutePrepared(5, Array($moz_bookmarks_favicon_id), 'recordset'))
        {
            foreach ($moz_favicons_recordset as $moz_favicons_row)
            {
                $icon_data      = $moz_favicons_row[0];
                $icon_mime_type = $moz_favicons_row[1];
                // the following array is also defined in the google icon checker!
                $icon_type = array(  'image/png'    => 'a.png',
                                 'image/gif'    => 'a.gif',
                                 'image/x-icon' => 'a.ico',
                                 'image/jpeg'   => 'a.jpg',
                                 'image/bmp'    => 'a.bmp');                                     

                $moz_bookmarks_favicon = $icon_type[$icon_mime_type];
                // TODO reimplement echo 'warning: you should add:' . $icon_mime_type;              

                //if ('http://apps.facebook.com/frontierville/' == $moz_bookmarks_url)
                //{
                //  echo $moz_bookmarks_favicon_id . " - " . $icon_mime_type . " - " .
                //      $moz_bookmarks_favicon;
                //}
            }   
        }   
    }
    // if $moz_bookmarks_favicon = empty then provide weird name
    if ($moz_bookmarks_favicon) {
        $populair_cache = new EdlCache($moz_bookmarks_url, $moz_bookmarks_favicon);
        $obj = $populair_cache->CheckCacheData($icon_data, FILECACHE_FIREFOX, false);
    }

    // we dont want to return the data it only needs to be update
    return;         
}
 } 

我希望我能为您提供进一步迈出一步的线索。

1)我想要的是一种管理书签并使用已经存在的信息来丰富书签的方法。 2)那里的不同系统,例如Alexa,Deliouch,Stumbleupon等...并非全部提供有关URL级别的信息,例如Alexa提供有关域结构中较高级别的信息,例如ABC.DEF.com:您需要Def.com对于排名或abc.def.com/whate/rtc.php:为此,您EG需要def.com/user(例如youtube)。因此,您同时需要域结构和相对URL结构,并将每个可能的URL(域和相对)的每个节点作为数据库中的条目,以稍后能够表示并丰富此信息,并且您需要每个人之间的关系一部分在URL中可以代表它。

  1. 我写了一个在官方TLD结构中加载的类,并将其用作数据库中的根项目。因此,.uk获取ID 1和.co.uk获得父ID 1.我同时使用了Mozilla列表,而其他:Source是Mozilla公共后缀列表: http://publicsuffix.org/ 但这有点过时,所以您需要添加

  2. 现在,我已经有官方的TLD在那里,我的课程将在Alexa Top 1.000.000网站上加载。这将以相同的方式链接。其中许多是一种非正式的顶级TLD。因为例如“ Google.com”不像某个国家的TLD那么正式,但似乎更重要。通过这样做,您会发现一些模式,但也有一些例外,例如,您会发现Populair的IP地址。这些条目中的每一个都填充了“ Alexa排名”字段。 (对于性能,我首先将.CSV加载在帮助表中)Alexa将迫使您查看模式,以便它很好(一个很好的测试集)

  3. 我写了一个遍历我的Firefox数据库(SQL Lite)的类,并将其中的所有URL导出为层次目录结构中的.URL。无论是.ico,.png,.gif等...这也在数据库中读取。由于我对1和1中描述的数据库进行了大量更新。

  4. 我已经开始从其他浏览器中拖放此目录结构中的书签,例如Chrome,我只是将书签从浏览器拖到目录中,该目录也可以传递该.URL文件。我的目录结构我给出了额外的属性,例如,名称开头将导致“心脏”,例如,我特别喜欢一个url,#01#会将其放在顶部(或至少就是这样,进一步处理它)。我已经将此目录结构放在Dropbox中。我仍然必须在服务器上编写代码以保持恒定同步,以便Dropbox服务器部分。 (我在服务器上的WordPress不断读取以上类似于上述书签的URL目录结构,但我现在使用FTP Sync)

  5. 我为美味(您需要MD5)和Stumbleupon编写了课程,不仅获得排名(美味=书签数量)(SU =评论数量和浏览量的数量),而且标签和描述人们为什么要使用如果人们已经给出了自己的标签,我发明自己的标签)。由于您可以对这些系统进行限制的电话,因此您需要随着时间的推移将其传播以丰富数据库。 (如果您现在去美味并查找链接,请参阅右侧,并了解有关链接标签的分类法)

  6. 我使用Google Favicons提供商(const google_icon_url ='http://www.google.com/s2/favicons?domain =';)向favicons展示,但是由于Google没有所有图标(例如,不适合Facebook应用程序)我用从Firefox导出的图标丰富了缓存。为此,您需要一个优先系统构建,其中选择正确的粉丝而不是另一个。

  7. 为了缓存,我有一个缓存的结构,看起来像是逆转的域。部分Eg .com.facebook.apps.geochallenge和更深层次的相对路径结构。在eeach目录中,在该缓存结构中,我存储了缓存粉丝。在上一个版本中,我还存储了调用美味和Stumblupon的结果。

看来这是WordPress的范围外,但实际上(笑)非常卑鄙。 Build-In-In链接功能没有良好的Meta选项 /没有META表,并且它具有更多的限制,例如没有层次结构类别等...您还需要在其中本身输入信息,而有很多服务已经对URL进行分类, (例如DMOZ)并给它标记等...已成为默认值。

因此,这位于我的WordPress网站下,用于处理我的链接。

我正在使用至少最高1.000.000加上站点的所有信息进行此设置,以减少通话量,然后以插件为单位。我在WP插件DB中有一个Stumbleupon插件,这导致了此功能。它可以为您提供有关您在博客中拥有的外部链接的信息。有很多插件可以为您提供有关SEO General的信息,但没有一个显示您的报告和比较,例如,即将发出的链接中有多少类别或流行或不流行等等。它还为您的传入链接和传出链接等提供排名。

许可以下: CC-BY-SA归因
scroll top