Our website is wordpress-powered with small tuning. 

Font is changed to readable Open Sans.

 

For the bibliography management, Papercite WordPress plugin is used . This plugin does its job very well, but some improvements were done:

1. To access pdf library as well as bib and tpl files using `Media File Manager’, the path was redefined:

@papercite.php:
static function getCustomDataDirectory() {
    …
    return $url . "/papercite-data"; 
    return $url . "/uploads/papercite-data"; 
}
static function getDataFile(…){
     …
     if (file_exists(WP_CONTENT_DIR . "/papercite-data/$relfile"))
          return array(WP_CONTENT_DIR . "/papercite-data/$relfile", WP_CONTENT_URL . "/papercite-data/$relfile");
     if (file_exists(WP_CONTENT_DIR . "/uploads/papercite-data/$relfile"))
          return array(WP_CONTENT_DIR . "/uploads/papercite-data/$relfile", WP_CONTENT_URL . "/uploads/papercite-data/$relfile");
}

2. Filtering by keyword (works only for database-based bibliography):

Filtering by keyword is convenient for different projects or different fields of activity, e.g.:

[bibtex file=papers.bib keyword=graphene]

will select only graphene-related papers. Another opportunity is to show ‘selected’ of ‘best’ publications of Professor/PI, if the list is too long.

a) The keyword field added to the database table (existing table should be dropped):

@papercite_db.php
$sql = "CREATE TABLE $papercite_table_name (
    urlid INT UNSIGNED NOT NULL, 
    bibtexid VARCHAR(200) CHARSET ASCII NOT NULL,
    entrytype VARCHAR(80) CHARSET ASCII NOT NULL,
    keywords VARCHAR(500) CHARSET ASCII,
    year SMALLINT,
    data TEXT NOT NULL,
    PRIMARY KEY id (urlid, bibtexid),
    INDEX year (year),
    INDEX entrytype (entrytype)
 ) DEFAULT CHARACTER SET $wpdb->charset";

b) Add keyword search:

@papercite.php
function getEntries($options) {
    …
    // Based on the entry types
    $allow = Papercite::array_get($options, "allow", "");
    $deny = Papercite::array_get($options, "deny", "");
    $keyword = Papercite::array_get($options, "keyword", "");
    $allow = $allow ? preg_split("-,-",$allow) : Array();
    $deny = $deny ? preg_split("-,-", $deny) : Array();
    $author_matcher = new PaperciteAuthorMatcher(Papercite::array_get($options, "author", ""));
    $keyword = $keyword ? preg_split("-,-", $keyword) : Array();
    …
    $denyCond = $deny ? "and entrytype not in (" . implode(",",$deny) . ")" : "";
    $keywordCond = $keyword ? "and `keywords` LIKE '%".implode(" ",$keyword)."%'": "";
    $st = "SELECT data FROM $papercite_table_name WHERE $dbCond $denyCond $allowCond $keywordCond";
}
function getData(…){
    …
    // Save to DB
    …
    foreach($this->cache[$biburi] as &$value) {
        $year = is_numeric($value["year"]) ? intval($value["year"]) : -1;
        $keywords = $value["keywords"] ? $value["keywords"] : "";
        $replacedata = array(
             'urlid' => $oldurlid,
             'bibtexid' => $value["cite"],
             'entrytype' => $value["entrytype"],
             'year'=> $year,
             'data' => maybe_serialize($value),
             'keywords' => $keywords
        );
        $code = $wpdb->replace("$papercite_table_name",$replacedata);

 Such implementation allows to have two words in a keyword (e.g. keyword=molecular,junction returns papers with ‘molecular junction’ in keywords), but multiple keywords are not allowed (yet?).

3. Desired functionality for the future: append uploaded bib-file to the existing file. Now update of the file is required.

Anton V. , 02.01.2017

 

4. SEO optimization:

https://www.google.ch/search?q=mcbj

https://www.google.ch/search?q=graphene+nanogaps

https://www.google.ch/search?q=graphene+for+metrology

https://www.google.ch/search?q=silicon+nanowires+for+sensing